{% extends "_layout.html" %} {% load static %} {% block title %}{% if player_name %}{{ player_name }} · {% endif %}Schedule Overview{% endblock %} {% block extra_head %} {% endblock %} {% block main %}

Schedule Overview

{% if player_name %}{{ player_name }} · {% endif %}Manage what plays on this screen.

{% csrf_token %}
{% csrf_token %}
{% comment %}Flash messages are emitted as toasts by _toasts.html (vendor.ts drainDjangoMessages()).{% endcomment %} {% include "_asset_table.html" %} {% comment %} _asset_modal stays the first .modal-card in the DOM — the add-asset layering integration test grabs .modal-card.first. The bulk modals/bar (which also carry a .modal-card) are included after it so that assumption holds. {% endcomment %} {% include "_asset_modal.html" %} {% include "_preview_modal.html" %} {% include "_bulk_action_bar.html" %} {% include "_bulk_edit_modal.html" %} {% comment %} Delete confirmation overlay — shared shell with the reboot/shutdown prompt on /settings (.modal-overlay + .modal-card pattern). {% endcomment %} {% comment %}Toast stack lives in _layout.html so every page benefits.{% endcomment %}
{% endblock %}