diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index 96f47f066..418a928e7 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "3.17.10", + "version": "3.17.11", "bin": "bin/hydrooj.js", "main": "src/loader", "module": "src/loader", diff --git a/packages/hydrooj/src/model/contest.ts b/packages/hydrooj/src/model/contest.ts index 2dc600768..a45e0227d 100644 --- a/packages/hydrooj/src/model/contest.ts +++ b/packages/hydrooj/src/model/contest.ts @@ -32,7 +32,12 @@ interface AcmDetail extends AcmJournal { } function buildContestRule(def: ContestRule): ContestRule { - const _originalRule = { scoreboard: def.scoreboard, stat: def.stat }; + const _originalRule = { + scoreboard: def.scoreboard, + scoreboardRow: def.scoreboardRow, + scoreboardHeader: def.scoreboardHeader, + stat: def.stat, + }; def.scoreboard = (def._originalRule?.scoreboard || def.scoreboard).bind(def); def.scoreboardHeader = (def._originalRule?.scoreboardHeader || def.scoreboardHeader).bind(def); def.scoreboardRow = (def._originalRule?.scoreboardRow || def.scoreboardRow).bind(def); @@ -234,10 +239,7 @@ const oi = buildContestRule({ return columns; }, async scoreboardRow(isExport, _, tdoc, pdict, udoc, rank, tsdoc, meta) { - const tsddict = {}; - for (const item of tsdoc.journal || []) { - if (!tsddict[item.pid] || tsddict[item.pid].score < item.score || this.submitAfterAccept) tsddict[item.pid] = item; - } + const tsddict = tsdoc.detail; const row: ScoreboardNode[] = [ { type: 'rank', value: rank.toString() }, { type: 'user', value: udoc.uname, raw: tsdoc.uid },