'use client' import { useState } from 'react' import { useParams, useRouter } from 'next/navigation' import { ArrowLeft, PlayCircle } from 'lucide-react' import { trpc } from '@/lib/trpc/client' import { Button } from '@/components/ui/button' import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card' import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '@/components/ui/select' import { Skeleton } from '@/components/ui/skeleton' import { CoverageReport } from '@/components/admin/assignment/coverage-report' import { AssignmentPreviewSheet } from '@/components/admin/assignment/assignment-preview-sheet' import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs' export default function AssignmentsDashboardPage() { const params = useParams() const router = useRouter() const competitionId = params.competitionId as string const [selectedRoundId, setSelectedRoundId] = useState('') const [previewSheetOpen, setPreviewSheetOpen] = useState(false) const { data: competition, isLoading: isLoadingCompetition } = trpc.competition.getById.useQuery({ id: competitionId, }) const { data: unassignedQueue, isLoading: isLoadingQueue } = trpc.roundAssignment.unassignedQueue.useQuery( { roundId: selectedRoundId, requiredReviews: 3 }, { enabled: !!selectedRoundId } ) const rounds = competition?.rounds || [] const currentRound = rounds.find((r) => r.id === selectedRoundId) if (isLoadingCompetition) { return (
) } if (!competition) { return (

Competition not found

) } return (

Assignment Dashboard

Manage jury assignments for rounds

Select Round Choose a round to view and manage assignments {selectedRoundId && (
Coverage Report Unassigned Queue Unassigned Projects Projects with fewer than 3 assignments {isLoadingQueue ? (
{[1, 2, 3].map((i) => ( ))}
) : unassignedQueue && unassignedQueue.length > 0 ? (
{unassignedQueue.map((project: any) => (

{project.title}

{project.competitionCategory || 'No category'}

{project.assignmentCount || 0} / 3 assignments
))}
) : (

All projects have sufficient assignments

)}
)}
) }