| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261 | import DataTable from 'react-data-table-component';import Datatable from "@/components/Tables/Datatable";import Link from "next/link";import moment from "moment";import React, { Component } from "react";import { getLog2 } from "@/actions/log";import { connect } from "react-redux";import { Row, Col, Input, FormGroup, Label, Progress, Button } from "reactstrap";import Datetime from "react-datetime";class TableRiwayat extends Component {    constructor(props) {        super(props);        this.state = {            dataRiwayat: [],            dataRiwayatsort: [],            fromDate: "",            toDate: "",            updateTable: false,            search: "",            dataFilterSearch: []        };    }    componentDidMount = async () => {        const { token } = this.props;        const data = await getLog2(this.props.token)        const dataRiwayat = data.data        this.setState({ dataRiwayat });    }    fetchData = async () => {        const date1 = moment(this.state.fromDate).format("YYYY-MM-DD")        const date2 = moment(this.state.toDate).format("YYYY-MM-DD")        const data = await getLog2(this.props.token, { fromDate: date1, toDate: date2 })        const dataFilterSearch = data.data        this.setState({ dataFilterSearch: dataFilterSearch, dataRiwayat: dataFilterSearch });        // this.setState({ dataRiwayat });    }    onFilter = () => {        this.setState({ loading: true });        this.fetchData(); 21        this.setState({ loading: false });        if (this.state.dataRiwayat && this.state.dataRiwayat.length) {            // this.renderTableData();            this.setState({ noData: true });        }    }    handleSearchChange = (e) => {        const { dataRiwayat } = this.state;        const searchValue = e.target.value;        const dataNoFilter = dataRiwayat        const result = dataRiwayat.filter((item) =>            item.aktivitas.toLowerCase().includes(searchValue.toLowerCase())            || item?.timestamp?.toLowerCase().includes(searchValue.toLowerCase())            || item?.username?.toLowerCase().includes(searchValue.toLowerCase())            || item?.ipv4?.toLowerCase().includes(searchValue.toLowerCase())            || item?.menu?.toLowerCase().includes(searchValue.toLowerCase())        );        this.setState({            search: searchValue,        })        if (result.length) {            this.setState({                dataFilterSearch: result            });        }        else {            this.setState({                dataFilterSearch: dataNoFilter            })        }    }    render() {        const { dataRiwayat, search, dataFilterSearch } = this.state        const columns = [            {                name: 'Timestamp',                // selector: row => row.timestamp,                cell: row => (                    <div>                        <div>                            <div                                data-tag="allowRowEvents"                                style={{ color: 'grey', whiteSpace: 'wrap', textOverflow: 'ellipses', width: '100px' }}                            >                                { }                                {row.timestamp}                            </div>                        </div>                    </div>                )            },            {                name: 'UserName',                // selector: row => row.username,                cell: row => (                    <div>                        <div>                            <div                                data-tag="allowRowEvents"                                style={{ color: 'grey', whiteSpace: 'wrap', textOverflow: 'ellipses', width: '100px' }}                            >                                { }                                {row.username}                            </div>                        </div>                    </div>                )            },            {                name: 'IPv4',                // selector: row => row.ipv4,                cell: row => (                    <div>                        <div>                            <div                                data-tag="allowRowEvents"                                style={{ color: 'grey', whiteSpace: 'wrap', textOverflow: 'ellipses', width: '100px' }}                            >                                { }                                {row.ipv4}                            </div>                        </div>                    </div>                )            },            {                name: 'Menu',                // selector: row => row.menu,                cell: row => (                    <div>                        <div>                            <div                                data-tag="allowRowEvents"                                style={{ color: 'grey', whiteSpace: 'wrap', width: '100px' }}                            >                                                     {row.menu||"-"}                            </div>                        </div>                    </div>                )            },            {                name: 'Deskripsi',                // selector: row => row.aktivitas,                cell: row => (                    <div>                        <div>                            <div                                data-tag="allowRowEvents"                                style={{ color: 'grey', overflow: 'hidden', whiteSpace: 'wrap', textOverflow: 'ellipses', width: '300px' }}                            >                                { }                                {row.aktivitas}                            </div>                        </div>                    </div>                ),            },        ];        const data = dataRiwayat?.map((value, index) => (            {                timestamp: value.createdAt,                username: value.user?.nama,                ipv4: value?.ipv4,                menu: value?.menu,                aktivitas: value?.aktivitas,            }        ))        const datasearch = dataFilterSearch?.map((value, index) => (            {                timestamp: value.createdAt,                username: value.user?.nama,                ipv4: value?.ipv4,                menu: value?.menu,                aktivitas: value?.aktivitas,            }        ))        return (            <div className="card b ">                <div className="row card-body card-over">                    <div className=" pl-4 col-2 float-left">                        <label className="col-form-label">Range Filter : </label>                        <span>                            <Datetime                                timeFormat={false}                                inputProps={{ className: "form-control" }}                                closeOnSelect={true}                                value={this.state.fromDate ? moment(this.state.fromDate).format("DD-MM-YYYY") : "DD/MM/YYYY"}                                onChange={(fromDate) => {                                    this.setState({ fromDate })                                }}                                className=' mb-3'                            />                        </span>                        <span>                            <Datetime                                timeFormat={false}                                inputProps={{ className: "form-control" }}                                closeOnSelect={true}                                value={this.state.toDate ? moment(this.state.toDate).format("DD-MM-YYYY") : "DD/MM/YYYY"}                                onChange={(toDate) => {                                    this.setState({ toDate })                                }}                                // className=' w-75'                            />                        </span>                        <Button color="info" className=" mt-4" onClick={(e) => this.onFilter()}>Filter</Button>                    </div>                    <div className="col-10">                        <DataTable data={datasearch.length ? datasearch : data} columns={columns}                            defaultSortField="title"                            pagination                            // selectableRows                            subHeader                            subHeaderComponent={                                <input                                    type="text"                                    className="w-25 form-control"                                    placeholder="Search..."                                    value={search}                                    onChange={this.handleSearchChange}                                />                            }                            subHeaderAlign="right"                        />                    </div>                </div>            </div >        );    }}const mapStateToProps = (state) => ({ token: state.token });export default connect(mapStateToProps)(TableRiwayat);
 |