"use client"; import * as React from "react"; import Box from "@mui/material/Box"; import Toolbar from "@mui/material/Toolbar"; import Typography from "@mui/material/Typography"; import FormControlLabel from "@mui/material/FormControlLabel"; import Switch from "@mui/material/Switch"; import Stack from "@mui/material/Stack/Stack"; import NodePieChart from "./NodePieChart"; import Grid2 from "@mui/material/Unstable_Grid2"; // Grid version 2 import { Card, CardContent, FormGroup, useTheme } from "@mui/material"; import hexRgb from "hex-rgb"; import useMediaQuery from "@mui/material/useMediaQuery"; import { NodeStatus, TableData } from "@/data/nodeData"; interface EnhancedTableToolbarProps { tableData: TableData[]; } function PieCardData(props: { pieData: PieData[]; debugSx: any }) { const { pieData, debugSx } = props; const cardData = React.useMemo(() => { return pieData .filter((pieItem) => pieItem.value > 0) .concat({ name: "Total", value: pieData.reduce((a, b) => a + b.value, 0), color: "#000000", }); }, [pieData]); return ( {cardData.map((pieItem) => ( {pieItem.value} {pieItem.name} ))} ); } interface PieData { name: string; value: number; color: string; } export default function EnhancedTableToolbar( props: React.PropsWithChildren, ) { const { tableData } = props; const theme = useTheme(); const is_lg = useMediaQuery(theme.breakpoints.down("lg")); const [debug, setDebug] = React.useState(false); const debugSx = debug ? { "--Grid-borderWidth": "1px", borderTop: "var(--Grid-borderWidth) solid", borderLeft: "var(--Grid-borderWidth) solid", borderColor: "divider", "& > div": { borderRight: "var(--Grid-borderWidth) solid", borderBottom: "var(--Grid-borderWidth) solid", borderColor: "divider", }, } : {}; const pieData: PieData[] = React.useMemo(() => { const online = tableData.filter( (row) => row.status === NodeStatus.Online, ).length; const offline = tableData.filter( (row) => row.status === NodeStatus.Offline, ).length; const pending = tableData.filter( (row) => row.status === NodeStatus.Pending, ).length; return [ { name: "Online", value: online, color: theme.palette.success.main }, { name: "Offline", value: offline, color: theme.palette.error.main }, { name: "Pending", value: pending, color: theme.palette.warning.main }, ]; }, [tableData, theme]); return ( NODES {/* Debug Controls */} { setDebug(!debug); }} checked={debug} /> } label="Debug" /> {/* Pie Chart Grid */} {/* Card Stack Grid */} {/*Toolbar Grid */} {props.children} ); }