import { Alert, Badge, Card, Group, Table, Text, Tooltip } from "@mantine/core"; // import { useQuery } from "react-query"; import { formatRelative, humanizeDuration, now } from "../lib/formatTime"; import { IconAlertTriangle, IconBell, IconDatabaseImport, IconHourglass, IconRefresh, IconRepeat, } from "@tabler/icons-react"; import { useSuspenseAPIQuery } from "../api/api"; import { RulesMap } from "../api/responseTypes/rules"; import badgeClasses from "../Badge.module.css"; import RuleDefinition from "../RuleDefinition"; const healthBadgeClass = (state: string) => { switch (state) { case "ok": return badgeClasses.healthOk; case "err": return badgeClasses.healthErr; case "unknown": return badgeClasses.healthUnknown; default: return "orange"; } }; export default function RulesPage() { const { data } = useSuspenseAPIQuery({ path: `/rules` }); return ( <> {data.data.groups.map((g, i) => ( {g.name} {g.file} } > {formatRelative(g.lastEvaluation, now())} } > {humanizeDuration(parseFloat(g.evaluationTime) * 1000)} } > {humanizeDuration(parseFloat(g.interval) * 1000)} {g.rules.map((r) => ( // TODO: Find a stable and definitely unique key. {r.type === "alerting" ? ( ) : ( )} {r.name} {r.health} } > {formatRelative(r.lastEvaluation, now())} } > {humanizeDuration( parseFloat(r.evaluationTime) * 1000 )} {r.lastError && ( } > Error: {r.lastError} )} ))}
))} ); }