TableRiwayat.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. import React, { Component } from "react";
  2. import ContentWrapper from "@/components/Layout/ContentWrapper";
  3. import { Container, Progress } from "reactstrap";
  4. let ReactDataGrid = null;
  5. class TableRiwayat extends Component {
  6. state = {
  7. dataGridReady: false,
  8. };
  9. constructor(props, context) {
  10. super(props, context);
  11. this._columns = [
  12. {
  13. key: "timelapse",
  14. name: "Timelapse",
  15. sortable: true,
  16. },
  17. {
  18. key: "username",
  19. name: "Username",
  20. sortable: true,
  21. },
  22. {
  23. key: "menu",
  24. name: "Menu",
  25. sortable: true,
  26. },
  27. {
  28. key: "deskripsi",
  29. name: "Deskripsi",
  30. sortable: true,
  31. },
  32. ];
  33. let originalRows = this.createRows(1000);
  34. let rows = originalRows.slice(0);
  35. this.state = { originalRows, rows };
  36. }
  37. componentDidMount() {
  38. ReactDataGrid = require("react-data-grid");
  39. this.setState({
  40. dataGridReady: true,
  41. });
  42. }
  43. getRandomDate = (start, end) => {
  44. return new Date(
  45. start.getTime() + Math.random() * (end.getTime() - start.getTime())
  46. ).toLocaleDateString();
  47. };
  48. createRows = () => {
  49. let rows = [];
  50. for (let i = 1; i < 11; i++) {
  51. rows.push({
  52. deskripsi: "deskripsi di sini",
  53. complete: Math.min(100, Math.round(Math.random() * 110)),
  54. menu: ["Pelaporan", "Login", "Penjadwalan", "Sanksi"][
  55. Math.floor(Math.random() * 3 + 1)
  56. ],
  57. username: ["sugiyanto", "sugiyanti", "andi", "yazid"][
  58. Math.floor(Math.random() * 3 + 1)
  59. ],
  60. timelapse: this.getRandomDate(new Date(2018, 3, 1), new Date()),
  61. completeDate: this.getRandomDate(new Date(), new Date(2021, 0, 1)),
  62. });
  63. }
  64. return rows;
  65. };
  66. rowGetter = (i) => this.state.rows[i];
  67. handleGridSort = (sortColumn, sortDirection) => {
  68. const comparer = (a, b) => {
  69. if (sortDirection === "ASC") {
  70. return a[sortColumn] > b[sortColumn] ? 1 : -1;
  71. } else if (sortDirection === "DESC") {
  72. return a[sortColumn] < b[sortColumn] ? 1 : -1;
  73. }
  74. };
  75. const rows =
  76. sortDirection === "NONE"
  77. ? this.state.originalRows.slice(0)
  78. : this.state.rows.sort(comparer);
  79. this.setState({ rows });
  80. };
  81. render() {
  82. return (
  83. <ContentWrapper>
  84. <Container fluid>
  85. {this.state.dataGridReady && (
  86. <ReactDataGrid
  87. onGridSort={this.handleGridSort}
  88. columns={this._columns}
  89. rowGetter={this.rowGetter}
  90. rowsCount={this.state.rows.length}
  91. // minHeight={0}
  92. />
  93. )}
  94. </Container>
  95. <div align="center">
  96. <span>Riwayat Pengguna</span>
  97. </div>
  98. </ContentWrapper>
  99. );
  100. }
  101. }
  102. export default TableRiwayat;