@ -105,57 +105,75 @@
</MudSelect>
</MudSelect>
@if (_selectedItem.CollectionType == ProgramScheduleItemCollectionType.Collection)
@if (_selectedItem.CollectionType == ProgramScheduleItemCollectionType.Collection)
{
{
<MudAutocomplete Class="mt-3"
<MudSelect Class="mt-3"
T="MediaCollectionViewModel"
T="MediaCollectionViewModel"
Label="Collection"
Label="Collection"
@bind-value="_selectedItem.Collection"
@bind-value="_selectedItem.Collection">
SearchFunc="@SearchMediaCollections"
@foreach (MediaCollectionViewModel collection in _mediaCollections)
ToStringFunc="@(c => c?.Name)"/>
{
<MudSelectItem Value="@collection">@collection.Name</MudSelectItem>
}
</MudSelect>
}
}
@if (_selectedItem.CollectionType == ProgramScheduleItemCollectionType.MultiCollection)
@if (_selectedItem.CollectionType == ProgramScheduleItemCollectionType.MultiCollection)
{
{
<MudAutocomplete Class="mt-3"
<MudSelect Class="mt-3"
T="MultiCollectionViewModel"
T="MultiCollectionViewModel"
Label="Multi Collection"
Label="Multi Collection"
@bind-value="_selectedItem.MultiCollection"
@bind-value="_selectedItem.MultiCollection">
SearchFunc="@SearchMultiCollections"
@foreach (MultiCollectionViewModel collection in _multiCollections)
ToStringFunc="@(c => c?.Name)"/>
{
<MudSelectItem Value="@collection">@collection.Name</MudSelectItem>
}
</MudSelect>
}
}
@if (_selectedItem.CollectionType == ProgramScheduleItemCollectionType.SmartCollection)
@if (_selectedItem.CollectionType == ProgramScheduleItemCollectionType.SmartCollection)
{
{
<MudAutocomplete Class="mt-3"
<MudSelect Class="mt-3"
T="SmartCollectionViewModel"
T="SmartCollectionViewModel"
Label="Smart Collection"
Label="Smart Collection"
@bind-value="_selectedItem.SmartCollection"
@bind-value="_selectedItem.SmartCollection">
SearchFunc="@SearchSmartCollections"
@foreach (SmartCollectionViewModel collection in _smartCollections)
ToStringFunc="@(c => c?.Name)"/>
{
<MudSelectItem Value="@collection">@collection.Name</MudSelectItem>
}
</MudSelect>
}
}
@if (_selectedItem.CollectionType == ProgramScheduleItemCollectionType.TelevisionShow)
@if (_selectedItem.CollectionType == ProgramScheduleItemCollectionType.TelevisionShow)
{
{
<MudAutocomplete Class="mt-3"
<MudSelect Class="mt-3"
T="NamedMediaItemViewModel"
T="NamedMediaItemViewModel"
Label="Television Show"
Label="Television Show"
@bind-value="_selectedItem.MediaItem"
@bind-value="_selectedItem.MediaItem">
SearchFunc="@SearchTelevisionShows"
@foreach (NamedMediaItemViewModel show in _televisionShows)
ToStringFunc="@(s => s?.Name)"/>
{
<MudSelectItem Value="@show">@show.Name</MudSelectItem>
}
</MudSelect>
}
}
@if (_selectedItem.CollectionType == ProgramScheduleItemCollectionType.TelevisionSeason)
@if (_selectedItem.CollectionType == ProgramScheduleItemCollectionType.TelevisionSeason)
{
{
<MudAutocomplete Class="mt-3"
<MudSelect Class="mt-3"
T="NamedMediaItemViewModel"
T="NamedMediaItemViewModel"
Label="Television Season"
Label="Television Season"
@bind-value="_selectedItem.MediaItem"
@bind-value="_selectedItem.MediaItem">
SearchFunc="@SearchTelevisionSeasons"
@foreach (NamedMediaItemViewModel season in _televisionSeasons)
ToStringFunc="@(s => s?.Name)"/>
{
<MudSelectItem Value="@season">@season.Name</MudSelectItem>
}
</MudSelect>
}
}
@if (_selectedItem.CollectionType == ProgramScheduleItemCollectionType.Artist)
@if (_selectedItem.CollectionType == ProgramScheduleItemCollectionType.Artist)
{
{
<MudAutocomplete Class="mt-3"
<MudSelect Class="mt-3"
T="NamedMediaItemViewModel"
T="NamedMediaItemViewModel"
Label="Artist"
Label="Artist"
@bind-value="_selectedItem.MediaItem"
@bind-value="_selectedItem.MediaItem">
SearchFunc="@SearchArtists"
@foreach (NamedMediaItemViewModel artist in _artists)
ToStringFunc="@(s => s?.Name)"/>
{
<MudSelectItem Value="@artist">@artist.Name</MudSelectItem>
}
</MudSelect>
}
}
<MudSelect Class="mt-3" Label="Playback Order" @bind-Value="@_selectedItem.PlaybackOrder" For="@(() => _selectedItem.PlaybackOrder)">
<MudSelect Class="mt-3" Label="Playback Order" @bind-Value="@_selectedItem.PlaybackOrder" For="@(() => _selectedItem.PlaybackOrder)">
@switch (_selectedItem.CollectionType)
@switch (_selectedItem.CollectionType)
@ -202,47 +220,57 @@
<div style="flex-grow: 1; max-width: 400px;">
<div style="flex-grow: 1; max-width: 400px;">
<MudCard>
<MudCard>
<MudCardContent>
<MudCardContent>
<MudAutocomplete Class="mt-3"
<MudSelect Class="mt-3"
T="FillerPresetViewModel"
T="FillerPresetViewModel"
Label="Pre-Roll Filler"
Label="Pre-Roll Filler"
@bind-value="_selectedItem.PreRollFiller"
@bind-value="_selectedItem.PreRollFiller"
SearchFunc="@(arg => SearchFillerPresets(FillerKind.PreRoll, arg))"
Clearable="true">
ToStringFunc="@(c => c?.Name)"
@foreach (FillerPresetViewModel filler in _fillerPresets.Where(f => f.FillerKind == FillerKind.PreRoll))
ResetValueOnEmptyText="true"
{
Clearable="true"/>
<MudSelectItem Value="@filler">@filler.Name</MudSelectItem>
<MudAutocomplete Class="mt-3"
}
T="FillerPresetViewModel"
</MudSelect>
Label="Mid-Roll Filler"
<MudSelect Class="mt-3"
@bind-value="_selectedItem.MidRollFiller"
T="FillerPresetViewModel"
SearchFunc="@(arg => SearchFillerPresets(FillerKind.MidRoll, arg))"
Label="Mid-Roll Filler"
ToStringFunc="@(c => c?.Name)"
@bind-value="_selectedItem.MidRollFiller"
ResetValueOnEmptyText="true"
Clearable="true">
Clearable="true"/>
@foreach (FillerPresetViewModel filler in _fillerPresets.Where(f => f.FillerKind == FillerKind.MidRoll))
<MudAutocomplete Class="mt-3"
{
T="FillerPresetViewModel"
<MudSelectItem Value="@filler">@filler.Name</MudSelectItem>
Label="Post-Roll Filler"
}
@bind-value="_selectedItem.PostRollFiller"
</MudSelect>
SearchFunc="@(arg => SearchFillerPresets(FillerKind.PostRoll, arg))"
<MudSelect Class="mt-3"
ToStringFunc="@(c => c?.Name)"
T="FillerPresetViewModel"
ResetValueOnEmptyText="true"
Label="Post-Roll Filler"
Clearable="true"/>
@bind-value="_selectedItem.PostRollFiller"
<MudAutocomplete Class="mt-3"
Clearable="true">
T="FillerPresetViewModel"
@foreach (FillerPresetViewModel filler in _fillerPresets.Where(f => f.FillerKind == FillerKind.PostRoll))
Label="Tail Filler"
{
@bind-value="_selectedItem.TailFiller"
<MudSelectItem Value="@filler">@filler.Name</MudSelectItem>
SearchFunc="@(arg => SearchFillerPresets(FillerKind.Tail, arg))"
}
ToStringFunc="@(c => c?.Name)"
</MudSelect>
ResetValueOnEmptyText="true"
<MudSelect Class="mt-3"
Clearable="true"/>
T="FillerPresetViewModel"
<MudAutocomplete Class="mt-3"
Label="Tail Filler"
T="FillerPresetViewModel"
@bind-value="_selectedItem.TailFiller"
Label="Fallback Filler"
Clearable="true">
@bind-value="_selectedItem.FallbackFiller"
@foreach (FillerPresetViewModel filler in _fillerPresets.Where(f => f.FillerKind == FillerKind.Tail))
SearchFunc="@(arg => SearchFillerPresets(FillerKind.Fallback, arg))"
{
ToStringFunc="@(c => c?.Name)"
<MudSelectItem Value="@filler">@filler.Name</MudSelectItem>
ResetValueOnEmptyText="true"
}
Clearable="true"/>
</MudSelect>
</MudCardContent>
<MudSelect Class="mt-3"
T="FillerPresetViewModel"
Label="Fallback Filler"
@bind-value="_selectedItem.FallbackFiller"
Clearable="true">
@foreach (FillerPresetViewModel filler in _fillerPresets.Where(f => f.FillerKind == FillerKind.Fallback))
{
<MudSelectItem Value="@filler">@filler.Name</MudSelectItem>
}
</MudSelect>
</MudCardContent>
</MudCard>
</MudCard>
</div>
</div>
</div>
</div>
@ -379,24 +407,6 @@
(toSwap.Index, item.Index) = (item.Index, toSwap.Index);
(toSwap.Index, item.Index) = (item.Index, toSwap.Index);
}
}
private Task<IEnumerable<MediaCollectionViewModel>> SearchMediaCollections(string value) =>
_mediaCollections.Filter(c => c.Name.Contains(value ?? string.Empty, StringComparison.OrdinalIgnoreCase)).AsTask();
private Task<IEnumerable<MultiCollectionViewModel>> SearchMultiCollections(string value) =>
_multiCollections.Filter(c => c.Name.Contains(value ?? string.Empty, StringComparison.OrdinalIgnoreCase)).AsTask();
private Task<IEnumerable<SmartCollectionViewModel>> SearchSmartCollections(string value) =>
_smartCollections.Filter(c => c.Name.Contains(value ?? string.Empty, StringComparison.OrdinalIgnoreCase)).AsTask();
private Task<IEnumerable<NamedMediaItemViewModel>> SearchTelevisionShows(string value) =>
_televisionShows.Filter(s => s.Name.Contains(value ?? string.Empty, StringComparison.OrdinalIgnoreCase)).AsTask();
private Task<IEnumerable<NamedMediaItemViewModel>> SearchTelevisionSeasons(string value) =>
_televisionSeasons.Filter(s => s.Name.Contains(value ?? string.Empty, StringComparison.OrdinalIgnoreCase)).AsTask();
private Task<IEnumerable<NamedMediaItemViewModel>> SearchArtists(string value) =>
_artists.Filter(s => s.Name.Contains(value ?? string.Empty, StringComparison.OrdinalIgnoreCase)).AsTask();
private Task<IEnumerable<FillerPresetViewModel>> SearchFillerPresets(FillerKind fillerKind, string value) =>
private Task<IEnumerable<FillerPresetViewModel>> SearchFillerPresets(FillerKind fillerKind, string value) =>
_fillerPresets.Filter(p => p.FillerKind == fillerKind && p.Name.Contains(value ?? string.Empty, StringComparison.OrdinalIgnoreCase)).AsTask();
_fillerPresets.Filter(p => p.FillerKind == fillerKind && p.Name.Contains(value ?? string.Empty, StringComparison.OrdinalIgnoreCase)).AsTask();