| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- import React, { Component } from "react";
- import ContentWrapper from "@/components/Layout/ContentWrapper";
- import { Container, Progress } from "reactstrap";
- import { getLog2 } from "@/actions/log";
- import { connect } from "react-redux";
- import moment from "moment";
- let ReactDataGrid = null;
- class TableRiwayat extends Component {
- state = {
- dataGridReady: false,
- dataRiwayat: {},
- rows: [],
- originalRows: null,
- };
- constructor(props, context) {
- super(props, context);
- this._columns = [
- {
- key: "timestamp",
- name: "Timestamp",
- sortable: true,
- // width: 150
- },
- {
- key: "username",
- name: "Username",
- sortable: true,
- // width: 200
- },
- {
- key: "ipv4",
- name: "IPv4",
- sortable: true,
- // width: 120
- },
- {
- key: "menu",
- name: "Menu",
- sortable: true,
- // width: 200
- },
- {
- key: "deskripsi",
- name: "Deskripsi",
- sortable: true,
- width: 400
- },
- ];
- }
- async componentDidMount() {
- const { token } = this.props;
- const dataRiwayat = await getLog2(token);
- this.setState({ dataRiwayat });
- ReactDataGrid = require("react-data-grid");
- this.setState({
- dataGridReady: true,
- });
- let originalRows = this.createRows(1000);
- let rows = originalRows.slice(0);
- this.setState({ rows, originalRows });
- }
- getRandomDate = (start, end) => {
- return new Date(start.getTime() + Math.random() * (end.getTime() - start.getTime())).toLocaleDateString();
- };
- getover = (e) => {
- return <div className=" getover"><span className="getover">{e}</span></div>
- }
- createRows = () => {
- let rows = [];
- const { dataRiwayat } = this.state;
- if (dataRiwayat) {
- dataRiwayat.data.forEach((e) => {
- rows.push({
- deskripsi: (e.aktivitas),
- complete: Math.min(100, Math.round(Math.random() * 110)),
- ipv4: e.ipv4 || "-",
- menu: e.menu || "-",
- username: e.user?.nama || "-",
- timelapse: this.getover(moment(e.createdAt).format("DD-MM-YYYY, hh:mm a")),
- completeDate: this.getRandomDate(new Date(), new Date(2021, 0, 1)),
- });
- });
- }
- return rows;
- };
- rowGetter = (i) => this.state.rows[i];
- handleGridSort = (sortColumn, sortDirection) => {
- const comparer = (a, b) => {
- if (sortDirection === "ASC") {
- return a[sortColumn] > b[sortColumn] ? 1 : -1;
- } else if (sortDirection === "DESC") {
- return a[sortColumn] < b[sortColumn] ? 1 : -1;
- }
- };
- const rows = sortDirection === "NONE" ? this.state.originalRows.slice(0) : this.state.rows.sort(comparer);
- this.setState({ rows });
- };
- render() {
- return (
- <ContentWrapper>
- <Container fluid>{this.state.dataGridReady && <ReactDataGrid onGridSort={this.handleGridSort} columns={this._columns} rowGetter={this.rowGetter} rowsCount={this.state.rows.length} />}</Container>
- <div align="center">
- <span>Riwayat Pengguna</span>
- </div>
- </ContentWrapper>
- );
- }
- }
- const mapStateToProps = (state) => ({ token: state.token });
- export default connect(mapStateToProps)(TableRiwayat);
|