import { Card, CardContent, CardHeader, CardTitle, CardDescription, } from "@bullstudio/ui/components/card"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "@bullstudio/ui/components/table"; import { useNavigate } from "@tanstack/react-router"; import type { OverviewMetricsResponse } from "@/integrations/trpc/routers/overview"; import { formatDuration } from "@bullstudio/ui/shared"; type SlowJob = OverviewMetricsResponse["slowestJobs"][number]; type SlowestJobsTableProps = { jobs: SlowJob[]; }; export function SlowestJobsTable({ jobs }: SlowestJobsTableProps) { const navigate = useNavigate(); const handleJobClick = (job: SlowJob) => { navigate({ to: "/jobs/$jobId", params: { jobId: job.id }, search: { queueName: job.queueName }, }); }; return ( Slowest Jobs Top 10 jobs by processing time {jobs.length === 0 ? (
No completed jobs in this time range
) : ( Job Queue Duration {jobs.map((job) => ( handleJobClick(job)} >
{job.name} {job.id}
{job.queueName} {formatDuration(job.processingTimeMs)}
))}
)}
); }