import React, { useEffect, useState } from "react"; import { Link } from "react-router-dom"; import PropTypes from "prop-types"; import { Table, TableBody, TableCell, TableFooter, TablePagination, TableRow, } from "@material-ui/core"; import clsx from "clsx"; import { useSupplierContext } from "../../Contexts/SupplierContext"; import { useStatusContext } from "../../Contexts/StatusContext"; import { LocalDateTimeString } from "../../../utils/dates"; import TableHeaderSortable from "../../Table/HeaderSortable"; import { logger } from "../../../services/monitoring"; const tableColumns = [ { id: "id", label: "ID", }, { id: "contact", label: "Contact", }, { id: "company", label: "Company", }, { id: "email", label: "Email", }, { id: "program", label: "Program", }, { id: "ecus", label: "ECUs", }, { id: "created_at", label: "Registered", }, ]; const SupplierTable = (props) => { const { token, classes } = props; const [pageSize, setPageSize] = useState(10); const [pageIndex, setPageIndex] = useState(0); const [orderBy, setOrderBy] = useState("created_at"); const [order, setOrder] = useState("asc"); const { getSuppliers, suppliers, totalSuppliers } = useSupplierContext(); const { setMessage } = useStatusContext(); const sortHandler = (_event, property) => { if (property === orderBy) { if (order === "asc") { setOrder("desc"); } else { setOrder("asc"); } } else { setOrderBy(property); setOrder("asc"); } }; const handleChangePageIndex = (_event, newIndex) => { setPageIndex(newIndex); }; const handleChangePageSize = (event) => { setPageSize(parseInt(event.target.value, 10)); setPageIndex(0); }; const query = async (signal) => { try { const options = { limit: pageSize, offset: pageSize * pageIndex, order: `${orderBy} ${order}`, }; await getSuppliers(options, token, signal); } catch (e) { setMessage(e.message); logger.warn(e.stack); } }; useEffect(() => { const controller = new AbortController(); query(controller.signal); return () => { controller.abort(); }; // eslint-disable-next-line react-hooks/exhaustive-deps }, [pageIndex, pageSize, orderBy, order, token]); return (
{suppliers.map((row, index) => { return ( {row?.id} {row.contact} {row.company} {row.email} {row.program} {row.ecus.join(", ")} {LocalDateTimeString(row.created)} ); })}
); }; SupplierTable.propTypes = { token: PropTypes.string.isRequired, classes: PropTypes.object.isRequired, }; export default SupplierTable;