Skip to content
Snippets Groups Projects

Prázdné protokoly

1 file
+ 2
6
Compare changes
  • Side-by-side
  • Inline
@@ -5,12 +5,15 @@
{% set edit_points = not ctx.site and rights.can_edit_points() %}
{% set edit_create = rights.can_create_solutions() %}
{% set edit_both = edit_points and edit_create %}
{% set edit = edit_points or edit_create %}
{% set edit_title = "Editace řešení" if edit_form else "Odevzdaná řešení" %}
{% set edit_tip = 'Založit řešení nebo editovat body' if edit_both else 'Editovat body' if edit_points else 'Založit řešení' %}
{% block title %}
{{ "Založení řešení" if edit_form else "Tabulka řešení" }} {% if site %}soutěžního místa {{ site.name }}{% else %}{{ contest.place.name_locative() }}{% endif %}
{{ edit_title }} {% if site %}soutěžního místa {{ site.name }}{% else %}{{ contest.place.name_locative() }}{% endif %}
{% endblock %}
{% block breadcrumbs %}
{{ ctx.breadcrumbs(action="Založení řešení" if edit_form else "Tabulka řešení") }}
{{ ctx.breadcrumbs(action=edit_title) }}
{% endblock %}
{% block pretitle %}
@@ -26,14 +29,25 @@
<p><i>
{% if edit_form %}
Zaškrtnutím políček u řešení, která dosud neexistují, a odesláním tlačítkem pod tabulkou tato řešení založíte.
To se hodí, pokud se nechystáte do systému nahrávat soubory řešení, ale jen chcete řešení vytvořit, aby jim
bylo možné vyplnit body. Pokud nějaké řešení založíte omylem, lze toto prázdné řešení smazat v jeho detailu.
{% if edit_points %}
Zde můžete bodovat odevzdaná řešení.
{% else %}
Zde můžete zakládat a rušit odevzdaná řešení.
{% endif %}
Prázdná hodnota ve sloupečku „Přidělené body“ znamená „neobodováno“,
hodnota X znamená „řešení nebylo odevzdáno“,
P znamená „prázdný protokol, který neobsahuje řešení“.
{% if edit_create %}
Smazáním X založíte nové řešení – to se hodí, pokud se nechystáte do systému nahrávat soubory řešení,
ale jen chcete řešení vytvořit, aby jim bylo možné vyplnit body.
Pokud nějaké řešení založíte omylem, lze toto prázdné řešení smazat přepsáním bodů zpět na X.
{% endif %}
{% else %}
Všechna odevzdání od účastníka k úloze můžete vidět po kliknutí na ikonku <span class="icon">🔍</span>.
Tamtéž můžete nahrávat skeny jednotlivých řešení.
Odkazem v záhlaví se lze dostat na detailní výpis odevzdání všech uživatelů pro
konkrétní úlohu. Symbol <span class="icon">🗐</span> značí, že existuje více verzí dostupných v detailu.
Hromadné úpravy můžete provádět pomocí tlačítka Editovat.
{% endif %}
</i></p>
@@ -54,12 +68,15 @@ konkrétní úlohu. Symbol <span class="icon">🗐</span> značí, že existuje
{% for task in tasks %}<th colspan=4>
<a href="{{ ctx.url_for('org_contest_task', task_id=task.task_id) }}">{{ task.code }}</a>
{% endfor %}
{% if not edit_form %}
<th rowspan=2>Body celkem
{% endif %}
</tr>
<tr>
{% for task in tasks %}<th title="Řešení">Řeš<th title="Oprava">Opr<th title="Body">B<th title="Detail"><span class="icon">🔍</span>{% endfor %}
</tr>
</thead>
{% set tabindex = namespace(value=1) %}
{% for pion in pions %}
{% set u = pion.user %}
<tr class="state-{{ pion.state.name }}">
@@ -67,8 +84,8 @@ konkrétní úlohu. Symbol <span class="icon">🗐</span> značí, že existuje
<td>{{ pion.state.friendly_name() }}
{% set sum_points = [] %}
{% for task in tasks %}
{% if u.user_id in tasks_sols[task.task_id] %}
{% set sol = tasks_sols[task.task_id][u.user_id] %}
{% set sol = tasks_sols[task.task_id].get(u.user_id) %}
{% if sol %}
{% if sol.final_submit_obj %}
{% set p = sol.final_submit_obj %}
{% set late = p.check_deadline(round) %}
@@ -92,29 +109,43 @@ konkrétní úlohu. Symbol <span class="icon">🗐</span> značí, že existuje
{% else %}
<td class="sol">
{% endif %}
<td class="sol">
{% if sol.points is not none %}
{{ sol.points|decimal }}
{% if sum_points.append(sol.points) %}{% endif %}
{% elif edit_form %}
<td>
<td>
{% else %}
<span class="unknown">?</span>
<td colspan=3>
{% endif %}
<td class="sol">
{% else %}
<td colspan=3>
{% if edit_form %}
<label>
<input type="checkbox" name="create_sol_{{task.task_id}}_{{u.user_id}}">
Založit
</label>
{% else %}–{% endif %}
<td>
{% set key = '{}_{}'.format(task.task_id, pion.user_id) %}
{% set def_pts = sol | sol_editable_points %}
{% set new_pts = request_form.get("points_{}".format(key)) %}
{% set err = edit_errors[key] %}
<td><input
type="text" class="form-control{% if err %} has-error{% endif %}" name="points_{{key}}"
value="{{ new_pts|none_value(def_pts) }}"
oninput="this.classList.toggle('modified', this.value != '{{ def_pts }}')"
size="4" tabindex={{ tabindex.value }} autofocus
data-sol="{% if sol %}1{% else %}0{% endif %}"
{% if not edit_create %}
disabled
{% endif %}
{% if err %}
title="{{ err }}"
{% endif %}
>
{% elif sol %}
<td class="sol">
{{ sol|sol_display_points }}
{% if sol.points is not none %}{% do sum_points.append(sol.points) %}{% endif %}
{% endif %}
<a class="btn btn-xs btn-link icon" title="Detail řešení" href="{{ ctx.url_for('org_submit_list', user_id=u.user_id, task_id=task.task_id) }}">🔍</a>
<td{% if sol %} class="sol"{% endif %}><a class="btn btn-xs btn-link icon" title="Detail řešení" href="{{ ctx.url_for('org_submit_list', user_id=u.user_id, task_id=task.task_id) }}">🔍</a>
{% endfor %}
{% if not edit_form %}
<th>{{ sum_points|sum|decimal }}</th>
{% endif %}
</tr>
{% endfor %}
{% if not edit_form %}
<tfoot>
<tr><td><td>
{% for task in tasks %}
@@ -124,15 +155,17 @@ konkrétní úlohu. Symbol <span class="icon">🗐</span> značí, že existuje
<a class='btn btn-xs btn-primary' href="{{ ctx.url_for('org_generic_batch_upload', task_id=task.task_id) }}">Nahrát</a>
{% endif %}
{% if edit_points or edit_create %}
<a class='btn btn-xs btn-primary' title="{{'Založit řešení nebo editovat body' if edit_both else 'Editovat body' if edit_points else 'Založit řešení'}}" href="{{ ctx.url_for('org_contest_task_edit', task_id=task.task_id) }}">Editovat</a>
<a class='btn btn-xs btn-primary' title="{{ edit_tip }}" href="{{ ctx.url_for('org_contest_task_edit', task_id=task.task_id) }}">Editovat</a>
{% endif %}
</div>
{% endfor %}
<td>
</tfoot>
{% endif %}
</table>
{% if edit_form %}
{% include "parts/org_solution_js.html" %}
<div class='btn-group'>
{{ wtf.form_field(edit_form.submit, class="btn btn-primary") }}
<a class="btn btn-default" href="{{ ctx.url_for('org_contest_solutions') }}">Zrušit</a>
@@ -141,7 +174,7 @@ konkrétní úlohu. Symbol <span class="icon">🗐</span> značí, že existuje
{% else %}
<div class='btn-group'>
{% if rights.can_create_solutions() %}
<a class="btn btn-primary" href="{{ ctx.url_for('org_contest_solutions_edit') }}">Založit řešení hromadně</a>
<a class="btn btn-primary" href="{{ ctx.url_for('org_contest_solutions_edit') }}" title="{{ edit_tip }}">Editovat</a>
{% endif %}
</div>
{% endif %}
Loading