import { Box, Typography } from "@mui/material"; import ResponsiveTable, { Column } from "common/ResponsiveTable"; import { cloneDeep } from "lodash"; //import { getTableIcons } from "common/ResponsiveTable"; //import MaterialTable, { Column, MTableToolbar } from "material-table"; import { Transaction } from "models/Transaction"; import moment from "moment"; import ObjectDescriber from "objects/ObjectDescriber"; import React, { useEffect, useState } from "react"; import TransactionDataDisplay from "./transactionDataDisplay"; interface Props { transactions: Transaction[]; loading?: boolean; objectNames?: Map; } export default function TransactionViewer(props: Props) { const { transactions, loading, objectNames } = props; const [displayedRows, setDisplayedRows] = useState([]) const [tablePage, setTablePage] = useState(0) const [pageSize, setPageSize] = useState(10) useEffect(()=>{ let clone: Transaction[] = cloneDeep(transactions) let rows = clone.splice(tablePage * pageSize, pageSize) setDisplayedRows(rows) },[transactions, tablePage, pageSize]) const columns: Column[] = [ { title: "Date", render: row => { return ( {moment(row.transaction.timestamp).format("YYYY-MM-DD")} ); } }, { title: "From", render: row => { return ( {ObjectDescriber(row.transaction.fromObject).name} {objectNames ? objectNames.get(row.transaction.fromKey) : row.transaction.fromKey} ); } }, { title: "To", render: row => { return ( {ObjectDescriber(row.transaction.toObject).name} {objectNames ? objectNames.get(row.transaction.toKey) : row.transaction.toKey} ); } }, { title: "Transaction", render: row => { return ( ); } } ]; const handleChange = (event: any) => { setPageSize(event.target.value); }; const myTable = () => { console.log(transactions) return ( isLoading={loading} title={"Inventory Transactions"} page={tablePage} columns={columns} pageSize={pageSize} rows={displayedRows} total={transactions.length} setPage={page => setTablePage(page)} handleRowsPerPageChange={handleChange} /> ) }; return {myTable()}; }