feat(web): playout alternate-schedule and template editors on the REST API (#144 S6 (#162))

Adds two sub-path editors under the Playouts screen:
- /app/playouts/{id}/alternate-schedules (Classic playouts)
- /app/playouts/{id}/templates (Block playouts)

Each has a reorderable priority table (up/down/delete) plus a selected-row
detail panel: schedule or template+deco-template pickers, a limit-to-date-range
toggle gating month/day/year selects, and day-of-week / day-of-month / month
multi-select chips with Weekdays/Weekends helpers. Entry points on the playout
card are kind-gated. The Block playout card also gets a default-deco select
wired to PUT /api/playouts/{id}/deco, using the new decoName read field.

DayOfWeek is overridden to day-name strings in the API client (the wire format
is Newtonsoft StringEnumConverter, though the OpenAPI schema types it as number).
Deviations from Blazor: chip multi-select instead of MudSelect, flat grouped
template pickers instead of a group->item cascade, a shorter year range, and the
template calendar preview is omitted.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-07 20:29:40 +02:00
co-authored by Claude Fable 5
parent 50b13afac3
commit ca3fe0c87b
7 changed files with 1427 additions and 3 deletions
+23
View File
@@ -3711,3 +3711,26 @@
height: 16px;
color: var(--action-primary);
}
/* Playout alternate-schedule / template editors: multi-select day/month chips */
.ctv-chip-toggle {
padding: 3px 9px;
border-radius: 999px;
border: 1px solid var(--ctv-border);
background: var(--ctv-surface);
color: var(--ctv-text-soft);
font-size: 12px;
line-height: 1.4;
cursor: pointer;
transition: background 0.12s ease, color 0.12s ease, border-color 0.12s ease;
}
.ctv-chip-toggle:hover {
border-color: var(--ctv-accent);
}
.ctv-chip-toggle-active {
background: var(--ctv-accent-soft);
border-color: var(--ctv-accent);
color: var(--ctv-text);
}