Skip to content

Commit bece7ab

Browse files
committed
feat: update SubmissionDetails component to enhance layout and add Judge Info section
1 parent b33b4e7 commit bece7ab

File tree

1 file changed

+22
-19
lines changed

1 file changed

+22
-19
lines changed

app/(main)/submissions/page.tsx

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
// FILE: app/(main)/submissions/page.tsx
2-
31
"use client";
42
import useSWR from 'swr';
53
import api from '@/lib/api';
@@ -17,6 +15,7 @@ import { Clock, Code, Hash, Layers, Loader2, Server, Tag, User, XCircle } from '
1715
import { Progress } from "@/components/ui/progress";
1816
import { Button } from '@/components/ui/button';
1917
import { useToast } from '@/hooks/use-toast';
18+
import { Separator } from '@/components/ui/separator';
2019

2120
const fetcher = (url: string) => api.get(url).then(res => res.data.data);
2221

@@ -103,7 +102,7 @@ function QueuePosition({ submissionId, cluster }: { submissionId: string, cluste
103102
}
104103

105104

106-
// Component for submission details (from former [submissionId]/page.tsx)
105+
// --- [修改] Component for submission details ---
107106
function SubmissionDetails({ submissionId }: { submissionId: string }) {
108107
const { toast } = useToast();
109108
const { data: submission, error, isLoading, mutate } = useSWR<Submission>(`/submissions/${submissionId}`, fetcher, {
@@ -132,7 +131,7 @@ function SubmissionDetails({ submissionId }: { submissionId: string }) {
132131

133132
return (
134133
<div className="grid gap-6 lg:grid-cols-3">
135-
<div className="lg:col-span-2 space-y-6">
134+
<div className="lg:col-span-2">
136135
<Card>
137136
<CardHeader>
138137
<CardTitle>Live Log</CardTitle>
@@ -143,11 +142,13 @@ function SubmissionDetails({ submissionId }: { submissionId: string }) {
143142
</CardContent>
144143
</Card>
145144
</div>
145+
146+
{/* --- [修改] 右侧合并为一个卡片 --- */}
146147
<div className="space-y-6">
147148
<Card>
148149
<CardHeader>
149150
<div className="flex items-center justify-between">
150-
<CardTitle>Submission Details</CardTitle>
151+
<CardTitle>Submission Info</CardTitle>
151152
{canBeInterrupted && (
152153
<Button variant="destructive" size="sm" onClick={handleInterrupt}>
153154
<XCircle /> Interrupt
@@ -156,12 +157,13 @@ function SubmissionDetails({ submissionId }: { submissionId: string }) {
156157
</div>
157158
</CardHeader>
158159
<CardContent className="space-y-4 text-sm">
160+
{/* --- Submission Details Section --- */}
159161
<div className="flex items-center justify-between">
160162
<span className="text-muted-foreground flex items-center gap-2"><Hash className="h-4 w-4"/>Status</span>
161163
<SubmissionStatusBadge status={submission.status} />
162164
</div>
163165
{submission.status === 'Queued' && <QueuePosition submissionId={submission.id} cluster={submission.cluster} />}
164-
{(submission.status === 'Running') && totalSteps > 0 && (
166+
{(submission.status === 'Running') && totalSteps > 0 && (
165167
<div>
166168
<Progress value={progress} className="w-full" />
167169
<p className="text-xs text-muted-foreground mt-1">Step {submission.current_step + 1} of {totalSteps}: {problem?.workflow[submission.current_step]?.name}</p>
@@ -193,21 +195,22 @@ function SubmissionDetails({ submissionId }: { submissionId: string }) {
193195
<span className="text-muted-foreground flex items-center gap-2"><Server className="h-4 w-4"/>Node</span>
194196
<span>{submission.node || 'N/A'}</span>
195197
</div>
198+
199+
{/* --- [新增] Judge Info Section (conditionally rendered) --- */}
200+
{submission.info && Object.keys(submission.info).length > 0 && (
201+
<>
202+
<Separator className="my-4" />
203+
<div className="space-y-2">
204+
<h3 className="font-semibold tracking-tight">Judge Info</h3>
205+
<pre className="p-4 bg-muted rounded-md text-xs overflow-auto">
206+
{JSON.stringify(submission.info, null, 2)}
207+
</pre>
208+
<p className="text-xs text-muted-foreground">This is the raw JSON output from the final step of the judging process.</p>
209+
</div>
210+
</>
211+
)}
196212
</CardContent>
197213
</Card>
198-
{submission.info && Object.keys(submission.info).length > 0 && (
199-
<Card>
200-
<CardHeader><CardTitle>Judge Info</CardTitle></CardHeader>
201-
<CardContent>
202-
<pre className="p-4 bg-muted rounded-md text-xs overflow-auto">
203-
{JSON.stringify(submission.info, null, 2)}
204-
</pre>
205-
</CardContent>
206-
<CardFooter>
207-
<p className="text-xs text-muted-foreground">This is the raw JSON output from the final step of the judging process.</p>
208-
</CardFooter>
209-
</Card>
210-
)}
211214
</div>
212215
</div>
213216
);

0 commit comments

Comments
 (0)