-
- {#if updating}
-
- {/if}
-
Last Updated: {data.timestamp.toLocaleTimeString()}
-
+
+ {#if updating}
+
+ {/if}
+
Last Updated: {data.timestamp.toLocaleTimeString()}
-
-
-
- Team Name |
- {#each data.problems as problem}
- {problem.friendlyName} |
- {/each}
- Total Correct |
- Total Points |
-
-
-
- {#each data.teams as team}
+{#each data.contests as contest}
+ {contest.name}
+
+
+
+
- {team.name} |
- {#each data.problems as _}
- -/- |
+ Place |
+ Team Name |
+ Solves |
+ Time |
+ {#each contest.problems as problem}
+ {problem.friendlyName} |
{/each}
- 0 |
- 0 |
- {/each}
-
-
+
+
+ {#each contest.teams as team, i}
+
+ {i + 1} |
+ {team.name} |
+ {team.solves} |
+ {team.time.toFixed(0)} |
+ {#each contest.problems as problem}
+
+
+
+ {#if team.problems.find((p) => {
+ return p.id === problem.id;
+ })?.graphic !== null}
+ {
+ return p.id === problem.id;
+ })?.graphic === 'correct'
+ ? '/correct.png'
+ : '/incorrect.png'}
+ alt="check or X"
+ width="30px"
+ />
+ {/if}
+
+
+ {#if team.problems.find((p) => {
+ return p.id === problem.id;
+ })?.attempts !== 0}
+ {team.problems.find((p) => {
+ return p.id === problem.id;
+ })?.attempts}
+ {team.problems.find((p) => {
+ return p.id === problem.id;
+ })?.attempts === 1
+ ? 'Attempt'
+ : 'Attempts'} {#if team.problems.find((p) => {
+ return p.id === problem.id;
+ })?.min}{team.problems
+ .find((p) => {
+ return p.id === problem.id;
+ })
+ ?.min?.toFixed(0)} min{/if}
+ {/if}
+
+
+ |
+ {/each}
+
+ {/each}
+
+
+{/each}
diff --git a/web/src/routes/admin/submissions/[submissionId]/+page.server.ts b/web/src/routes/admin/submissions/[submissionId]/+page.server.ts
index 98b5202..4a86ec2 100644
--- a/web/src/routes/admin/submissions/[submissionId]/+page.server.ts
+++ b/web/src/routes/admin/submissions/[submissionId]/+page.server.ts
@@ -1,8 +1,6 @@
import { error, redirect } from '@sveltejs/kit';
-import type { PageServerLoad } from './$types';
+import type { Actions, PageServerLoad } from './$types';
import { db } from '$lib/server/prisma';
-import * as Diff from 'diff';
-import { SubmissionState } from '@prisma/client';
export const load = (async ({ params }) => {
const submissionId = parseInt(params.submissionId);
@@ -21,16 +19,6 @@ export const load = (async ({ params }) => {
if (!problem) {
throw error(500, 'Invalid problem');
}
- let diff: string | null = null;
- if (submission.state == SubmissionState.Incorrect) {
- diff = Diff.createTwoFilesPatch(
- 'expected',
- 'actual',
- problem.realOutput,
- submission.actualOutput!
- );
- }
-
return {
id: submission.id,
state: submission.state,
@@ -39,6 +27,18 @@ export const load = (async ({ params }) => {
submitTime: submission.createdAt,
gradedTime: submission.gradedAt,
message: submission.message,
- diff: diff
+ diff: submission.diff
};
}) satisfies PageServerLoad;
+
+export const actions = {
+ delete: async ({ params }) => {
+ const submissionId = parseInt(params.submissionId);
+ try {
+ await db.submission.delete({ where: { id: submissionId } });
+ } catch {
+ return { success: false };
+ }
+ throw redirect(302, '/admin/submissions');
+ }
+} satisfies Actions;
diff --git a/web/src/routes/admin/submissions/[submissionId]/+page.svelte b/web/src/routes/admin/submissions/[submissionId]/+page.svelte
index 4c39039..d009239 100644
--- a/web/src/routes/admin/submissions/[submissionId]/+page.svelte
+++ b/web/src/routes/admin/submissions/[submissionId]/+page.svelte
@@ -1,22 +1,27 @@
@@ -27,7 +32,31 @@
Submission
-
All Submissions
+{#if form && !form.success}
+
Error
+{/if}
+
+
diff --git a/web/src/routes/api/submission/+server.ts b/web/src/routes/api/submission/+server.ts
index bb455e5..d52053c 100644
--- a/web/src/routes/api/submission/+server.ts
+++ b/web/src/routes/api/submission/+server.ts
@@ -64,8 +64,8 @@ export const POST = (async ({ request }) => {
const diff = Diff.createTwoFilesPatch(
'expected',
'actual',
- data.data.output,
- submission.actualOutput!
+ submission.problem.realOutput,
+ data.data.output
);
await db.submission.update({
where: { id: data.data.submissionId },
diff --git a/web/static/correct.png b/web/static/correct.png
new file mode 100644
index 0000000..02bea8a
Binary files /dev/null and b/web/static/correct.png differ
diff --git a/web/static/incorrect.png b/web/static/incorrect.png
new file mode 100644
index 0000000..67aa69e
Binary files /dev/null and b/web/static/incorrect.png differ