mirror of
https://github.com/massbug/judge4c.git
synced 2025-05-18 07:16:34 +00:00
feat(submissions): show language label alongside icon in submissions table
This commit is contained in:
parent
01c2cd6eef
commit
2a4d741a76
@ -10,6 +10,7 @@ import {
|
|||||||
} from "@/components/ui/table";
|
} from "@/components/ui/table";
|
||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
import { Submission } from "@/generated/client";
|
import { Submission } from "@/generated/client";
|
||||||
|
import { useProblem } from "@/hooks/use-problem";
|
||||||
import { Clock4Icon, CpuIcon } from "lucide-react";
|
import { Clock4Icon, CpuIcon } from "lucide-react";
|
||||||
import { getStatusColorClass } from "@/lib/status";
|
import { getStatusColorClass } from "@/lib/status";
|
||||||
import { useDockviewStore } from "@/stores/dockview";
|
import { useDockviewStore } from "@/stores/dockview";
|
||||||
@ -21,7 +22,9 @@ interface SubmissionsTableProps {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export default function SubmissionsTable({ submissions }: SubmissionsTableProps) {
|
export default function SubmissionsTable({ submissions }: SubmissionsTableProps) {
|
||||||
|
const { editorLanguageConfigs } = useProblem();
|
||||||
const { api, setSubmission } = useDockviewStore();
|
const { api, setSubmission } = useDockviewStore();
|
||||||
|
|
||||||
const sortedSubmissions = [...submissions].sort(
|
const sortedSubmissions = [...submissions].sort(
|
||||||
(a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime()
|
(a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime()
|
||||||
);
|
);
|
||||||
@ -29,6 +32,7 @@ export default function SubmissionsTable({ submissions }: SubmissionsTableProps)
|
|||||||
const handleRowClick = (submission: Submission) => {
|
const handleRowClick = (submission: Submission) => {
|
||||||
if (!api) return;
|
if (!api) return;
|
||||||
setSubmission(submission);
|
setSubmission(submission);
|
||||||
|
|
||||||
const panel = api.getPanel("Details");
|
const panel = api.getPanel("Details");
|
||||||
if (panel) {
|
if (panel) {
|
||||||
panel.api.setActive();
|
panel.api.setActive();
|
||||||
@ -44,7 +48,7 @@ export default function SubmissionsTable({ submissions }: SubmissionsTableProps)
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Table>
|
<Table>
|
||||||
@ -67,18 +71,17 @@ export default function SubmissionsTable({ submissions }: SubmissionsTableProps)
|
|||||||
const submittedDisplay = isBefore(createdAt, subDays(new Date(), 1))
|
const submittedDisplay = isBefore(createdAt, subDays(new Date(), 1))
|
||||||
? format(createdAt, "yyyy-MM-dd")
|
? format(createdAt, "yyyy-MM-dd")
|
||||||
: formatDistanceToNow(createdAt, { addSuffix: true });
|
: formatDistanceToNow(createdAt, { addSuffix: true });
|
||||||
|
|
||||||
const isEven = (submissions.length - index) % 2 === 0;
|
const isEven = (submissions.length - index) % 2 === 0;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<TableRow
|
<TableRow
|
||||||
key={submission.id}
|
key={submission.id}
|
||||||
onClick={() => handleRowClick(submission)}
|
onClick={() => handleRowClick(submission)}
|
||||||
className={
|
className={cn(
|
||||||
cn(
|
|
||||||
"border-b-0 hover:text-blue-500 hover:bg-muted hover:cursor-pointer",
|
"border-b-0 hover:text-blue-500 hover:bg-muted hover:cursor-pointer",
|
||||||
isEven ? "" : "bg-muted/50"
|
isEven ? "" : "bg-muted/50"
|
||||||
)
|
)}
|
||||||
}
|
|
||||||
>
|
>
|
||||||
<TableCell className="font-medium">
|
<TableCell className="font-medium">
|
||||||
{sortedSubmissions.length - index}
|
{sortedSubmissions.length - index}
|
||||||
@ -92,7 +95,16 @@ export default function SubmissionsTable({ submissions }: SubmissionsTableProps)
|
|||||||
</div>
|
</div>
|
||||||
</TableCell>
|
</TableCell>
|
||||||
<TableCell>
|
<TableCell>
|
||||||
|
<div className="flex items-center gap-2">
|
||||||
<Icon size={16} aria-hidden="true" />
|
<Icon size={16} aria-hidden="true" />
|
||||||
|
<span className="truncate text-sm font-semibold mr-2">
|
||||||
|
{
|
||||||
|
editorLanguageConfigs.find(
|
||||||
|
(config) => config.language === submission.language
|
||||||
|
)?.label
|
||||||
|
}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
</TableCell>
|
</TableCell>
|
||||||
<TableCell>
|
<TableCell>
|
||||||
<div className="flex items-center gap-1.5">
|
<div className="flex items-center gap-1.5">
|
||||||
|
Loading…
Reference in New Issue
Block a user