server_table/src/ServerTable.tsx

121 lines
3.2 KiB
TypeScript
Raw Normal View History

2018-06-23 07:57:40 +00:00
import * as React from 'react';
import { Tips, Logo } from "./Utils";
import * as Papa from 'papaparse';
const readCsv = require('react-csv');
const CSVLink = readCsv.CSVLink;
2018-06-23 07:57:40 +00:00
// Import React Table
import ReactTable from 'react-table';
import "react-table/react-table.css";
export class ServerTable extends React.Component<any, any> {
constructor(props: any) {
super(props);
this.state = {
data: []
// data:makeData()
2018-06-23 07:57:40 +00:00
};
this.loaded = this.loaded.bind(this);
Papa.parse('/data.csv', {
header: true,
download: true,
skipEmptyLines: true,
complete: this.loaded
});
2018-06-23 07:57:40 +00:00
}
2018-06-23 07:57:40 +00:00
public render() {
const { data } = this.state;
const filterExact = (filter: any, row: any) =>
String(row[filter.id]) === filter.value;
const filterPart = (filter: any, row: any) =>
row[filter.id].startsWith(filter.value) ||
row[filter.id].endsWith(filter.value)
return (
<div>
<ReactTable
data={data}
filterable={true}
defaultFilterMethod={filterExact}
columns={[
{
Header: "Name",
columns: [
{
Header: "First Name",
accessor: "firstName",
filterMethod: filterPart
2018-06-23 07:57:40 +00:00
},
{
Header: "Last Name",
id: "lastName",
accessor: (d: any) => d.lastName
}
]
},
{
Header: "Info",
columns: [{
Header: 'Profile Progress',
accessor: 'progress',
Cell: (row: any) => (
<div
style={{
width: '100%',
height: '100%',
backgroundColor: '#dadada',
borderRadius: '2px'
}}
>
<div
style={{
width: `${row.value}%`,
height: '100%',
backgroundColor: row.value > 66 ? '#85cc00'
: row.value > 33 ? '#ffbf00'
: '#ff2e00',
borderRadius: '2px',
transition: 'all .2s ease-out'
}}
/>
</div>
)
},
{
Header: "Age",
accessor: "age"
},
{
Header: "Status",
accessor: "status"
}
]
},
{
Header: 'Stats',
columns: [
{
Header: "Visits",
accessor: "visits"
}
]
}
]}
defaultPageSize={20}
className="-striped -highlight"
/>
<br />
<CSVLink data={data} filename={"data.csv"}>Click here to download CSV file</CSVLink>
2018-06-23 07:57:40 +00:00
<Tips />
<Logo />
</div>
);
}
public loaded(results: any) {
this.setState({
data: results.data
});
}
2018-06-23 07:57:40 +00:00
}