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 %}
@@ -33,7 +32,7 @@ @@ -42,6 +41,7 @@ + {% set _key = 'id' if rdoc.testCases|groupby('subtaskId')|length == 1 else 'subtaskId' %} {%- for subtaskId, rcdocs in rdoc.testCases|sort(false,false,_key)|groupby(_key) -%} {% if rcdocs.length > 1 %} @@ -52,7 +52,7 @@ @@ -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 '' }}
# {{ _('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 %}
- {{ model.builtin.STATUS_TEXTS[rcdocs[0]['status']] }} + {{ model.builtin.STATUS_TEXTS[rdoc.subtasks[subtaskId]['status']] }} {{ rdoc.subtasks[subtaskId]['score']|default(0) }}