2018-06-23 07:57:40 +00:00
|
|
|
import * as React from 'react';
|
2018-06-23 07:57:51 +00:00
|
|
|
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 = {
|
2018-06-23 07:57:51 +00:00
|
|
|
data: []
|
|
|
|
|
// data:makeData()
|
2018-06-23 07:57:40 +00:00
|
|
|
};
|
2018-06-23 07:57:51 +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:51 +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",
|
2018-06-23 07:57:51 +00:00
|
|
|
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 />
|
2018-06-23 07:57:51 +00:00
|
|
|
<CSVLink data={data} filename={"data.csv"}>Click here to download CSV file</CSVLink>
|
2018-06-23 07:57:40 +00:00
|
|
|
<Tips />
|
|
|
|
|
<Logo />
|
|
|
|
|
</div>
|
|
|
|
|
);
|
|
|
|
|
}
|
2018-06-23 07:57:51 +00:00
|
|
|
|
|
|
|
|
public loaded(results: any) {
|
|
|
|
|
this.setState({
|
|
|
|
|
data: results.data
|
|
|
|
|
});
|
|
|
|
|
}
|
2018-06-23 07:57:40 +00:00
|
|
|
}
|