import { Grid2 as Grid, Typography } from "@mui/material"; import { Icon } from "@iconify/react"; import { DataGrid, GridColDef, GridLocaleText, GRID_DEFAULT_LOCALE_TEXT, GridActionsCellItem, GridRowId, } from "@mui/x-data-grid"; import { useCallback, useMemo } from "react"; import { red } from "@mui/material/colors"; import LoadGameButton from "@/sections/loadGame/loadGameButton"; import { useGameDatabase } from "@/hooks/useGameDatabase"; import { useRouter } from "next/router"; const gridLocaleText: GridLocaleText = { ...GRID_DEFAULT_LOCALE_TEXT, noRowsLabel: "No games found", }; export default function GameDatabase() { const { games, deleteGame } = useGameDatabase(true); const router = useRouter(); console.log(games); const handleDeleteGameRow = useCallback( (id: GridRowId) => async () => { if (typeof id !== "number") { throw new Error("Unable to remove game"); } await deleteGame(id); }, [deleteGame] ); const columns: GridColDef[] = useMemo( () => [ { field: "event", headerName: "Event", width: 150, }, { field: "site", headerName: "Site", width: 150, }, { field: "date", headerName: "Date", width: 150, }, { field: "round", headerName: "Round", headerAlign: "center", align: "center", width: 150, }, { field: "whiteLabel", headerName: "White", width: 200, headerAlign: "center", align: "center", valueGetter: (_, row) => `${row.white.name ?? "Unknown"} (${row.white.rating ?? "?"})`, }, { field: "result", headerName: "Result", headerAlign: "center", align: "center", width: 100, }, { field: "blackLabel", headerName: "Black", width: 200, headerAlign: "center", align: "center", valueGetter: (_, row) => `${row.black.name ?? "Unknown"} (${row.black.rating ?? "?"})`, }, { field: "eval", headerName: "Evaluation", type: "boolean", headerAlign: "center", align: "center", width: 100, valueGetter: (_, row) => !!row.eval, }, { field: "openEvaluation", type: "actions", headerName: "Analyze", width: 100, cellClassName: "actions", getActions: ({ id }) => { return [ } label="Open Evaluation" onClick={() => router.push({ pathname: "/", query: { gameId: id } }) } color="inherit" key={`${id}-open-eval-button`} />, ]; }, }, { field: "delete", type: "actions", headerName: "Delete", width: 100, cellClassName: "actions", getActions: ({ id }) => { return [ } label="Delete" onClick={handleDeleteGameRow(id)} color="inherit" key={`${id}-delete-button`} />, ]; }, }, ], [handleDeleteGameRow, router] ); return ( You have {games.length} game{games.length !== 1 && "s"} in your database ); }