From e0db6c6d47075fc50dc46b9e3b412fb8d0edebb8 Mon Sep 17 00:00:00 2001 From: panda Date: Fri, 1 Dec 2023 06:52:10 +0800 Subject: [PATCH] core&ui: fix record display (#693) --- packages/hydrooj/src/handler/contest.ts | 6 ++++++ packages/ui-default/templates/components/record.html | 2 ++ packages/ui-default/templates/record_detail_status.html | 2 ++ packages/ui-default/templates/record_main_tr.html | 4 ++-- 4 files changed, 12 insertions(+), 2 deletions(-) diff --git a/packages/hydrooj/src/handler/contest.ts b/packages/hydrooj/src/handler/contest.ts index c74fd3d63..cbcfc60b1 100644 --- a/packages/hydrooj/src/handler/contest.ts +++ b/packages/hydrooj/src/handler/contest.ts @@ -280,6 +280,12 @@ export class ContestProblemListHandler extends ContestDetailBaseHandler { await record.getMulti(domainId, { contest: tid, uid: this.user._id }) .sort({ _id: -1 }).toArray(), ]); + if (!this.user.own(this.tdoc) && !this.user.hasPerm(PERM.PERM_EDIT_CONTEST)) { + this.response.body.rdocs = this.response.body.rdocs.map((rdoc) => contest.applyProjection(this.tdoc, rdoc, this.user)); + for (const psdoc of psdocs) { + this.response.body.rdict[psdoc.rid] = contest.applyProjection(this.tdoc, this.response.body.rdict[psdoc.rid], this.user); + } + } this.response.body.canViewRecord = true; } else { for (const i of psdocs) this.response.body.rdict[i.rid] = { _id: i.rid }; diff --git a/packages/ui-default/templates/components/record.html b/packages/ui-default/templates/components/record.html index d8d84417f..ffcf3fd29 100644 --- a/packages/ui-default/templates/components/record.html +++ b/packages/ui-default/templates/components/record.html @@ -6,7 +6,9 @@ href="{{ url('record_detail', rid=rdoc[rid_key], domainId=rdoc.domainId) if allDomain else url('record_detail', rid=rdoc[rid_key]) }}" class="record-status--text {{ model.builtin.STATUS_CODES[rdoc.status] }}" > + {% if typeof(rdoc['score']) == 'number' %} {{ rdoc.score|default(0) }} + {% endif %} {{ model.builtin.STATUS_SHORT_TEXTS[rdoc.status] if short else model.builtin.STATUS_TEXTS[rdoc.status] }} diff --git a/packages/ui-default/templates/record_detail_status.html b/packages/ui-default/templates/record_detail_status.html index 11734f96a..f2ccb4723 100644 --- a/packages/ui-default/templates/record_detail_status.html +++ b/packages/ui-default/templates/record_detail_status.html @@ -2,7 +2,9 @@

+ {% if typeof(rdoc['score']) == 'number' %} {{ rdoc.score|default(0) }} + {% endif %} {{ model.builtin.STATUS_TEXTS[rdoc['status']] }} diff --git a/packages/ui-default/templates/record_main_tr.html b/packages/ui-default/templates/record_main_tr.html index 4221d8f20..dfe9b97f6 100644 --- a/packages/ui-default/templates/record_main_tr.html +++ b/packages/ui-default/templates/record_main_tr.html @@ -35,8 +35,8 @@ {% endif %} - {% if [STATUS.STATUS_TIME_LIMIT_EXCEEDED, STATUS.STATUS_MEMORY_LIMIT_EXCEEDED, STATUS.STATUS_OUTPUT_LIMIT_EXCEEDED].includes(rdoc['status']) %}≥{% endif %}{{ rdoc.time|round|int }}ms - {% if [STATUS.STATUS_TIME_LIMIT_EXCEEDED, STATUS.STATUS_MEMORY_LIMIT_EXCEEDED, STATUS.STATUS_OUTPUT_LIMIT_EXCEEDED].includes(rdoc['status']) %}≥{% endif %}{{ size(rdoc.memory, 1024) }} + {% if rdoc['time'] %}{% if [STATUS.STATUS_TIME_LIMIT_EXCEEDED, STATUS.STATUS_MEMORY_LIMIT_EXCEEDED, STATUS.STATUS_OUTPUT_LIMIT_EXCEEDED].includes(rdoc['status']) %}≥{% endif %}{{ rdoc.time|round|int }}ms{% else %}-{% endif %} + {% if rdoc['memory'] %}{% if [STATUS.STATUS_TIME_LIMIT_EXCEEDED, STATUS.STATUS_MEMORY_LIMIT_EXCEEDED, STATUS.STATUS_OUTPUT_LIMIT_EXCEEDED].includes(rdoc['status']) %}≥{% endif %}{{ size(rdoc.memory, 1024) }}{% else %}-{% endif %} {{ model.setting.langs[rdoc['lang']].display }} {{ datetimeSpan(rdoc['_id'])|safe }}