/** ========================================================= * Material Dashboard 2 PRO React TS - v1.0.0 ========================================================= * Product Page: https://www.creative-tim.com/product/material-dashboard-2-pro-react-ts * Copyright 2022 Creative Tim (https://www.creative-tim.com) Coded by www.creative-tim.com ========================================================= * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. */ /* eslint-disable react/no-unstable-nested-components */ import React, { useState } from "react"; // @mui material components import Card from "@mui/material/Card"; import Icon from "@mui/material/Icon"; import Menu from "@mui/material/Menu"; import MenuItem from "@mui/material/MenuItem"; import Divider from "@mui/material/Divider"; // Material Dashboard 2 PRO React TS components import MDBox from "components/MDBox"; import MDTypography from "components/MDTypography"; import MDButton from "components/MDButton"; // Material Dashboard 2 PRO React TS examples components import DashboardLayout from "examples/LayoutContainers/DashboardLayout"; import DashboardNavbar from "examples/Navbars/DashboardNavbar"; import DataTable from "examples/Tables/DataTable"; // Data import { QProcessMetaData } from "@kingsrook/qqq-frontend-core/lib/model/metaData/QProcessMetaData"; import { QController } from "@kingsrook/qqq-frontend-core/lib/controllers/QController"; import Link from "@mui/material/Link"; import { QTableMetaData } from "@kingsrook/qqq-frontend-core/lib/model/metaData/QTableMetaData"; import { useParams } from "react-router-dom"; import IdCell from "./components/IdCell"; import Footer from "../../components/Footer"; import EntityForm from "../../components/EntityForm"; const qController = new QController(""); // Declaring props types for DefaultCell interface Props { table?: QTableMetaData; } let dataTableData = { columns: [] as any[], rows: [] as any[], }; function EntityList({ table }: Props): JSX.Element { const tableNameParam = useParams().tableName; const tableName = table === null ? tableNameParam : table.name; const [filtersMenu, setFiltersMenu] = useState(null); const [actionsMenu, setActionsMenu] = useState(null); const [tableState, setTableState] = useState(""); const [tableProcesses, setTableProcesses] = useState([] as QProcessMetaData[]); console.log(tableState); const openActionsMenu = (event: any) => setActionsMenu(event.currentTarget); const closeActionsMenu = () => setActionsMenu(null); const openFiltersMenu = (event: any) => setFiltersMenu(event.currentTarget); const closeFiltersMenu = () => setFiltersMenu(null); const createPath = `/${tableName}/create`; if (tableState === "") { (async () => { const tableMetaData = await qController.loadTableMetaData(tableName); const metaData = await qController.loadMetaData(); const results = await qController.query(tableName, 250); dataTableData = { columns: [], rows: [], }; const sortedKeys = [...tableMetaData.fields.keys()].sort(); sortedKeys.forEach((key) => { const field = tableMetaData.fields.get(key); if (key === tableMetaData.primaryKeyField) { dataTableData.columns.splice(0, 0, { Header: field.label, accessor: key, Cell: ({ value }: any) => , }); } else { dataTableData.columns.push({ Header: field.label, accessor: key, }); } }); results.forEach((record) => { dataTableData.rows.push(Object.fromEntries(record.values.entries())); }); const matchingProcesses: QProcessMetaData[] = []; const processKeys = [...metaData.processes.keys()]; processKeys.forEach((key) => { const process = metaData.processes.get(key); if (process.tableName === tableName) { matchingProcesses.push(process); } }); setTableProcesses(matchingProcesses); setTableState(tableName); })(); } const renderActionsMenu = ( {tableProcesses.map((process) => ( {process.label} ))} ); const renderFiltersMenu = ( Status: Paid Status: Refunded Status: Canceled Remove Filter ); return ( new {tableName} {tableProcesses.length > 0 && ( actions  keyboard_arrow_down )} {renderActionsMenu} filters  keyboard_arrow_down {renderFiltersMenu} description  export csv