From 204f0da7426738ac6bb0d68be57e305690cde23c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Pracha=C5=99?= <jan.prachar@gmail.com> Date: Mon, 23 May 2022 19:27:55 +0200 Subject: [PATCH] =?UTF-8?q?org=5Fround:=20P=C5=99ed=C4=9Blan=C3=A1=20str?= =?UTF-8?q?=C3=A1nka=20kola?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Tabulka s jednotlivými soutěžemi / podoblastmi je hned vlevo nahoře. * Metadata ke kolu jsou rozdělena do tří panelů na pravé straně. Každý panel mé kontextově odpovídající tlačítka na další akce. --- mo/web/templates/org_round.html | 170 +++++++++++++++++++++----------- 1 file changed, 113 insertions(+), 57 deletions(-) diff --git a/mo/web/templates/org_round.html b/mo/web/templates/org_round.html index 39e4b99a..5e4447a7 100644 --- a/mo/web/templates/org_round.html +++ b/mo/web/templates/org_round.html @@ -10,86 +10,140 @@ {% set can_add_contest = g.gatekeeper.rights_generic().have_right(Right.add_contest) %} {% block title %} - {{ round.name }} kategorie {{ round.category }}{% if in_hier %}: {{ ctx.hier_place.name }}{% endif %} + {{ round.name }} {{ round.category }}{% if in_hier %}: {{ ctx.hier_place.name }}{% endif %} {% endblock %} {% block breadcrumbs %} {{ ctx.breadcrumbs() }} {% endblock %} {% block body %} +<div class="row"> -<table class="table table-bordered table-condensed table-auto"> - <tr><td>Moje role<td>{% if g.user.is_admin %}správce{% elif roles %}{{ roles|join(", ") }}{% else %}–{% endif %} - {% if group_rounds|length > 1 %} - <tr><td>Skupina kol<td> - {% for r in group_rounds %} - {% if r == round %}{{ r.name }} {{ r.category }}<br> - {% else %}<a href="{{ url_for('org_round', round_id=r.round_id) }}">{{ r.name }} {{ r.category }}</a><br> - {% endif %} - {% endfor %} +<div class="col-md-5 col-md-push-7"> +<div class="panel panel-default"> + <table class="table table-bordered"> + <tr><td>Stav kola<td>{{ round.state.friendly_name() }} + <tr> + <td>Zadání úloh + <td> + {% if offer_view_statement %} + <a class="btn btn-default" href='{{ ctx.url_for('org_task_statement') }}'> + <img class="media-object" src="{{ url_for('static', filename='img/pdficon.svg') }}" alt="PDF" style="width: 24px; display: inline-block"> + Stáhnout + </a> + {% else %} + {{ offer_view_statement_reason }} + {% endif %} + <tr><td>Moje role<td>{% if g.user.is_admin %}správce{% elif roles %}{{ roles|join(", ") }}{% else %}–{% endif %} + {% if group_rounds|length > 1 %} + <tr><td>Skupina kol<td> + {% for r in group_rounds %} + {% if r == round %}{{ r.name }} {{ r.category }}<br> + {% else %}<a href="{{ url_for('org_round', round_id=r.round_id) }}">{{ r.name }} {{ r.category }}</a><br> + {% endif %} + {% endfor %} + {% endif %} + </table> + <div class="panel-footer"> + {% if can_manage_round %} + <a class="btn btn-sm btn-default" href='{{ ctx.url_for('org_edit_statement') }}'> + <span class="glyphicon glyphicon-file"></span> + Zadání + </a> + <a class="btn btn-sm btn-default" href='{{ ctx.url_for('org_round_edit') }}'> + <span class="glyphicon glyphicon-cog"></span> + Nastavení + </a> {% endif %} - <tr><td>Stav<td>{{ round.state.friendly_name() }} - {% with state=round.ct_state() %} - <tr><td>Stav pro účastníky<td>{{ state.friendly_name() }} - {% endwith %} - <tr><td>Režim přihlašování<td>{{ round.enroll_mode.friendly_name() }} - <tr><td>Popis v přihlášce<td>{{ round.enroll_advert }} - <tr> - <td>Účastníci vidí zadání a odevzdávají - <td>{{ round.ct_tasks_start|timeformat if round.ct_tasks_start else Markup('<i>nenastaveno</i>') }} – {{ round.ct_submit_end|timeformat if round.ct_submit_end else Markup('<i>nenastaveno</i>') }} - <tr> - <td>Dozor vidí zadání a odevzdává - <td>{{ round.pr_tasks_start|timeformat if round.pr_tasks_start else Markup('<i>nenastaveno</i>') }} – {{ round.pr_submit_end|timeformat if round.pr_submit_end else Markup('<i>nenastaveno</i>') }} - <tr><td>Zadání<td> -{% if round.tasks_file %} - {% if not statement_exists %} - <span class=error>soubor neexistuje</span> - {% elif offer_view_statement %} - <a href='{{ ctx.url_for('org_task_statement') }}'>stáhnout</a> - {% else %} - není dostupné + {% if round.has_messages %} + <a class="btn btn-sm btn-default" href='{{ ctx.url_for('org_round_messages') }}'> + <span class="glyphicon glyphicon-phone"></span> + Zprávičky + </a> {% endif %} -{% else %} - – -{% endif %} - <tr><th colspan=2>Nastavení výsledkové listiny{% if round.is_subround() %} - <i>(přejato z <a href="{{ url_for('org_round', round_id=round.master.round_id) }}">{{ round.master.round_code() }}</a>)</i> + {% if g.user.is_admin and not in_hier %} + <a class="btn btn-sm btn-info" href='{{ log_url('round', round.round_id) }}'>Historie</a> {% endif %} - <tr><td>Výsledková listina<td>{{ round.master.score_mode.friendly_name() }} - <tr><td>Hranice bodů pro vítěze<td>{{ round.master.score_winner_limit|decimal|none_value(Markup('<i>nenastaveno</i>')) }} - <tr><td>Podmínka pro úspěšné řešitele<td>{% if round.master.score_successful_limit is not none %}{{ round.master.score_successful_limit|decimal }} bodů{% if round.master.tasks_successful_limit is not none %}, {{ round.master.tasks_successful_limit|inflected("úspěšná úloha", "úspěšné úlohy", "úspěšných úloh") }}{% endif %}{% else %}<i>nenastaveno</i>{% endif %} - <tr><td>Přesnost bodování<td>{{ round.master.points_step_name() }} -</table> -<div style="clear: both;"></div> + </div> +</div> -{% if can_view_contestants or can_manage_contest or can_manage_round or round.has_messages %} -<div> +<div class="panel panel-default"> + <div class="panel-heading"> + <h3 class="panel-title"> + <span class="glyphicon glyphicon-time"></span> + Přihláška a termíny + </h3> + </div> + <table class="table table-bordered"> + <tr><td>Režim přihlašování<td>{{ round.enroll_mode.friendly_name() }} + <tr><td>Popis v přihlášce<td>{{ round.enroll_advert }} + <tr> + <td>Účastníci vidí zadání a odevzdávají + <td>{{ round.ct_tasks_start|timeformat if round.ct_tasks_start else Markup('<i>nenastaveno</i>') }} – {{ round.ct_submit_end|timeformat if round.ct_submit_end else Markup('<i>nenastaveno</i>') }} + <tr> + <td>Dozor vidí zadání a odevzdává + <td>{{ round.pr_tasks_start|timeformat if round.pr_tasks_start else Markup('<i>nenastaveno</i>') }} – {{ round.pr_submit_end|timeformat if round.pr_submit_end else Markup('<i>nenastaveno</i>') }} + </table> + <div class="panel-footer"> {% if can_view_contestants %} - <a class="btn btn-primary" href='{{ ctx.url_for('org_generic_list') }}'>Seznam účastníků</a> - {% endif %} - {% if (can_view_contestants and round.state in [RoundState.grading, RoundState.delegate] or round.state == RoundState.closed) %} - <a class="btn btn-warning" href='{{ ctx.url_for('org_score') }}'>Výsledky</a> + <a class="btn btn-sm btn-primary" href='{{ ctx.url_for('org_generic_list') }}'> + <span class="glyphicon glyphicon-user"></span> + Seznam účastníků + </a> {% endif %} {% if can_manage_contest %} - <a class="btn btn-default" href='{{ ctx.url_for('org_generic_import') }}'>Importovat data</a> + <a class="btn btn-sm btn-default" href='{{ ctx.url_for('org_generic_import') }}'> + <span class="glyphicon glyphicon-import"></span> + Importovat data + </a> {% endif %} {% if can_manage_round %} - <a class="btn btn-default" href='{{ ctx.url_for('org_round_edit') }}'>Nastavení a termíny</a> - <a class="btn btn-default" href='{{ ctx.url_for('org_edit_statement') }}'>Zadání</a> + <a class="btn btn-sm btn-default" href='{{ ctx.url_for('org_round_edit') }}'> + <span class="glyphicon glyphicon-cog"></span> + Nastavení + </a> {% endif %} - {% if round.has_messages %} - <a class="btn btn-default" href='{{ ctx.url_for('org_round_messages') }}'>Zprávičky</a> + </div> +</div> + +<div class="panel panel-default"> + <div class="panel-heading"> + {% if round.is_subround() %} + <small class="pull-right">přejato z <a href="{{ url_for('org_round', round_id=round.master.round_id) }}">{{ round.master.round_code() }}</a></small> + {% endif %} + <h3 class="panel-title"> + <span class="glyphicon glyphicon-stats"></span> + Výsledková listina + </h3> + </div> + <table class="table table-bordered"> + <tr><td>Pořadí<td>{{ round.master.score_mode.friendly_name() }} + <tr><td>Hranice bodů pro vítěze<td>{{ round.master.score_winner_limit|decimal|none_value(Markup('<i>nenastaveno</i>')) }} + <tr><td>Podmínka pro úspěšné řešitele<td>{% if round.master.score_successful_limit is not none %}{{ round.master.score_successful_limit|decimal }} bodů{% if round.master.tasks_successful_limit is not none %}, {{ round.master.tasks_successful_limit|inflected("úspěšná úloha", "úspěšné úlohy", "úspěšných úloh") }}{% endif %}{% else %}<i>nenastaveno</i>{% endif %} + <tr><td>Přesnost bodování<td>{{ round.master.points_step_name() }} + </table> + <div class="panel-footer"> + {% if (can_view_contestants and round.state in [RoundState.grading, RoundState.delegate] or round.state == RoundState.closed) %} + <a class="btn btn-sm btn-warning" href='{{ ctx.url_for('org_score') }}'> + <span class="glyphicon glyphicon-bullhorn"></span> + Výsledky + </a> {% endif %} - {% if g.user.is_admin and not in_hier %} - <a class="btn btn-info" href='{{ log_url('round', round.round_id) }}'>Historie</a> + {% if can_manage_round %} + <a class="btn btn-sm btn-default" href='{{ ctx.url_for('org_round_edit') }}'> + <span class="glyphicon glyphicon-cog"></span> + Nastavení + </a> {% endif %} + </div> +</div> </div> -{% endif %} -<h3>Soutěže</h3> +<div class="col-md-7 col-md-pull-5"> +<h3 class="visible-sm visible-xs">Soutěže</h3> {% if reg_total.num_contests %} {% set show_contests = reg_stats[0].contest != None %} - <table class="table table-bordered table-condensed table-auto"> + <table class="table table-bordered"> <thead> <tr> {% if show_contests %} @@ -153,6 +207,8 @@ {{ wtf.form_field(form_add_contest.create_contest) }} </form> {% endif %} +</div> +</div> <h3>Úlohy</h3> {% if task_info %} -- GitLab