From 979f68a47ed80b56f153b998a6b1c62f3ed54446 Mon Sep 17 00:00:00 2001 From: undefined Date: Sat, 23 Nov 2024 10:57:00 +0800 Subject: [PATCH] onsite-toolkit: skip CE --- .../onsite-toolkit/frontend/resolver.page.tsx | 19 ++++++++++++------- packages/onsite-toolkit/index.ts | 8 ++++---- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/packages/onsite-toolkit/frontend/resolver.page.tsx b/packages/onsite-toolkit/frontend/resolver.page.tsx index cb077d8ac..cfb3ce11f 100644 --- a/packages/onsite-toolkit/frontend/resolver.page.tsx +++ b/packages/onsite-toolkit/frontend/resolver.page.tsx @@ -38,6 +38,8 @@ interface ProblemStatus { frozen: number; pass: boolean; time: number; + index: number; + id?: string; } function status(problem: ProblemStatus) { @@ -72,9 +74,10 @@ export function start(data: ResolverInput, options: DisplaySettings) { pass: false, id: problem.id, index: idx, + time: 0, })), })); - const allSubmissions = data.submissions.sort((a, b) => a.time - b.time); + const allSubmissions = data.submissions.filter((i) => !['CE', 'SE', 'FE', 'IGN'].includes(i.verdict)).sort((a, b) => a.time - b.time); const allAc = allSubmissions.filter((i) => i.verdict === 'AC'); for (const submission of allSubmissions) { const team = teams.find((v) => v.id === submission.team); @@ -137,7 +140,7 @@ export function start(data: ResolverInput, options: DisplaySettings) { }, async revealProblem(teamId: string, problemId: string) { const team = teams.find((i) => i.id === teamId); - const problem: ProblemStatus = team?.problems.find((i) => i.id === problemId); + const problem = team?.problems.find((i) => i.id === problemId); if (!team || !problem) return; if (allAc.find((s) => s.team === teamId && s.problem === problemId)) { const sub = allSubmissions.filter((s) => s.team === teamId && s.problem === problemId); @@ -145,10 +148,10 @@ export function start(data: ResolverInput, options: DisplaySettings) { for (const s of sub) { problem.old++; if (s.verdict !== 'AC') { - penalty += 20 * 60; + penalty += 20; } else { problem.time = Math.floor(s.time / 60); - penalty += s.time; + penalty += Math.floor(s.time / 60); break; } } @@ -199,10 +202,10 @@ export function start(data: ResolverInput, options: DisplaySettings) { for (const s of sub) { problem.old++; if (s.verdict !== 'AC') { - penalty += 20 * 60; + penalty += 20; } else { problem.time = Math.floor(s.time / 60); - penalty += s.time; + penalty += Math.floor(s.time / 60); break; } } @@ -223,6 +226,7 @@ export function start(data: ResolverInput, options: DisplaySettings) { } } } + console.log(ops.length, 'operations'); return ops; }, [data]); @@ -266,6 +270,7 @@ export function start(data: ResolverInput, options: DisplaySettings) { {data.problems.map((v) => { const uncover = team.id === selectedTeam && selectedProblem === v.id; const problemStatus = team.problems.find((idx) => idx.id === v.id); + if (!problemStatus) return ERR; return {submissions(problemStatus)} ; @@ -273,7 +278,7 @@ export function start(data: ResolverInput, options: DisplaySettings) {
{team.score}
-
{Math.floor(team.penalty / 60)}
+
{team.penalty}
} />; })} diff --git a/packages/onsite-toolkit/index.ts b/packages/onsite-toolkit/index.ts index 1e4edfda9..2037f2c00 100644 --- a/packages/onsite-toolkit/index.ts +++ b/packages/onsite-toolkit/index.ts @@ -1,9 +1,9 @@ /* eslint-disable max-len */ import moment from 'moment'; import { - AdmZip, avatar, ContestModel, ContestNotEndedError, Context, db, findFileSync, ForbiddenError, - fs, - ObjectId, parseTimeMS, PERM, ProblemConfig, ProblemModel, STATUS, STATUS_SHORT_TEXTS, STATUS_TEXTS, Time, UserModel, + AdmZip, avatar, ContestModel, ContestNotEndedError, Context, db, findFileSync, + ForbiddenError, fs, ObjectId, parseTimeMS, PERM, ProblemConfig, ProblemModel, + STATUS, STATUS_SHORT_TEXTS, STATUS_TEXTS, Time, UserModel, } from 'hydrooj'; import { ResolverInput } from './interface'; @@ -69,7 +69,7 @@ export function apply(ctx: Context) { submissions: submissions.map((i) => ({ team: i.uid.toString(), problem: i.pid.toString(), - verdict: i.status === STATUS.STATUS_ACCEPTED ? 'AC' : 'RJ', + verdict: STATUS_SHORT_TEXTS[i.status], time: time(i.rid), })), } as ResolverInput,