diff --git a/packages/hydrojudge/src/flow.ts b/packages/hydrojudge/src/flow.ts index 11463acf1..95cc1177e 100644 --- a/packages/hydrojudge/src/flow.ts +++ b/packages/hydrojudge/src/flow.ts @@ -64,6 +64,7 @@ function judgeSubtask(subtask: NormalizedSubtask, sid: string, judgeCase: Task[' } ctx.total_status = Math.max(ctx.total_status, ctxSubtask.status); return { + type: ctxSubtask.subtask.type, score: ctxSubtask.score, status: ctxSubtask.status, }; diff --git a/packages/hydrooj/src/interface.ts b/packages/hydrooj/src/interface.ts index 60ee9c8e5..6995455ac 100644 --- a/packages/hydrooj/src/interface.ts +++ b/packages/hydrooj/src/interface.ts @@ -549,6 +549,7 @@ export interface JudgeMessage { } export interface SubtaskResult { + type: SubtaskType; score: number; status: number; } diff --git a/packages/ui-default/templates/record_detail_status.html b/packages/ui-default/templates/record_detail_status.html index e170f61cc..7b3e228b7 100644 --- a/packages/ui-default/templates/record_detail_status.html +++ b/packages/ui-default/templates/record_detail_status.html @@ -18,8 +18,7 @@
{{ formatJudgeTexts(rdoc.judgeTexts)|ansi|safe }}
{% endif %}
-{% if rdoc.testCases.length %}
- {% set _key = 'id' if rdoc.testCases|groupby('subtaskId')|length == 1 else 'subtaskId' %}
+{% if rdoc.testCases.length %}
| # | {{ _('Status') }} - {% if rdoc.subtasks and _key != 'id' %} + {% if rdoc.subtasks and (rdoc.subtasks|length > 1 or rdoc.subtasks[Object.keys(rdoc.subtasks)[0]].type == 'sum') %} {{ _('Score') }} {% endif %} | @@ -42,6 +41,7 @@
|---|
| - {{ model.builtin.STATUS_TEXTS[rcdocs[0]['status']] }} + {{ model.builtin.STATUS_TEXTS[rdoc.subtasks[subtaskId]['status']] }} {{ rdoc.subtasks[subtaskId]['score']|default(0) }} | @@ -71,9 +71,9 @@ {{ model.builtin.STATUS_TEXTS[rcdoc['status']] }} - {% if rcdocs.length == 1 and _key != 'id' %} - - {{ rdoc.subtasks[subtaskId]['score']|default(0) }} + {% if (_key != 'id' and rcdocs.length == 1) or (_key == 'id' and rdoc.subtasks[rcdoc.subtaskId].type == 'sum') %} + + {{ (rdoc.subtasks[subtaskId]['score'] if _key != 'id' else rcdoc.score)|default(0) }} {% endif %} {{ formatJudgeTexts([rcdoc.message]) if rcdoc.message else '' }}