{# Rozhraní: - ctx - rights - round - contest - for_user (máme vypsat submity účastníka pro všechny úlohy) - for_task (máme vypsat submity všech účastníků pro jednu úlohu) - rows: - režim for_user: dvojice (Task, Solution) - režit for_task: dvojice (Participation, Solution) - edit_form - edit_errors (jen když máme edit_form) #} {% set edit_points = edit_form and rights.can_edit_points() %} {% set edit_create = edit_form and rights.can_create_solutions() %} {% set edit = edit_points or edit_create %} {% if edit_form %}

{% 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 %}

Změny uložíte tlačítkem na spodku tabulky. {% else %} Historii všech odevzdání, oprav a bodů pro každé řešení naleznete v jeho detailu. {% if rights.can_upload_feedback() or edit_points %} Tamtéž můžete odevzdávat nové verze a změnit, které řešení/oprava je finální (ve výchozím stavu poslední nahrané). {% elif rights.can_upload_solutions() %} Tamtéž můžete odevzdat nové řešení. {% endif %} Hromadné úpravy můžete provádět pomocí tlačítka Editovat pod tabulkou. {% endif %}

Legenda: odevzdané po termínu, 🛈 nahráno někým jiným než řešitelem, 🗐 existuje více verzí. Symboly po najetí myší zobrazí bližší informace.

{% set tabindex = namespace(value=1) %} {% for obj, sol in rows %} {% set u = for_user or obj.user %} {% set task = for_task or obj %} {% if for_task %} {% else %} {% endif %} {% endfor %}
{% if for_user %}Úloha{% else %}Účastník{% endif %} {% if for_task %}Stav účasti{% endif %} Finální řešení Finální oprava Poznámky Přidělené body {% if not for_user and edit_points and not edit_form %} {% endif %} Akce
{% if for_user %} {{ task.code }} {{ task.name }} {% else %} {{ u|pion_link(contest.contest_id, ctx.site_id) }}{{ u|user_flags }} {% endif %} {% if for_task %}{{ obj.state.friendly_name() }}{% endif %} {% if sol %} {% if sol.final_submit_obj %} {% set p = sol.final_submit_obj %} {% set late = p.check_deadline(round) %} {% if late %}{% endif %} {{- p.uploaded_at|timeformat }} {% if p.is_broken() %} (nekorektní PDF) {% elif p.pages != None %} ({{ p.pages|inflected('strana', 'strany', 'stran') }}) {% endif %} {% if p.uploaded_by_obj != u %} 🛈 {% endif %} {% set key = (obj.task_id if for_user else obj.user_id, "solution") %} {% if key in paper_counts and paper_counts[key] > 1 %} 🗐 {% endif %} {% else %}–{% endif %} {% if sol.final_feedback_obj %} {% set p = sol.final_feedback_obj %} {{ (p.uploaded_at if p else None)|timeformat }} {% if p.is_broken() %} (nekorektní PDF) {% elif p.pages != None %} ({{ p.pages|inflected('strana', 'strany', 'stran') }}) {% endif %} {% set key = (obj.task_id if for_user else obj.user_id, "feedback") %} {% if key in paper_counts and paper_counts[key] > 1 %} 🗐 {% endif %} {% else %}–{% endif %} {% if sol.note %}🗩{% endif %} {% if sol.org_note %} 🗩{% endif %} {% else %} – {% endif %} {% if edit %} {% set key = u.user_id | string %} {% set def_pts = sol | sol_editable_points %} {% set new_pts = request_form.get("points_{}".format(key)) %} {% set err = edit_errors[key] %} {% set tabindex.value = tabindex.value + 1 %} {% else %} {{ sol|sol_display_points }} {% endif %}
{% include "parts/org_solution_js.html" %}