/** ========================================================= * 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 { 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 IdCell from "./components/IdCell"; import Footer from "../components/Footer"; const qController = new QController("http://localhost:8000"); console.log(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 [menu, setMenu] = useState(null); const [tableState, setTableState] = useState(""); console.log(tableState); const newEntity = (event: any) => setMenu(event.currentTarget); const openMenu = (event: any) => setMenu(event.currentTarget); const closeMenu = () => setMenu(null); const createPath = `/${table.name}/create`; (async () => { await qController.loadTableMetaData(table.name).then((tableMetaData) => { (async () => { await qController.query(table.name, 250).then((results) => { dataTableData = { columns: [], rows: [], }; const fields = new Map(Object.entries(tableMetaData.fields)); const sortedEntries = new Map([...fields.entries()].sort()); sortedEntries.forEach((value, key) => { if (key === tableMetaData.primaryKeyField) { dataTableData.columns.splice(0, 0, { Header: key, accessor: key, Cell: ({ value }: any) => , }); } else { dataTableData.columns.push({ Header: key, accessor: key, }); } }); results.forEach((record) => { const row = new Map(); const values = new Map(Object.entries(record.values)); values.forEach((value, key) => { row.set(key, value); }); dataTableData.rows.push(Object.fromEntries(row)); }); setTableState(table.name); }); })(); }); })(); const renderMenu = ( Status: Paid Status: Refunded Status: Canceled Remove Filter ); return ( new {table.label} filters  keyboard_arrow_down {renderMenu} description  export csv