From 41b446fba2e6e12ebe706e8961f28faf5d587d00 Mon Sep 17 00:00:00 2001 From: Martin Mares <mj@ucw.cz> Date: Mon, 15 May 2023 22:50:00 +0200 Subject: [PATCH] =?UTF-8?q?Score:=20Statistiky=20pod=20v=C3=BDsledkovou=20?= =?UTF-8?q?listinou?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mo/score.py | 6 ++++++ mo/web/org_score.py | 4 +++- mo/web/templates/org_score.html | 20 ++++++++++++++++++++ 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/mo/score.py b/mo/score.py index 24a211a3..ebb9cd97 100644 --- a/mo/score.py +++ b/mo/score.py @@ -280,6 +280,12 @@ class Score: tasks.append(task.task) return list(sorted(tasks, key=lambda task: task.code)) + def get_task_difficulties(self) -> Dict[db.Task, Fraction]: + diffs = {} + for task in self._tasks[0].values(): + diffs[task.task] = task.get_difficulty() + return diffs + def _add_message(self, type: str, message: str): self._messages.append((type, message)) diff --git a/mo/web/org_score.py b/mo/web/org_score.py index e004e44b..88b58005 100644 --- a/mo/web/org_score.py +++ b/mo/web/org_score.py @@ -90,6 +90,7 @@ def org_score(round_id: Optional[int] = None, hier_id: Optional[int] = None, ct_ score = Score(round.master, contest, ctx.hier_place) tasks = score.get_tasks() + difficulties = score.get_task_difficulties() results = score.get_sorted_results() messages = score.get_messages() @@ -249,8 +250,9 @@ def org_score(round_id: Optional[int] = None, hier_id: Optional[int] = None, ct_ return render_template( 'org_score.html', ctx=ctx, - tasks=tasks, + tasks=tasks, difficulties=difficulties, table=table, messages=messages, + num_results=len(results), group_rounds=group_rounds, snapshots_count=snapshots_count, edit_form=edit_form, snapshot_form=snapshot_form, diff --git a/mo/web/templates/org_score.html b/mo/web/templates/org_score.html index ea19c22d..c79e824d 100644 --- a/mo/web/templates/org_score.html +++ b/mo/web/templates/org_score.html @@ -90,6 +90,26 @@ Rozkliknutím bodů se lze dostat na detail daného řešení.</p> {{ table.to_html() }} +<div class="collapsible"> + <input type="checkbox" class="toggle" id="stats-toggle"> + <label for="stats-toggle" class="toggle toggle-small"> + Statistiky + </label> + <div class="collapsible-inner"> + <ul> + <li>Listina obsahuje celkem {{ num_results|inflected('účastníka', 'účastníky', 'účastníků') }}. + {% if num_results > 0 %} + <li>Průměrné počty bodů za úlohy: + <ul> + {% for t in tasks %} + <li>{{ t.code }}: {{ difficulties[t] }} + {% endfor %} + </ul> + {% endif %} + </ul> + </div> +</div> + {% if edit_form %} {{ wtf.form_field(edit_form.submit, class="btn btn-primary pull-right") }} </form> -- GitLab