mirror of
https://github.com/massbug/judge4c.git
synced 2025-05-17 14:56:36 +00:00
feat(submissions-table): add click handler to open details panel
This commit is contained in:
parent
2d06b778e6
commit
b35ef0208a
@ -1,3 +1,5 @@
|
||||
"use client";
|
||||
|
||||
import {
|
||||
Table,
|
||||
TableBody,
|
||||
@ -8,8 +10,9 @@ import {
|
||||
} from "@/components/ui/table";
|
||||
import { cn } from "@/lib/utils";
|
||||
import { Submission } from "@/generated/client";
|
||||
import { getStatusColorClass } from "@/lib/status";
|
||||
import { Clock4Icon, CpuIcon } from "lucide-react";
|
||||
import { getStatusColorClass } from "@/lib/status";
|
||||
import { useDockviewStore } from "@/stores/dockview";
|
||||
import { EditorLanguageIcons } from "@/config/editor-language-icons";
|
||||
import { formatDistanceToNow, isBefore, subDays, format } from "date-fns";
|
||||
|
||||
@ -18,10 +21,31 @@ interface SubmissionsTableProps {
|
||||
}
|
||||
|
||||
export default function SubmissionsTable({ submissions }: SubmissionsTableProps) {
|
||||
const { api, setSubmission } = useDockviewStore();
|
||||
const sortedSubmissions = [...submissions].sort(
|
||||
(a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime()
|
||||
);
|
||||
|
||||
const handleRowClick = (submission: Submission) => {
|
||||
if (!api) return;
|
||||
setSubmission(submission);
|
||||
const panel = api.getPanel("Details");
|
||||
if (panel) {
|
||||
panel.api.setActive();
|
||||
} else {
|
||||
api.addPanel({
|
||||
id: "Details",
|
||||
component: "Details",
|
||||
tabComponent: "Details",
|
||||
title: submission.status,
|
||||
position: {
|
||||
referencePanel: "Submissions",
|
||||
direction: "within",
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return (
|
||||
<Table>
|
||||
<TableHeader className="bg-transparent">
|
||||
@ -48,10 +72,13 @@ export default function SubmissionsTable({ submissions }: SubmissionsTableProps)
|
||||
return (
|
||||
<TableRow
|
||||
key={submission.id}
|
||||
className={cn(
|
||||
"border-b-0 hover:text-blue-500 hover:bg-muted",
|
||||
isEven ? "" : "bg-muted/50"
|
||||
)}
|
||||
onClick={() => handleRowClick(submission)}
|
||||
className={
|
||||
cn(
|
||||
"border-b-0 hover:text-blue-500 hover:bg-muted hover:cursor-pointer",
|
||||
isEven ? "" : "bg-muted/50"
|
||||
)
|
||||
}
|
||||
>
|
||||
<TableCell className="font-medium">
|
||||
{sortedSubmissions.length - index}
|
||||
@ -91,6 +118,6 @@ export default function SubmissionsTable({ submissions }: SubmissionsTableProps)
|
||||
);
|
||||
})}
|
||||
</TableBody>
|
||||
</Table>
|
||||
</Table >
|
||||
);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user