import React, { useEffect, useState } from "react"; import { Link } from "react-router-dom"; import PropTypes from "prop-types"; import { Table, TableBody, TableCell, TableFooter, TablePagination, TableRow, Button, } from "@material-ui/core"; import clsx from "clsx"; import { useIssueContext } from "../../Contexts/IssueContext"; import { useStatusContext } from "../../Contexts/StatusContext"; import { LocalDateTimeString } from "../../../utils/dates"; import TableHeaderSortable from "../../Table/HeaderSortable"; import { logger } from "../../../services/monitoring"; import { useLocalStorage } from "../../useLocalStorage"; import { RoleWrap } from "../RoleWrap"; import { useUserContext } from "../../Contexts/UserContext"; import { Permissions } from "../../../utils/roles"; const tableColumns = [ { id: "id", label: "Id", }, { id: "vin", label: "VIN", }, { id: "title", label: "Title", }, { id: "description", label: "Description", }, { id: "driver_id", label: "Driver ID", }, { id: "created_at", label: "Created", }, { id: "", label: "", }, ]; const PAGE_SIZE = "ISSUE_SELECTION_TABLE_PAGE_SIZE"; const IssueSelectionTable = (props) => { const { token, classes, search, multiSelect, selected, onSelectAll, } = props; const [pageSize, setPageSize] = useLocalStorage(PAGE_SIZE, 10); const [pageIndex, setPageIndex] = useState(0); const [orderBy, setOrderBy] = useState("created_at"); const [order, setOrder] = useState("asc"); const { getIssues, issues, totalIssues = 0 } = useIssueContext(); const { groups, providers } = useUserContext(); const { setMessage } = useStatusContext(); const handleSort = (_event, property) => { if (property === orderBy) { if (order === "asc") { setOrder("desc"); } else { setOrder("asc"); } } else { setOrderBy(property); setOrder("desc"); } }; const handleChangePageIndex = (_event, newIndex) => { setPageIndex(newIndex); }; const handleChangePageSize = (event) => { setPageSize(parseInt(event.target.value, 10)); setPageIndex(0); }; const handleSelectAll = (event) => { if (!onSelectAll) return; const newSelected = []; if (event.target.checked) { issues.forEach((car) => { newSelected.push(car.vin); }); } onSelectAll(newSelected); }; useEffect(() => { (async () => { try { if (!token) return; await getIssues( { limit: pageSize, offset: pageSize * pageIndex, order: `${orderBy} ${order}`, }, token ); } catch (e) { setMessage(e.message); logger.warn(e.stack); } })(); // eslint-disable-next-line react-hooks/exhaustive-deps }, [pageIndex, pageSize, orderBy, order, search, token]); useEffect(() => { setPageIndex(0); }, [search]); const { deleteIssue } = useIssueContext(); const handleDelete = (id) => { deleteIssue(id, token).then(() => { getIssues(token) }); }; return (
| No issues found | ) : (