@ -12,284 +12,319 @@
@inject ISnackbar Snackbar
@inject ISnackbar Snackbar
@inject IMediator Mediator
@inject IMediator Mediator
<MudContainer MaxWidth="MaxWidth.ExtraLarge" Class="pt-8" Style="display: flex; flex-direction: row">
<MudForm Style="max-height: 100%">
<MudStack Class="mr-6">
<MudPaper Square="true" Style="display: flex; height: 64px; min-height: 64px; width: 100%; z-index: 100; align-items: center">
<MudText Typo="Typo.h4" Class="mb-4">Edit Deco</MudText>
<MudButton Variant="Variant.Filled" Color="Color.Primary" OnClick="@(_ => SaveChanges())" Class="ml-8" StartIcon="@Icons.Material.Filled.Save">
<MudCard Class="mb-6" Style="width: 350px">
Save Changes
<MudCardContent>
</MudButton>
<MudTextField Label="Name" @bind-Value="_deco.Name" For="@(() => _deco.Name)"/>
</MudPaper>
</MudCardContent>
<div class="d-flex flex-column" style="height: 100vh; overflow-x: auto">
<MudCardActions>
<MudContainer MaxWidth="MaxWidth.ExtraLarge" Class="pt-8">
<MudButton Variant="Variant.Filled" Color="Color.Primary" OnClick="@(_ => SaveChanges())" StartIcon="@Icons.Material.Filled.Save">
<MudText Typo="Typo.h5" Class="mb-2">Deco</MudText>
Save Changes
<MudDivider Class="mb-6"/>
</MudButton>
<MudStack Row="true" Breakpoint="Breakpoint.SmAndDown" Class="form-field-stack gap-md-8 mb-5">
</MudCardActions>
<div class="d-flex">
</MudCard>
<MudText>Name</MudText>
<MudCard Class="mb-6" Style="width: 350px">
</div>
<MudCardHeader>
<MudTextField @bind-Value="_deco.Name" For="@(() => _deco.Name)"/>
<CardHeaderContent>
</MudStack>
<MudText Typo="Typo.h6">Watermark</MudText>
<MudText Typo="Typo.h5" Class="mt-10 mb-2">Watermark</MudText>
</CardHeaderContent>
<MudDivider Class="mb-6"/>
</MudCardHeader>
<MudStack Row="true" Breakpoint="Breakpoint.SmAndDown" Class="form-field-stack gap-md-8 mb-5">
<MudCardContent>
<div class="d-flex">
<MudSelect Label="Watermark Mode" @bind-Value="_deco.WatermarkMode" For="@(() => _deco.WatermarkMode)">
<MudText>Watermark Mode</MudText>
<MudSelectItem Value="DecoMode.Inherit">Inherit</MudSelectItem>
</div>
<MudSelectItem Value="DecoMode.Disable">Disable</MudSelectItem>
<MudSelect @bind-Value="_deco.WatermarkMode" For="@(() => _deco.WatermarkMode)">
<MudSelectItem Value="DecoMode.Override">Override</MudSelectItem>
<MudSelectItem Value="DecoMode.Inherit">Inherit</MudSelectItem>
</MudSelect>
<MudSelectItem Value="DecoMode.Disable">Disable</MudSelectItem>
<MudSelect Disabled="@(_deco.WatermarkMode != DecoMode.Override)" Label="Watermark Override" @bind-Value="_deco.WatermarkId" For="@(() => _deco.WatermarkId)"
<MudSelectItem Value="DecoMode.Override">Override</MudSelectItem>
Clearable="true">
</MudSelect>
<MudSelectItem T="int?" Value="@((int?)null)">(none)</MudSelectItem>
</MudStack>
@foreach (WatermarkViewModel watermark in _watermarks)
<MudStack Row="true" Breakpoint="Breakpoint.SmAndDown" Class="form-field-stack gap-md-8 mb-5">
{
<div class="d-flex">
<MudSelectItem T="int?" Value="@watermark.Id">@watermark.Name</MudSelectItem>
<MudText>Watermark Override</MudText>
}
</div>
</MudSelect>
<MudSelect Disabled="@(_deco.WatermarkMode != DecoMode.Override)" @bind-Value="_deco.WatermarkId" For="@(() => _deco.WatermarkId)"
<MudSwitch T="bool"
Clearable="true">
Class="mt-3"
<MudSelectItem T="int?" Value="@((int?)null)">(none)</MudSelectItem>
Disabled="@(_deco.WatermarkMode != DecoMode.Override)"
@foreach (WatermarkViewModel watermark in _watermarks)
@bind-Value="_deco.UseWatermarkDuringFiller"
Color="Color.Primary"
Label="Use Watermark During Filler"/>
</MudCardContent>
</MudCard>
<MudCard Class="mb-6" Style="width: 350px">
<MudCardHeader>
<CardHeaderContent>
<MudTooltip Style="max-width: 350px">
<ChildContent>
<MudText Typo="Typo.h6" Class="d-flex align-center justify-center">
Default Filler
<MudIcon Icon="@Icons.Material.Filled.Info"/>
</MudText>
</ChildContent>
<TooltipContent>
<MudText Typo="Typo.body2">After all blocks have been scheduled, a second pass will be made to fill unscheduled time using random items from this collection.</MudText>
</TooltipContent>
</MudTooltip>
</CardHeaderContent>
</MudCardHeader>
<MudCardContent>
<MudSelect Label="Default Filler Mode" @bind-Value="_deco.DefaultFillerMode" For="@(() => _deco.DefaultFillerMode)">
<MudSelectItem Value="DecoMode.Inherit">Inherit</MudSelectItem>
<MudSelectItem Value="DecoMode.Disable">Disable</MudSelectItem>
<MudSelectItem Value="DecoMode.Override">Override</MudSelectItem>
</MudSelect>
<MudSelect Disabled="@(_deco.DefaultFillerMode != DecoMode.Override)"
Label="Default Filler Collection Type"
@bind-Value="_deco.DefaultFillerCollectionType"
For="@(() => _deco.DefaultFillerCollectionType)">
<MudSelectItem Value="ProgramScheduleItemCollectionType.Collection">Collection</MudSelectItem>
<MudSelectItem Value="ProgramScheduleItemCollectionType.TelevisionShow">Television Show</MudSelectItem>
<MudSelectItem Value="ProgramScheduleItemCollectionType.TelevisionSeason">Television Season</MudSelectItem>
<MudSelectItem Value="ProgramScheduleItemCollectionType.Artist">Artist</MudSelectItem>
<MudSelectItem Value="ProgramScheduleItemCollectionType.MultiCollection">Multi Collection</MudSelectItem>
<MudSelectItem Value="ProgramScheduleItemCollectionType.SmartCollection">Smart Collection</MudSelectItem>
</MudSelect>
@if (_deco.DefaultFillerCollectionType == ProgramScheduleItemCollectionType.Collection)
{
<MudSelect Class="mt-3"
T="MediaCollectionViewModel"
Disabled="@(_deco.DefaultFillerMode != DecoMode.Override)"
Label="Collection"
@bind-value="_deco.DefaultFillerCollection">
@foreach (MediaCollectionViewModel collection in _mediaCollections)
{
{
<MudSelectItem Value="@collection">@collection .Name</MudSelectItem>
<MudSelectItem T="int?" Value="@watermark.Id">@watermark.Name</MudSelectItem>
}
}
</MudSelect>
</MudSelect>
</MudStack>
<MudStack Row="true" Breakpoint="Breakpoint.SmAndDown" Class="form-field-stack gap-md-8 mb-5">
<div class="d-flex">
<MudText>Use Watermark During Filler</MudText>
</div>
<MudCheckBox T="bool"
Disabled="@(_deco.WatermarkMode != DecoMode.Override)"
@bind-Value="_deco.UseWatermarkDuringFiller"
Color="Color.Primary"
Dense="true" />
</MudStack>
<MudText Typo="Typo.h5" Class="mt-10 mb-2">Default Filler</MudText>
<MudDivider Class="mb-6"/>
<MudText Typo="Typo.body2" Class="mb-6">After all blocks have been scheduled, a second pass will be made to fill unscheduled time using random items from this collection.</MudText>
<MudStack Row="true" Breakpoint="Breakpoint.SmAndDown" Class="form-field-stack gap-md-8 mb-5">
<div class="d-flex">
<MudText>Default Filler Mode</MudText>
</div>
<MudSelect @bind-Value="_deco.DefaultFillerMode" For="@(() => _deco.DefaultFillerMode)">
<MudSelectItem Value="DecoMode.Inherit">Inherit</MudSelectItem>
<MudSelectItem Value="DecoMode.Disable">Disable</MudSelectItem>
<MudSelectItem Value="DecoMode.Override">Override</MudSelectItem>
</MudSelect>
</MudStack>
<MudStack Row="true" Breakpoint="Breakpoint.SmAndDown" Class="form-field-stack gap-md-8 mb-5">
<div class="d-flex">
<MudText>Default Filler Collection Type</MudText>
</div>
<MudSelect Disabled="@(_deco.DefaultFillerMode != DecoMode.Override)"
@bind-Value="_deco.DefaultFillerCollectionType"
For="@(() => _deco.DefaultFillerCollectionType)">
<MudSelectItem Value="ProgramScheduleItemCollectionType.Collection">Collection</MudSelectItem>
<MudSelectItem Value="ProgramScheduleItemCollectionType.TelevisionShow">Television Show</MudSelectItem>
<MudSelectItem Value="ProgramScheduleItemCollectionType.TelevisionSeason">Television Season</MudSelectItem>
<MudSelectItem Value="ProgramScheduleItemCollectionType.Artist">Artist</MudSelectItem>
<MudSelectItem Value="ProgramScheduleItemCollectionType.MultiCollection">Multi Collection</MudSelectItem>
<MudSelectItem Value="ProgramScheduleItemCollectionType.SmartCollection">Smart Collection</MudSelectItem>
</MudSelect>
</MudStack>
@if (_deco.DefaultFillerCollectionType == ProgramScheduleItemCollectionType.Collection)
{
<MudStack Row="true" Breakpoint="Breakpoint.SmAndDown" Class="form-field-stack gap-md-8 mb-5">
<div class="d-flex">
<MudText>Collection</MudText>
</div>
<MudSelect T="MediaCollectionViewModel"
Disabled="@(_deco.DefaultFillerMode != DecoMode.Override)"
@bind-value="_deco.DefaultFillerCollection">
@foreach (MediaCollectionViewModel collection in _mediaCollections)
{
<MudSelectItem Value="@collection">@collection.Name</MudSelectItem>
}
</MudSelect>
</MudStack>
}
}
@if (_deco.DefaultFillerCollectionType == ProgramScheduleItemCollectionType.MultiCollection)
@if (_deco.DefaultFillerCollectionType == ProgramScheduleItemCollectionType.MultiCollection)
{
{
<MudSelect Class="mt-3"
<MudStack Row="true" Breakpoint="Breakpoint.SmAndDown" Class="form-field-stack gap-md-8 mb-5">
T="MultiCollectionViewModel"
<div class="d-flex">
Disabled="@(_deco.DefaultFillerMode != DecoMode.Override)"
<MudText>Multi Collection</MudText>
Label="Multi Collection"
</div>
@bind-value="_deco.DefaultFillerMultiCollection">
<MudSelect T="MultiCollectionViewModel"
@foreach (MultiCollectionViewModel collection in _multiCollections)
Disabled="@(_deco.DefaultFillerMode != DecoMode.Override)"
{
@bind-value="_deco.DefaultFillerMultiCollection">
<MudSelectItem Value="@collection">@collection.Name</MudSelectItem>
@foreach (MultiCollectionViewModel collection in _multiCollections)
}
{
</MudSelect>
<MudSelectItem Value="@collection">@collection.Name</MudSelectItem>
}
</MudSelect>
</MudStack>
}
}
@if (_deco.DefaultFillerCollectionType == ProgramScheduleItemCollectionType.SmartCollection)
@if (_deco.DefaultFillerCollectionType == ProgramScheduleItemCollectionType.SmartCollection)
{
{
<MudSelect Class="mt-3"
<MudStack Row="true" Breakpoint="Breakpoint.SmAndDown" Class="form-field-stack gap-md-8 mb-5">
T="SmartCollectionViewModel"
<div class="d-flex">
Disabled="@(_deco.DefaultFillerMode != DecoMode.Override)"
<MudText>Smart Collection</MudText>
Label="Smart Collection"
</div>
@bind-value="_deco.DefaultFillerSmartCollection">
<MudSelect T="SmartCollectionViewModel"
@foreach (SmartCollectionViewModel collection in _smartCollections)
Disabled="@(_deco.DefaultFillerMode != DecoMode.Override)"
{
@bind-value="_deco.DefaultFillerSmartCollection">
<MudSelectItem Value="@collection">@collection.Name</MudSelectItem>
@foreach (SmartCollectionViewModel collection in _smartCollections)
}
{
</MudSelect>
<MudSelectItem Value="@collection">@collection.Name</MudSelectItem>
}
</MudSelect>
</MudStack>
}
}
@if (_deco.DefaultFillerCollectionType == ProgramScheduleItemCollectionType.TelevisionShow)
@if (_deco.DefaultFillerCollectionType == ProgramScheduleItemCollectionType.TelevisionShow)
{
{
<MudSelect Class="mt-3"
<MudStack Row="true" Breakpoint="Breakpoint.SmAndDown" Class="form-field-stack gap-md-8 mb-5">
T="NamedMediaItemViewModel"
<div class="d-flex">
Disabled="@(_deco.DefaultFillerMode != DecoMode.Override)"
<MudText>Television Show</MudText>
Label="Television Show"
</div>
@bind-value="_deco.DefaultFillerMediaItem">
<MudSelect T="NamedMediaItemViewModel"
@foreach (NamedMediaItemViewModel show in _televisionShows)
Disabled="@(_deco.DefaultFillerMode != DecoMode.Override)"
{
@bind-value="_deco.DefaultFillerMediaItem">
<MudSelectItem Value="@show">@show.Name</MudSelectItem>
@foreach (NamedMediaItemViewModel show in _televisionShows)
}
{
</MudSelect>
<MudSelectItem Value="@show">@show.Name</MudSelectItem>
}
</MudSelect>
</MudStack>
}
}
@if (_deco.DefaultFillerCollectionType == ProgramScheduleItemCollectionType.TelevisionSeason)
@if (_deco.DefaultFillerCollectionType == ProgramScheduleItemCollectionType.TelevisionSeason)
{
{
<MudSelect Class="mt-3"
<MudStack Row="true" Breakpoint="Breakpoint.SmAndDown" Class="form-field-stack gap-md-8 mb-5">
T="NamedMediaItemViewModel"
<div class="d-flex">
Disabled="@(_deco.DefaultFillerMode != DecoMode.Override)"
<MudText>Television Season</MudText>
Label="Television Season"
</div>
@bind-value="_deco.DefaultFillerMediaItem">
<MudSelect T="NamedMediaItemViewModel"
@foreach (NamedMediaItemViewModel season in _televisionSeasons)
Disabled="@(_deco.DefaultFillerMode != DecoMode.Override)"
{
@bind-value="_deco.DefaultFillerMediaItem">
<MudSelectItem Value="@season">@season.Name</MudSelectItem>
@foreach (NamedMediaItemViewModel season in _televisionSeasons)
}
{
</MudSelect>
<MudSelectItem Value="@season">@season.Name</MudSelectItem>
}
</MudSelect>
</MudStack>
}
}
@if (_deco.DefaultFillerCollectionType == ProgramScheduleItemCollectionType.Artist)
@if (_deco.DefaultFillerCollectionType == ProgramScheduleItemCollectionType.Artist)
{
{
<MudSelect Class="mt-3"
<MudStack Row="true" Breakpoint="Breakpoint.SmAndDown" Class="form-field-stack gap-md-8 mb-5">
T="NamedMediaItemViewModel"
<div class="d-flex">
Disabled="@(_deco.DefaultFillerMode != DecoMode.Override)"
<MudText>Artist</MudText>
Label="Artist"
</div>
@bind-value="_deco.DefaultFillerMediaItem">
<MudSelect T="NamedMediaItemViewModel"
@foreach (NamedMediaItemViewModel artist in _artists)
Disabled="@(_deco.DefaultFillerMode != DecoMode.Override)"
{
@bind-value="_deco.DefaultFillerMediaItem">
<MudSelectItem Value="@artist">@artist.Name</MudSelectItem>
@foreach (NamedMediaItemViewModel artist in _artists)
}
{
</MudSelect>
<MudSelectItem Value="@artist">@artist.Name</MudSelectItem>
}
</MudSelect>
</MudStack>
}
}
<MudSwitch T="bool"
<MudStack Row="true" Breakpoint="Breakpoint.SmAndDown" Class="form-field-stack gap-md-8 mb-5">
Class="mt-3"
<div class="d-flex">
Disabled="@(_deco.DefaultFillerMode != DecoMode.Override)"
<MudText>Trim To Fit</MudText>
Label="Trim To Fit"
</div>
@bind-Value="_deco.DefaultFillerTrimToFit"
<MudCheckBox T="bool"
Color="Color.Primary"/>
Disabled="@(_deco.DefaultFillerMode != DecoMode.Override)"
</MudCardContent>
@bind-Value="_deco.DefaultFillerTrimToFit"
</MudCard>
Color="Color.Primary"
<MudCard Class="mb-6" Style="width: 350px">
Dense="true"/>
<MudCardHeader>
</MudStack>
<CardHeaderContent>
<MudText Typo="Typo.h5" Class="mt-10 mb-2">Dead Air Fallback</MudText>
<MudTooltip Style="max-width: 350px">
<MudDivider Class="mb-6"/>
<ChildContent>
<MudText Typo="Typo.body2">When no playout item is found for the current time, *one* item will be randomly selected from this collection and looped and trimmed to exactly fit until the start of the next playout item.</MudText>
<MudText Typo="Typo.h6" Class="d-flex align-center justify-center">
<MudText Typo="Typo.body2" Class="mb-6 mt-3">This replaces the "Channel is Offline" image that would otherwise display.</MudText>
Dead Air Fallback
<MudStack Row="true" Breakpoint="Breakpoint.SmAndDown" Class="form-field-stack gap-md-8 mb-5">
<div class="d-flex">
<MudIcon Icon="@Icons.Material.Filled.Info"/>
<MudText>Dead Air Fallback Mode</MudText>
</MudText>
</div>
</ChildContent>
<MudSelect @bind-Value="_deco.DeadAirFallbackMode" For="@(() => _deco.DeadAirFallbackMode)">
<TooltipContent>
<MudSelectItem Value="DecoMode.Inherit">Inherit</MudSelectItem>
<MudText Typo="Typo.body2">When no playout item is found for the current time, *one* item will be randomly selected from this collection and looped and trimmed to exactly fit until the start of the next playout item.</MudText>
<MudSelectItem Value="DecoMode.Disable">Disable</MudSelectItem>
<MudText Typo="Typo.body2" Class="mt-3">This replaces the "Channel is Offline" image that would otherwise display.</MudText>
<MudSelectItem Value="DecoMode.Override">Override</MudSelectItem>
</TooltipContent>
</MudSelect>
</MudTooltip>
</MudStack>
</CardHeaderContent>
<MudStack Row="true" Breakpoint="Breakpoint.SmAndDown" Class="form-field-stack gap-md-8 mb-5">
</MudCardHeader>
<div class="d-flex">
<MudCardContent>
<MudText>Dead Air Fallback Collection Type</MudText>
<MudSelect Label="Dead Air Fallback Mode" @bind-Value="_deco.DeadAirFallbackMode" For="@(() => _deco.DeadAirFallbackMode)">
</div>
<MudSelectItem Value="DecoMode.Inherit">Inherit</MudSelectItem>
<MudSelect Disabled="@(_deco.DeadAirFallbackMode != DecoMode.Override)"
<MudSelectItem Value="DecoMode.Disable">Disable</MudSelectItem>
@bind-Value="_deco.DeadAirFallbackCollectionType"
<MudSelectItem Value="DecoMode.Override">Override</MudSelectItem>
For="@(() => _deco.DeadAirFallbackCollectionType)">
</MudSelect>
<MudSelectItem Value="ProgramScheduleItemCollectionType.Collection">Collection</MudSelectItem>
<MudSelect Disabled="@(_deco.DeadAirFallbackMode != DecoMode.Override)"
<MudSelectItem Value="ProgramScheduleItemCollectionType.TelevisionShow">Television Show</MudSelectItem>
Label="Dead Air Fallback Collection Type"
<MudSelectItem Value="ProgramScheduleItemCollectionType.TelevisionSeason">Television Season</MudSelectItem>
@bind-Value="_deco.DeadAirFallbackCollectionType"
<MudSelectItem Value="ProgramScheduleItemCollectionType.Artist">Artist</MudSelectItem>
For="@(() => _deco.DeadAirFallbackCollectionType)">
<MudSelectItem Value="ProgramScheduleItemCollectionType.MultiCollection">Multi Collection</MudSelectItem>
<MudSelectItem Value="ProgramScheduleItemCollectionType.Collection">Collection</MudSelectItem>
<MudSelectItem Value="ProgramScheduleItemCollectionType.SmartCollection">Smart Collection</MudSelectItem>
<MudSelectItem Value="ProgramScheduleItemCollectionType.TelevisionShow">Television Show</MudSelectItem>
</MudSelect>
<MudSelectItem Value="ProgramScheduleItemCollectionType.TelevisionSeason">Television Season</MudSelectItem>
</MudStack>
<MudSelectItem Value="ProgramScheduleItemCollectionType.Artist">Artist</MudSelectItem>
<MudSelectItem Value="ProgramScheduleItemCollectionType.MultiCollection">Multi Collection</MudSelectItem>
<MudSelectItem Value="ProgramScheduleItemCollectionType.SmartCollection">Smart Collection</MudSelectItem>
</MudSelect>
@if (_deco.DeadAirFallbackCollectionType == ProgramScheduleItemCollectionType.Collection)
@if (_deco.DeadAirFallbackCollectionType == ProgramScheduleItemCollectionType.Collection)
{
{
<MudSelect Class="mt-3"
<MudStack Row="true" Breakpoint="Breakpoint.SmAndDown" Class="form-field-stack gap-md-8 mb-5">
T="MediaCollectionViewModel"
<div class="d-flex">
Disabled="@(_deco.DeadAirFallbackMode != DecoMode.Override)"
<MudText>Collection</MudText>
Label="Collection"
</div>
@bind-value="_deco.DeadAirFallbackCollection">
<MudSelect T="MediaCollectionViewModel"
@foreach (MediaCollectionViewModel collection in _mediaCollections)
Disabled="@(_deco.DeadAirFallbackMode != DecoMode.Override)"
{
@bind-value="_deco.DeadAirFallbackCollection">
<MudSelectItem Value="@collection">@collection.Name</MudSelectItem>
@foreach (MediaCollectionViewModel collection in _mediaCollections)
}
{
</MudSelect>
<MudSelectItem Value="@collection">@collection.Name</MudSelectItem>
}
</MudSelect>
</MudStack>
}
}
@if (_deco.DeadAirFallbackCollectionType == ProgramScheduleItemCollectionType.MultiCollection)
@if (_deco.DeadAirFallbackCollectionType == ProgramScheduleItemCollectionType.MultiCollection)
{
{
<MudSelect Class="mt-3"
<MudStack Row="true" Breakpoint="Breakpoint.SmAndDown" Class="form-field-stack gap-md-8 mb-5">
T="MultiCollectionViewModel"
<div class="d-flex">
Disabled="@(_deco.DeadAirFallbackMode != DecoMode.Override)"
<MudText>Multi Collection</MudText>
Label="Multi Collection"
</div>
@bind-value="_deco.DeadAirFallbackMultiCollection">
<MudSelect T="MultiCollectionViewModel"
@foreach (MultiCollectionViewModel collection in _multiCollections)
Disabled="@(_deco.DeadAirFallbackMode != DecoMode.Override)"
{
@bind-value="_deco.DeadAirFallbackMultiCollection">
<MudSelectItem Value="@collection">@collection.Name</MudSelectItem>
@foreach (MultiCollectionViewModel collection in _multiCollections)
}
{
</MudSelect>
<MudSelectItem Value="@collection">@collection.Name</MudSelectItem>
}
</MudSelect>
</MudStack>
}
}
@if (_deco.DeadAirFallbackCollectionType == ProgramScheduleItemCollectionType.SmartCollection)
@if (_deco.DeadAirFallbackCollectionType == ProgramScheduleItemCollectionType.SmartCollection)
{
{
<MudSelect Class="mt-3"
<MudStack Row="true" Breakpoint="Breakpoint.SmAndDown" Class="form-field-stack gap-md-8 mb-5">
T="SmartCollectionViewModel"
<div class="d-flex">
Disabled="@(_deco.DeadAirFallbackMode != DecoMode.Override)"
<MudText>Smart Collection</MudText>
Label="Smart Collection"
</div>
@bind-value="_deco.DeadAirFallbackSmartCollection">
<MudSelect T="SmartCollectionViewModel"
@foreach (SmartCollectionViewModel collection in _smartCollections)
Disabled="@(_deco.DeadAirFallbackMode != DecoMode.Override)"
{
@bind-value="_deco.DeadAirFallbackSmartCollection">
<MudSelectItem Value="@collection">@collection.Name</MudSelectItem>
@foreach (SmartCollectionViewModel collection in _smartCollections)
}
{
</MudSelect>
<MudSelectItem Value="@collection">@collection.Name</MudSelectItem>
}
</MudSelect>
</MudStack>
}
}
@if (_deco.DeadAirFallbackCollectionType == ProgramScheduleItemCollectionType.TelevisionShow)
@if (_deco.DeadAirFallbackCollectionType == ProgramScheduleItemCollectionType.TelevisionShow)
{
{
<MudSelect Class="mt-3"
<MudStack Row="true" Breakpoint="Breakpoint.SmAndDown" Class="form-field-stack gap-md-8 mb-5">
T="NamedMediaItemViewModel"
<div class="d-flex">
Disabled="@(_deco.DeadAirFallbackMode != DecoMode.Override)"
<MudText>Television Show</MudText>
Label="Television Show"
</div>
@bind-value="_deco.DeadAirFallbackMediaItem">
<MudSelect T="NamedMediaItemViewModel"
@foreach (NamedMediaItemViewModel show in _televisionShows)
Disabled="@(_deco.DeadAirFallbackMode != DecoMode.Override)"
{
@bind-value="_deco.DeadAirFallbackMediaItem">
<MudSelectItem Value="@show">@show.Name</MudSelectItem>
@foreach (NamedMediaItemViewModel show in _televisionShows)
}
{
</MudSelect>
<MudSelectItem Value="@show">@show.Name</MudSelectItem>
}
</MudSelect>
</MudStack>
}
}
@if (_deco.DeadAirFallbackCollectionType == ProgramScheduleItemCollectionType.TelevisionSeason)
@if (_deco.DeadAirFallbackCollectionType == ProgramScheduleItemCollectionType.TelevisionSeason)
{
{
<MudSelect Class="mt-3"
<MudStack Row="true" Breakpoint="Breakpoint.SmAndDown" Class="form-field-stack gap-md-8 mb-5">
T="NamedMediaItemViewModel"
<div class="d-flex">
Disabled="@(_deco.DeadAirFallbackMode != DecoMode.Override)"
<MudText>Television Season</MudText>
Label="Television Season"
</div>
@bind-value="_deco.DeadAirFallbackMediaItem">
<MudSelect T="NamedMediaItemViewModel"
@foreach (NamedMediaItemViewModel season in _televisionSeasons)
Disabled="@(_deco.DeadAirFallbackMode != DecoMode.Override)"
{
@bind-value="_deco.DeadAirFallbackMediaItem">
<MudSelectItem Value="@season">@season.Name</MudSelectItem>
@foreach (NamedMediaItemViewModel season in _televisionSeasons)
}
{
</MudSelect>
<MudSelectItem Value="@season">@season.Name</MudSelectItem>
}
</MudSelect>
</MudStack>
}
}
@if (_deco.DeadAirFallbackCollectionType == ProgramScheduleItemCollectionType.Artist)
@if (_deco.DeadAirFallbackCollectionType == ProgramScheduleItemCollectionType.Artist)
{
{
<MudSelect Class="mt-3"
<MudStack Row="true" Breakpoint="Breakpoint.SmAndDown" Class="form-field-stack gap-md-8 mb-5">
T="NamedMediaItemViewModel"
<div class="d-flex">
Disabled="@(_deco.DeadAirFallbackMode != DecoMode.Override)"
<MudText>Artist</MudText>
Label="Artist"
</div>
@bind-value="_deco.DeadAirFallbackMediaItem">
<MudSelect T="NamedMediaItemViewModel"
@foreach (NamedMediaItemViewModel artist in _artists)
Disabled="@(_deco.DeadAirFallbackMode != DecoMode.Override)"
{
@bind-value="_deco.DeadAirFallbackMediaItem">
<MudSelectItem Value="@artist">@artist.Name</MudSelectItem>
@foreach (NamedMediaItemViewModel artist in _artists)
}
{
</MudSelect>
<MudSelectItem Value="@artist">@artist.Name</MudSelectItem>
}
</MudSelect>
</MudStack>
}
}
</MudCardContent>
</MudContainer>
</MudCard>
</div>
</MudStack>
</MudForm>
</MudContainer>
@code {
@code {
private readonly CancellationTokenSource _cts = new();
private readonly CancellationTokenSource _cts = new();
@ -360,34 +395,34 @@
DefaultFillerMode = deco.DefaultFillerMode,
DefaultFillerMode = deco.DefaultFillerMode,
DefaultFillerCollectionType = deco.DefaultFillerCollectionType,
DefaultFillerCollectionType = deco.DefaultFillerCollectionType,
DefaultFillerCollection = deco.DefaultFillerCollectionId.HasValue
DefaultFillerCollection = deco.DefaultFillerCollectionId.HasValue
? _mediaCollections.Find(c => c.Id == deco.DefaultFillerCollectionId.Value)
? _mediaCollections.Find(c => c.Id == deco.DefaultFillerCollectionId! .Value)
: null,
: null,
DefaultFillerMediaItem = deco.DefaultFillerMediaItemId.HasValue
DefaultFillerMediaItem = deco.DefaultFillerMediaItemId.HasValue
? _televisionShows.Append(_televisionSeasons).Append(_artists).ToList()
? _televisionShows.Append(_televisionSeasons).Append(_artists).ToList()
.Find(vm => vm.MediaItemId == deco.DefaultFillerMediaItemId.Value)
.Find(vm => vm.MediaItemId == deco.DefaultFillerMediaItemId! .Value)
: null,
: null,
DefaultFillerMultiCollection = deco.DefaultFillerMultiCollectionId.HasValue
DefaultFillerMultiCollection = deco.DefaultFillerMultiCollectionId.HasValue
? _multiCollections.Find(c => c.Id == deco.DefaultFillerMultiCollectionId.Value)
? _multiCollections.Find(c => c.Id == deco.DefaultFillerMultiCollectionId! .Value)
: null,
: null,
DefaultFillerSmartCollection = deco.DefaultFillerSmartCollectionId.HasValue
DefaultFillerSmartCollection = deco.DefaultFillerSmartCollectionId.HasValue
? _smartCollections.Find(c => c.Id == deco.DefaultFillerSmartCollectionId.Value)
? _smartCollections.Find(c => c.Id == deco.DefaultFillerSmartCollectionId! .Value)
: null,
: null,
DefaultFillerTrimToFit = deco.DefaultFillerTrimToFit,
DefaultFillerTrimToFit = deco.DefaultFillerTrimToFit,
DeadAirFallbackMode = deco.DeadAirFallbackMode,
DeadAirFallbackMode = deco.DeadAirFallbackMode,
DeadAirFallbackCollectionType = deco.DeadAirFallbackCollectionType,
DeadAirFallbackCollectionType = deco.DeadAirFallbackCollectionType,
DeadAirFallbackCollection = deco.DeadAirFallbackCollectionId.HasValue
DeadAirFallbackCollection = deco.DeadAirFallbackCollectionId.HasValue
? _mediaCollections.Find(c => c.Id == deco.DeadAirFallbackCollectionId.Value)
? _mediaCollections.Find(c => c.Id == deco.DeadAirFallbackCollectionId! .Value)
: null,
: null,
DeadAirFallbackMediaItem = deco.DeadAirFallbackMediaItemId.HasValue
DeadAirFallbackMediaItem = deco.DeadAirFallbackMediaItemId.HasValue
? _televisionShows.Append(_televisionSeasons).Append(_artists).ToList()
? _televisionShows.Append(_televisionSeasons).Append(_artists).ToList()
.Find(vm => vm.MediaItemId == deco.DeadAirFallbackMediaItemId.Value)
.Find(vm => vm.MediaItemId == deco.DeadAirFallbackMediaItemId! .Value)
: null,
: null,
DeadAirFallbackMultiCollection = deco.DeadAirFallbackMultiCollectionId.HasValue
DeadAirFallbackMultiCollection = deco.DeadAirFallbackMultiCollectionId.HasValue
? _multiCollections.Find(c => c.Id == deco.DeadAirFallbackMultiCollectionId.Value)
? _multiCollections.Find(c => c.Id == deco.DeadAirFallbackMultiCollectionId! .Value)
: null,
: null,
DeadAirFallbackSmartCollection = deco.DeadAirFallbackSmartCollectionId.HasValue
DeadAirFallbackSmartCollection = deco.DeadAirFallbackSmartCollectionId.HasValue
? _smartCollections.Find(c => c.Id == deco.DeadAirFallbackSmartCollectionId.Value)
? _smartCollections.Find(c => c.Id == deco.DeadAirFallbackSmartCollectionId! .Value)
: null
: null
};
};
}
}