import Box from "@mui/material/Box"; import Typography from "@mui/material/Typography"; import { Table } from "@/Components/design-elements"; import { Pagination } from "@/Components/design-elements/Table"; import { useTheme } from "@mui/material"; import type { Header } from "@/Components/design-elements/Table"; import type { Log, LogLevel } from "@/Types/Log"; import { useTranslation } from "react-i18next"; import { useSelector, useDispatch } from "react-redux"; import type { RootState } from "@/Types/state"; import { setRowsPerPage } from "@/Features/UI/uiSlice"; import { formatTimestamp } from "@/Utils/TimeUtils"; type LogWithId = Log & { id: number }; interface TableLogsProps { logs: LogWithId[]; logCount: number; page: number; setPage: (page: number) => void; } const LevelBadge = ({ level }: { level: LogLevel }) => { const theme = useTheme(); const levelColors: Record = { info: theme.palette.success.main, warn: theme.palette.warning.main, error: theme.palette.error.main, debug: theme.palette.info.main, }; const color = levelColors[level] || theme.palette.text.primary; return ( {level} ); }; export const TableLogs = ({ logs, logCount, page, setPage }: TableLogsProps) => { const { t } = useTranslation(); const theme = useTheme(); const dispatch = useDispatch(); const rowsPerPage = useSelector( (state: RootState) => state?.ui?.logs?.rowsPerPage ?? 15 ); const headers: Header[] = [ { id: "timestamp", content: t("pages.logs.table.headers.timestamp"), render: (row) => ( {formatTimestamp(row.timestamp)} ), }, { id: "level", content: t("pages.logs.table.headers.level"), render: (row) => , }, { id: "service", content: t("pages.logs.table.headers.service"), render: (row) => {row.service || "-"}, }, { id: "method", content: t("pages.logs.table.headers.method"), render: (row) => ( {row.method || "-"} ), }, { id: "message", content: t("common.table.headers.message"), render: (row) => ( {row.message || "-"} ), }, ]; const handlePageChange = ( _e: React.MouseEvent | null, newPage: number ) => { setPage(newPage); }; const handleRowsPerPageChange = ( e: React.ChangeEvent ) => { dispatch(setRowsPerPage({ value: Number(e.target.value), table: "logs" })); setPage(0); }; return ( ); };