'use client' import { trpc } from '@/lib/trpc/client' import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card' import { Skeleton } from '@/components/ui/skeleton' import { AlertCircle, CheckCircle2, Users } from 'lucide-react' interface CoverageReportProps { roundId: string } export function CoverageReport({ roundId }: CoverageReportProps) { const { data: coverage, isLoading } = trpc.roundAssignment.coverageReport.useQuery( { roundId, requiredReviews: 3 }, { refetchInterval: 15_000 }, ) if (isLoading) { return (
No coverage data available
} const totalAssigned = coverage.fullyAssigned || 0 const totalProjects = coverage.totalProjects || 0 const avgPerJuror = coverage.avgReviewsPerProject?.toFixed(1) || '0' const unassignedCount = coverage.unassigned || 0 return ({totalProjects > 0 ? `${((totalAssigned / totalProjects) * 100).toFixed(1)}% coverage` : 'No projects'}
Assignments per juror
Projects below 3 reviews