{% extends "mobile/coach/base.html" %} {% load i18n %} {% comment %} C3 -- design_handoff_rosterchief_platform/README.md's C3 section, kept deliberately simple per product feedback: a plain yes/no toggle per available roster player, grouped by position ("category") rather than the mock's lines/slots -- see CoachLineupView's own docstring for why an earlier tap-to-place build was replaced. The mock's "fully dark screen" is approximated with dark cards throughout rather than overriding the shared .coach-sheet's own light background -- a real per-screen shell hook is more infrastructure than one screen justifies. The one form is hx-boost="false", same reasoning as every other write-action form in this app (see mobile/templates/mobile/event_detail. html's own top-of-file comment) -- each row's Yes/No pair is Alpine-owned (x-data toggling a hidden input), and this codebase hasn't established an htmx interaction pattern to layer on top of that safely. The Publish section below stays visible after the first publish too (not just while draft) -- editing selections and hitting "Save line-up" never notifies anyone by itself (see CoachLineupView's own docstring), so a coach who changes an already-published lineup needs an explicit "Publish changes" step to sync it and notify whoever's status changed. {% endcomment %} {% block header_extra %}
{% trans "Line-up" %} {% if lineup.published_at %} {% trans "Published" %} {% elif lineup.scheduled_publish_at %} {% trans "Scheduled" %} {% endif %}
{{ event.title }} · {{ event.start|date:"D d M H:i" }}
{% endblock header_extra %} {% block content %}
{% csrf_token %}
{% for category in categories %}
{{ category.label }}
{% for row in category.rows %}
{{ row.member.get_full_name }} {% if row.membership.jersey_number %}· #{{ row.membership.jersey_number }}{% endif %} {% if row.attendance_rate is not None %} · {% blocktrans with rate=row.attendance_rate %}{{ rate }}% turnout{% endblocktrans %} {% endif %}
{% if can_manage_active_team %}
{% elif row.selected %} {% trans "Yes" %} {% endif %}
{% endfor %}
{% empty %}
{% trans "No available players to pick from." %}
{% endfor %}
{% if can_manage_active_team %} {% endif %}
{% if unavailable %}
{% trans "Unavailable" %}
{% for attendance in unavailable %} {{ attendance.member.get_full_name }} · {{ attendance.get_status_display }} {% endfor %}
{% endif %} {% if can_manage_active_team %} {% if lineup.scheduled_publish_at %}

{% blocktrans with time=lineup.scheduled_publish_at|date:"D d M H:i" %}Scheduled to publish {{ time }}{% endblocktrans %}

{% csrf_token %}
{% csrf_token %}
{% else %}
{% csrf_token %}
{% trans "Or schedule for later" %}
{% csrf_token %}
{% endif %} {% endif %} {% endblock content %}