CMS Phase 9 Wave 3: Release Archive tab, medium selector, Session/Mix browsers
Renames Genre tab to Release Archive with switch-free medium card group (Enum.GetValues-driven). Adds MediumFields single dispatch + CutFields/SessionFields/ MixFields per-medium sections embedded by all five upload/edit forms. BatchUpload enforces single-track invariant for Session/Mix. Adds CmsSessionBrowser (hero-image upload) and CmsMixBrowser (waveform status + per-row Generate trigger). ICmsReleaseService/CmsReleaseService wraps api/release endpoints. Note: medium selector is forward-compat only — API write path pending.
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
@using DeepDrftModels.Enums
|
||||
|
||||
@* The single dispatch point for medium-conditional form fields. All five upload/edit forms embed this
|
||||
one component; the @switch below is the ONLY place medium-specific form shape is decided. Adding a
|
||||
medium is one new section component + one new switch arm here — nowhere else. *@
|
||||
<MudGrid>
|
||||
<MudItem xs="12" sm="6">
|
||||
<MudSelect T="ReleaseMedium"
|
||||
Value="Medium"
|
||||
ValueChanged="@(v => MediumChanged.InvokeAsync(v))"
|
||||
Label="Medium"
|
||||
Variant="Variant.Outlined"
|
||||
Disabled="Disabled">
|
||||
@foreach (var medium in Enum.GetValues<ReleaseMedium>())
|
||||
{
|
||||
<MudSelectItem T="ReleaseMedium" Value="medium">@medium</MudSelectItem>
|
||||
}
|
||||
</MudSelect>
|
||||
</MudItem>
|
||||
|
||||
@switch (Medium)
|
||||
{
|
||||
case ReleaseMedium.Cut:
|
||||
<CutFields ReleaseType="ReleaseType"
|
||||
ReleaseTypeChanged="ReleaseTypeChanged"
|
||||
Disabled="Disabled" />
|
||||
break;
|
||||
case ReleaseMedium.Session:
|
||||
<SessionFields />
|
||||
break;
|
||||
case ReleaseMedium.Mix:
|
||||
<MixFields />
|
||||
break;
|
||||
}
|
||||
</MudGrid>
|
||||
|
||||
@code {
|
||||
[Parameter] public ReleaseMedium Medium { get; set; } = ReleaseMedium.Cut;
|
||||
[Parameter] public EventCallback<ReleaseMedium> MediumChanged { get; set; }
|
||||
|
||||
// Cut-only — bound through to CutFields. Ignored for Session/Mix.
|
||||
[Parameter] public ReleaseType ReleaseType { get; set; } = ReleaseType.Single;
|
||||
[Parameter] public EventCallback<ReleaseType> ReleaseTypeChanged { get; set; }
|
||||
|
||||
[Parameter] public bool Disabled { get; set; }
|
||||
}
|
||||
Reference in New Issue
Block a user