feat: Priority-Eintraege in den Screen-Playlisten anzeigen
Die Priority-Playlist gilt fuer alle Screens eines Standorts, liegt aber in einem eigenen Menuepunkt und wurde beim Bearbeiten der normalen Playlisten leicht uebersehen. Sie erscheint jetzt oberhalb jeder Screen-Playlist als abgesetzte, ausgegraute Liste mit Prio-Badge. Reine Anzeige: keine Checkbox, keine Buttons, kein Drag. Die Zeilen liegen bewusst in einer eigenen ul ausserhalb von #playlist-<screen>, damit savePlaylist() sie nicht mit einsammelt. Sichtbar nur, wenn die Priority-Playlist des Standorts aktiviert ist. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
9
app.py
9
app.py
@@ -1554,12 +1554,21 @@ def admin(site):
|
|||||||
screen_status[screen_name] = "online" if screen_is_active(current_site, screen_name) else "offline"
|
screen_status[screen_name] = "online" if screen_is_active(current_site, screen_name) else "offline"
|
||||||
client_info[screen_name] = get_client_info(current_site, screen_name)
|
client_info[screen_name] = get_client_info(current_site, screen_name)
|
||||||
|
|
||||||
|
# Priority-Einträge des Standorts nur zur Anzeige mitgeben: sie gelten für
|
||||||
|
# alle Screens, sind aber in einem eigenen Menüpunkt und werden hier leicht
|
||||||
|
# übersehen. Bedienung bleibt ausschließlich auf der Priority-Seite.
|
||||||
|
prio_cfg = get_priority_config(cfg, current_site) if current_site else {}
|
||||||
|
priority_preview = []
|
||||||
|
if current_site and prio_cfg.get("enabled", False):
|
||||||
|
priority_preview = [f for f in load_priority_files(current_site) if "enabled" in f]
|
||||||
|
|
||||||
return render_template(
|
return render_template(
|
||||||
"admin.html",
|
"admin.html",
|
||||||
site_list=site_list,
|
site_list=site_list,
|
||||||
current_site=current_site,
|
current_site=current_site,
|
||||||
screens=screens,
|
screens=screens,
|
||||||
media_files=media_files,
|
media_files=media_files,
|
||||||
|
priority_preview=priority_preview,
|
||||||
screen_status=screen_status,
|
screen_status=screen_status,
|
||||||
client_info=client_info,
|
client_info=client_info,
|
||||||
version=APP_VERSION,
|
version=APP_VERSION,
|
||||||
|
|||||||
@@ -52,6 +52,19 @@
|
|||||||
gap: 0.75rem;
|
gap: 0.75rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ─── Prio-Vorschau: reine Anzeige, keine Bedienung ─── */
|
||||||
|
.playlist-prio {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 28px 1fr 90px 80px;
|
||||||
|
align-items: center;
|
||||||
|
gap: 0.75rem;
|
||||||
|
opacity: 0.72;
|
||||||
|
background: var(--tblr-bg-surface-secondary, #f8f9fa);
|
||||||
|
}
|
||||||
|
.playlist-prio .playlist-name {
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
.playlist-name {
|
.playlist-name {
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
@@ -229,6 +242,32 @@
|
|||||||
|
|
||||||
<!-- ═══ Tab: Playlist ═══ -->
|
<!-- ═══ Tab: Playlist ═══ -->
|
||||||
<div class="tab-pane active" id="tab-playlist-{{ screen }}" role="tabpanel">
|
<div class="tab-pane active" id="tab-playlist-{{ screen }}" role="tabpanel">
|
||||||
|
{% if priority_preview %}
|
||||||
|
<!-- Priority-Playlist des Standorts: laeuft diesen Screens vorweg.
|
||||||
|
Reine Anzeige - Bedienung ausschliesslich unter "Priority". -->
|
||||||
|
<ul class="list-group mb-2">
|
||||||
|
{% for file in priority_preview %}
|
||||||
|
<li class="list-group-item playlist-prio">
|
||||||
|
<i class="ti ti-player-play" title="Laeuft vorweg"></i>
|
||||||
|
<span class="playlist-name">
|
||||||
|
{{ file.name }}
|
||||||
|
{% if file.schedule %}<span class="badge ms-1 {% if file.active %}bg-info text-white{% else %}bg-secondary-lt{% endif %}" title="{{ file.schedule | schedule_text }}{% if not file.active %} — laeuft gerade nicht{% endif %}">Zeit</span>{% endif %}
|
||||||
|
{% if not file.enabled %}<span class="badge bg-secondary-lt ms-1">inaktiv</span>{% endif %}
|
||||||
|
</span>
|
||||||
|
<span class="badge bg-red text-red-fg">Prio</span>
|
||||||
|
<span class="playlist-size">
|
||||||
|
{% if file.type == "url" %}{{ file.size }}{% else %}{{ file.size }} KB{% endif %}
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
<p class="text-muted small mb-3">
|
||||||
|
Diese Einträge kommen aus der
|
||||||
|
<a href="{{ url_for('admin_priority', site=current_site) }}">Priority-Playlist</a>
|
||||||
|
des Standorts und laufen allen Screens vorweg. Bearbeiten nur dort.
|
||||||
|
</p>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
<ul class="list-group mb-3" id="playlist-{{ screen }}">
|
<ul class="list-group mb-3" id="playlist-{{ screen }}">
|
||||||
{% for file in media_files[screen] %}
|
{% for file in media_files[screen] %}
|
||||||
<li class="list-group-item playlist-row"
|
<li class="list-group-item playlist-row"
|
||||||
|
|||||||
Reference in New Issue
Block a user