"use client"; import React, { useMemo } from "react"; import { useTranslation } from "react-i18next"; import { BomScoreResult } from "@/app/api/bom"; import { GridColDef, GridValueFormatterParams } from "@mui/x-data-grid"; import StyledDataGrid from "../StyledDataGrid"; import Paper from "@mui/material/Paper"; interface Props { boms: BomScoreResult[]; } const BomScoreTable: React.FC = ({ boms }) => { const { t } = useTranslation(["bomWeighting", "common"]); const columns = useMemo[]>( () => [ { field: "code", headerName: t("Item Code"), flex: 1, minWidth: 150, }, { field: "name", headerName: t("Item Name"), flex: 1.5, minWidth: 220, }, { field: "baseScore", headerName: t("Base Score"), flex: 1, minWidth: 140, sortable: false, valueFormatter: (params: GridValueFormatterParams) => { const v = params.value; if (v == null) return ""; let num: number | null = null; if (typeof v === "number") { num = v; } else if (typeof v === "string") { num = parseFloat(v); } else if (typeof v === "object" && v !== null) { const obj = v as any; if (typeof obj.value === "number") { num = obj.value; } else if (typeof obj.toString === "function") { num = parseFloat(obj.toString()); } } if (num == null || Number.isNaN(num)) return ""; return num.toFixed(2); }, }, ], [t], ); return ( row.id} autoHeight disableRowSelectionOnClick hideFooterPagination={true} sx={{ "& .MuiDataGrid-columnHeaderTitle": { fontSize: 15 }, "& .MuiDataGrid-cell": { fontSize: 16 }, }} /> ); }; export default BomScoreTable;