import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "@/components/ui/table"; import { Submission } from "@/generated/client"; import { getStatusColorClass } from "@/lib/status"; import { EditorLanguageIcons } from "@/config/editor-language-icons"; import { formatDistanceToNow, isBefore, subDays, format } from "date-fns"; interface SubmissionsTableProps { submissions: Submission[] } export default function SubmissionsTable({ submissions }: SubmissionsTableProps) { const sortedSubmissions = [...submissions].sort( (a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime() ) return ( Index Status Language Time Memory Submitted {sortedSubmissions.map((submission, index) => { const Icon = EditorLanguageIcons[submission.language]; const createdAt = new Date(submission.createdAt); const submittedDisplay = isBefore(createdAt, subDays(new Date(), 1)) ? format(createdAt, "yyyy-MM-dd") : formatDistanceToNow(createdAt, { addSuffix: true }); return ( {sortedSubmissions.length - index} {submission.status} {submission.executionTime} {submission.memoryUsage} {submittedDisplay} ); })}
) }