- Panel is mounted sideways: render landscape (600x400), rotate to the panel's native portrait orientation right before writing to hardware. - Web UI: card-based layout, dark mode, active nav highlighting, save confirmation toasts, error banners. - Rotation: separate enabled/disabled toggle (off pins to the first screen in the list) and the interval is now in minutes instead of raw seconds. Migrates existing config.json from the old interval_seconds field. - Weather: type a city name instead of hunting down coordinates, resolved via Open-Meteo's free geocoding API. Manual lat/long still available as a fallback.
40 lines
1.5 KiB
HTML
40 lines
1.5 KiB
HTML
{% extends "base.html" %}
|
|
{% block content %}
|
|
<h1>Rotation</h1>
|
|
|
|
<form method="post">
|
|
<div class="card">
|
|
<div class="section-label">Priority</div>
|
|
<label class="checkbox">
|
|
<input type="checkbox" name="navidrome_priority" {{ "checked" if navidrome_priority }}>
|
|
Navidrome takes over immediately whenever something is playing, regardless of rotation
|
|
</label>
|
|
</div>
|
|
|
|
<div class="card">
|
|
<div class="section-label">Rotation</div>
|
|
<label class="checkbox">
|
|
<input type="checkbox" name="rotation_enabled" {{ "checked" if rotation.enabled }}>
|
|
Enabled -- cycle through the screens below on a timer
|
|
</label>
|
|
<p class="hint" style="margin: 0.6rem 0 1.1rem;">
|
|
Off just pins to the first screen in the order below (still shown when
|
|
Navidrome priority is on but nothing's playing). "Show X now" buttons on
|
|
the Status page still work either way, they just don't stick past the
|
|
next check.
|
|
</p>
|
|
<div class="field">
|
|
<label for="screens">Order</label>
|
|
<input type="text" id="screens" name="screens" value="{{ rotation.screens | join(', ') }}" placeholder="clock, weather">
|
|
<p class="hint">Comma-separated, in order. Available: {{ screens.keys() | join(', ') }}.</p>
|
|
</div>
|
|
<div class="field">
|
|
<label for="interval_minutes">Switch every (minutes)</label>
|
|
<input type="number" id="interval_minutes" name="interval_minutes" value="{{ rotation.interval_minutes }}" min="1">
|
|
</div>
|
|
</div>
|
|
|
|
<button type="submit">Save</button>
|
|
</form>
|
|
{% endblock %}
|