import { Grid, IconButton, Table, TableBody, TableCell, TableFooter, TablePagination, TableRow, } from "@material-ui/core"; import AddCircleIcon from "@material-ui/icons/AddCircle"; import DeleteIcon from "@material-ui/icons/Delete"; import clsx from "clsx"; import { LocalDateTimeString } from "../../utils/dates"; import { logger } from "../../services/monitoring"; import React, { useEffect, useState } from "react"; import { useParams } from "react-router"; import { CarUpdatesProvider, useCarUpdatesContext } from "../Contexts/CarUpdatesContext"; import { useStatusContext } from "../Contexts/StatusContext"; import { useUserContext } from "../Contexts/UserContext"; import { Link } from "react-router-dom"; import TableHeaderSortable from "../Table/HeaderSortable"; import { useLocalStorage } from "../useLocalStorage"; import DeleteConfirmation from "../DeleteConfirmation"; import useStyles from "../useStyles"; import { Permissions } from "../../utils/roles"; import { RoleWrap } from "../Controls/RoleWrap"; const tableColumns = [ { id: "rxswin", label: "RXSWIN (RX Software Identification Number)", }, { id: "created_at", label: "Created", }, ]; const PAGE_SIZE = "SUMS_RXSWIN_TABLE_PAGE_SIZE"; const MainForm = () => { const { sums_version } = useParams(); const classes = useStyles(); const [pageSize, setPageSize] = useLocalStorage(PAGE_SIZE, 10); const [pageIndex, setPageIndex] = useState(0); const [orderBy, setOrderBy] = useState("created_at"); const [order, setOrder] = useState("desc"); const [showDeleteModal, setShowDeleteModal] = useState(false); const [rowToDelete, setRowToDelete] = useState({}); const { deleteSUMSVersionRxSwins, getSUMSVersionRxSwins, versionRxSwins, totalVersionRxSwins, stopMonitor, } = useCarUpdatesContext(); const { token: { idToken: { jwtToken: token }, }, groups, providers, } = useUserContext(); const { setMessage, setTitle, setSitePath } = useStatusContext(); useEffect(() => { setTitle(`SUMS Version ${sums_version}`); setSitePath([ { label: `SUMS Version ${sums_version}`, link: `/sums/${sums_version}`, }, ]); // eslint-disable-next-line react-hooks/exhaustive-deps }, []); useEffect(() => { loadSUMSVersionRxSwins(); // eslint-disable-next-line react-hooks/exhaustive-deps }, [sums_version, token, pageIndex, pageSize, orderBy, order]); const loadSUMSVersionRxSwins = async () => { try { if (!sums_version || !token) return; stopMonitor(); await getSUMSVersionRxSwins( sums_version, { limit: pageSize, offset: pageSize * pageIndex, order: `${orderBy} ${order}`, }, token ); } catch (e) { setMessage(e.message); logger.warn(e.stack); } }; const handleChangePageIndex = (event, newIndex) => { setPageIndex(newIndex); }; const handleChangePageSize = (event) => { setPageSize(parseInt(event.target.value, 10)); setPageIndex(0); }; const handleSort = (event, property) => { try { if (property === orderBy) { if (order === "asc") { setOrder("desc"); } else { setOrder("asc"); } } else { setOrderBy(property); setOrder("asc"); } } catch (e) { logger.warn(e.stack); } }; const onDeleteClick = (row) => { setRowToDelete(row); setShowDeleteModal(true); } const sendDelete = async () => { if (rowToDelete) { try { const result = await deleteSUMSVersionRxSwins(rowToDelete.version, rowToDelete.rxswin, token); if (!result || result.error) return; setMessage(`Deleted ${rowToDelete.rxswin}`); loadSUMSVersionRxSwins(); } catch (e) { setMessage(e.message); logger.warn(e.stack); } } }; return (
{versionRxSwins && versionRxSwins.map((row, index) => ( {row.rxswin} {LocalDateTimeString(row.created)} onDeleteClick(row)} aria-label={`Send delete for ${row.rxswin}`} size="small" color="primary" > ))} {!versionRxSwins || versionRxSwins.length === 0 ? ( No RX Software Identification Numbers ) : ( )}
setShowDeleteModal(false)} deleteFunction={sendDelete} />
); }; const SumsRxSwin = () => ( ); export default SumsRxSwin;