import { Card, Group, Stack, Table, Text } from "@mantine/core"; import { useSuspenseAPIQuery } from "../api/api"; import { IconRun, IconWall } from "@tabler/icons-react"; import { formatTimestamp } from "../lib/formatTime"; const statusConfig: Record< string, { title?: string; formatValue?: (v: string | boolean) => string; } > = { startTime: { title: "Start time", formatValue: (v: string | boolean) => formatTimestamp(new Date(v as string).valueOf() / 1000, false), // TODO: Set useLocalTime parameter correctly. }, CWD: { title: "Working directory" }, reloadConfigSuccess: { title: "Configuration reload", formatValue: (v: string | boolean) => (v ? "Successful" : "Unsuccessful"), }, lastConfigTime: { title: "Last successful configuration reload", formatValue: (v: string | boolean) => new Date(v as string).toUTCString(), }, corruptionCount: { title: "WAL corruptions" }, goroutineCount: { title: "Goroutines" }, storageRetention: { title: "Storage retention" }, }; export default function StatusPage() { const { data: buildinfo } = useSuspenseAPIQuery>({ path: `/status/buildinfo`, }); const { data: runtimeinfo } = useSuspenseAPIQuery>({ path: `/status/runtimeinfo`, }); return ( Build information {Object.entries(buildinfo.data).map(([k, v]) => ( {k} {v} ))}
Runtime information {Object.entries(runtimeinfo.data).map(([k, v]) => { const { title = k, formatValue = (val: string) => val } = statusConfig[k] || {}; return ( {title} {formatValue(v)} ); })}
); }