Something went wrong. Try again.
[READ-ONLY] Mirror of https://github.com/openstatusHQ/openstatus. ๐ซ Status page with uptime monitoring & API monitoring as code ๐ซ openstatus.dev
bun drizzle-orm monitoring monitoring-as-code nextjs observability on-call open-source shadcn-ui status-page statuspage synthetic-monitoring tinybird turso uptime uptime-checker uptime-monitor
Something went wrong. Try again.
4.5 kB ยท 153 lines
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154"use client";
import type { RouterOutputs } from "@openstatus/api";import { calculateTiming } from "@openstatus/tinybird/src/schema";
import { DataTableSheet, DataTableSheetContent, DataTableSheetHeader, DataTableSheetTitle,} from "@/components/data-table/data-table-sheet";
import { DataTableBasics } from "./data-table-basics";
type TestTCP = RouterOutputs["checker"]["testTcp"];type TestHTTP = RouterOutputs["checker"]["testHttp"];type TestDNS = RouterOutputs["checker"]["testDns"];type TestICMP = RouterOutputs["checker"]["testIcmp"];type TestGRPC = RouterOutputs["checker"]["testGrpc"];type Monitor = NonNullable<RouterOutputs["monitor"]["get"]>;
export function DataTableSheetTest({ data, monitor, onClose,}: { data: TestTCP | TestHTTP | TestDNS | TestICMP | TestGRPC | null; monitor: Monitor; onClose: () => void;}) { if (!data) return null;
const _data = mapping(data, monitor);
if (!_data) return null;
return ( <DataTableSheet defaultOpen> {/* NOTE: we are using onCloseAutoFocus to reset with a delay to avoid abrupt closing of the sheet */} <DataTableSheetContent className="sm:max-w-lg" onCloseAutoFocus={onClose}> <DataTableSheetHeader className="px-2"> <DataTableSheetTitle>Test Result</DataTableSheetTitle> </DataTableSheetHeader> <DataTableBasics data={_data} /> </DataTableSheetContent> </DataTableSheet> );}
function mapping( data: TestTCP | TestHTTP | TestDNS | TestICMP | TestGRPC, monitor: Monitor,) { switch (data.type) { case "http": return { id: null, trigger: null, timestamp: data.timestamp, cronTimestamp: data.timestamp, type: data.type, requestStatus: "success", statusCode: data.status, headers: data.headers, region: data.region, latency: data.latency, timing: calculateTiming(data.timing), url: monitor.url, workspaceId: String(monitor.workspaceId), error: false, monitorId: String(monitor.id), assertions: monitor.assertions ?? null, message: null, body: data.body ?? null, } as const; case "tcp": return { id: null, trigger: null, timestamp: data.timestamp, cronTimestamp: data.timestamp, region: data.region, type: data.type, requestStatus: "success", error: false, latency: data.latency ?? 0, uri: monitor.url, monitorId: String(monitor.id), errorMessage: null, assertions: null, } as const; // FIXM: add DNS props case "dns": return { id: null, trigger: null, timestamp: data.timestamp, cronTimestamp: data.timestamp, region: data.region, type: data.type, requestStatus: "success", monitorId: String(monitor.id), error: false, uri: monitor.url, latency: data.latency ?? 0, records: data.records, errorMessage: null, assertions: null, } as const; case "icmp": return { id: null, trigger: null, timestamp: data.timestamp, cronTimestamp: data.timestamp, region: data.region, type: data.type, requestStatus: "success", error: false, latency: data.latency ?? 0, latencyMin: data.latencyMin ?? 0, latencyMax: data.latencyMax ?? 0, packetsSent: data.packetsSent ?? 0, packetsReceived: data.packetsReceived ?? 0, uri: monitor.url, monitorId: String(monitor.id), errorMessage: null, assertions: null, } as const; case "grpc": return { id: null, trigger: null, timestamp: data.timestamp, cronTimestamp: data.timestamp, region: data.region, type: data.type, requestStatus: data.servingStatus === "SERVING" ? "success" : "error", error: data.servingStatus !== "SERVING", latency: data.latency ?? 0, servingStatus: data.servingStatus ?? null, grpcCode: data.grpcCode ?? null, service: data.service ?? null, timing: calculateTiming(data.timing), uri: monitor.url, monitorId: String(monitor.id), errorMessage: data.errorMessage ?? null, assertions: null, } as const; default: return null; }}