Web changes: Split shared helpers, bootstrap logic, route groups, and upload-sync behavior out of web.js. Kept web.js focused on wiring and server startup. Fixed screen playlist reassignment so changing a screen’s playlist now triggers a refresh. Fixed single-slide playlist refresh behavior so updates do not get stuck behind the current slide. Player changes: Split websocket/runtime handling into runtime.js. Split playlist assembly and revision hashing into playlist.js. Split onboarding and player HTTP routes into dedicated modules. Split render utilities and template loading into render-helpers.js. Kept player.js mostly as startup/orchestration. Validation: Rebuilt both services with Docker Compose. Smoke-checked web and player routes after the refactor. Verified get_errors was clean on the touched modules.
27 lines
1.0 KiB
Handlebars
27 lines
1.0 KiB
Handlebars
<div class="page-header">
|
|
<div>
|
|
<h2>Create playlist</h2>
|
|
<p>Name the playlist and start adding slides.</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card card-outline card-primary admin-form-card">
|
|
<div class="card-header">
|
|
<h3 class="card-title">Playlist details</h3>
|
|
</div>
|
|
<form id="playlist-edit-form" method="post" action="/admin/playlists">
|
|
<div class="card-body">
|
|
<div class="mb-0">
|
|
<label for="playlist-name" class="form-label">Name</label>
|
|
<input id="playlist-name" name="name" class="form-control" placeholder="Lobby loop" required />
|
|
</div>
|
|
</div>
|
|
<div class="card-footer d-flex justify-content-end">
|
|
<div class="btn-group" role="group" aria-label="Playlist actions">
|
|
{{{saveActionButtons formId="playlist-edit-form" saveLabel="Save" showSaveAndClose=false showSaveAndNew=false}}}
|
|
<a class="btn btn-warning" href="/admin/playlists" data-confirm-unsaved="You have unsaved changes. Leave this page?">Cancel</a>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div>
|