import fs from "node:fs"; import type { RegionMetricsChartTable } from "@/data/content"; import { type Region, regionDict } from "@openstatus/regions"; import { SimpleChart } from "./simple-chart"; export interface LatencyChartTableProps { staticFile: string; caption?: string; } interface LatencyChartTableData { regions: Region[]; data: { regions: Region[]; data: (Partial> & { timestamp: string })[]; }; metricsByRegion: RegionMetricsChartTable[]; } export function LatencyChartTable({ staticFile, caption = "A list of all the selected regions.", }: LatencyChartTableProps) { const data = JSON.parse( fs.readFileSync(`${process.cwd()}/public${staticFile}`, "utf8"), ) as LatencyChartTableData; const { regions, data: chartData, metricsByRegion } = data; return (
{regions .filter((region) => regions.includes(region)) .map((region) => { const regionConfig = regionDict[region as Region]; const flag = regionConfig.flag; const code = regionConfig.code; const metrics = metricsByRegion.find((m) => m.region === region); return ( ); })}
{caption}
Region Trend P75 P95 P99
{flag} {code} ({ timestamp: d.timestamp, latency: d[region], }))} /> {metrics?.p75Latency} ms {metrics?.p95Latency} ms {metrics?.p99Latency} ms
); }