|
|
|
@ -5,6 +5,7 @@ |
|
|
|
@using ErsatzTV.Application.Television |
|
|
|
@using ErsatzTV.Application.Television |
|
|
|
@using ErsatzTV.Application.Watermarks |
|
|
|
@using ErsatzTV.Application.Watermarks |
|
|
|
@using ErsatzTV.Application.Filler |
|
|
|
@using ErsatzTV.Application.Filler |
|
|
|
|
|
|
|
@using System.Globalization |
|
|
|
@using ErsatzTV.Core.Domain.Filler |
|
|
|
@using ErsatzTV.Core.Domain.Filler |
|
|
|
@using ErsatzTV.Application.Artists |
|
|
|
@using ErsatzTV.Application.Artists |
|
|
|
@implements IDisposable |
|
|
|
@implements IDisposable |
|
|
|
@ -89,205 +90,236 @@ |
|
|
|
@if (_selectedItem is not null) |
|
|
|
@if (_selectedItem is not null) |
|
|
|
{ |
|
|
|
{ |
|
|
|
<EditForm Model="_selectedItem"> |
|
|
|
<EditForm Model="_selectedItem"> |
|
|
|
<FluentValidator/> |
|
|
|
<FluentValidator/> |
|
|
|
<div style="display: flex; flex-direction: row;" class="mt-6"> |
|
|
|
<div style="display: flex; flex-direction: row;" class="mt-6"> |
|
|
|
<div style="flex-grow: 1; max-width: 400px;" class="mr-6"> |
|
|
|
<div style="flex-grow: 1; max-width: 400px;" class="mr-6"> |
|
|
|
<MudCard> |
|
|
|
<MudCard> |
|
|
|
<MudCardContent> |
|
|
|
<MudCardContent> |
|
|
|
<MudSelect Label="Start Type" @bind-Value="_selectedItem.StartType" For="@(() => _selectedItem.StartType)"> |
|
|
|
<MudSelect Label="Start Type" @bind-Value="_selectedItem.StartType" For="@(() => _selectedItem.StartType)"> |
|
|
|
<MudSelectItem Value="StartType.Dynamic">Dynamic</MudSelectItem> |
|
|
|
<MudSelectItem Value="StartType.Dynamic">Dynamic</MudSelectItem> |
|
|
|
@if (!_schedule.ShuffleScheduleItems) |
|
|
|
@if (!_schedule.ShuffleScheduleItems) |
|
|
|
{ |
|
|
|
{ |
|
|
|
<MudSelectItem Value="StartType.Fixed">Fixed</MudSelectItem> |
|
|
|
<MudSelectItem Value="StartType.Fixed">Fixed</MudSelectItem> |
|
|
|
} |
|
|
|
} |
|
|
|
</MudSelect> |
|
|
|
</MudSelect> |
|
|
|
<MudTimePicker Class="mt-3" Label="Start Time" @bind-Time="@_selectedItem.StartTime" For="@(() => _selectedItem.StartTime)" Disabled="@(_selectedItem.StartType == StartType.Dynamic)"/> |
|
|
|
<MudTimePicker Class="mt-3" Label="Start Time" @bind-Time="@_selectedItem.StartTime" For="@(() => _selectedItem.StartTime)" Disabled="@(_selectedItem.StartType == StartType.Dynamic)"/> |
|
|
|
<MudSelect Class="mt-3" Label="Collection Type" @bind-Value="_selectedItem.CollectionType" For="@(() => _selectedItem.CollectionType)"> |
|
|
|
<MudSelect Class="mt-3" Label="Collection Type" @bind-Value="_selectedItem.CollectionType" For="@(() => _selectedItem.CollectionType)"> |
|
|
|
@foreach (ProgramScheduleItemCollectionType collectionType in Enum.GetValues<ProgramScheduleItemCollectionType>()) |
|
|
|
@foreach (ProgramScheduleItemCollectionType collectionType in Enum.GetValues<ProgramScheduleItemCollectionType>()) |
|
|
|
{ |
|
|
|
{ |
|
|
|
<MudSelectItem Value="@collectionType">@collectionType</MudSelectItem> |
|
|
|
<MudSelectItem Value="@collectionType">@collectionType</MudSelectItem> |
|
|
|
} |
|
|
|
} |
|
|
|
</MudSelect> |
|
|
|
</MudSelect> |
|
|
|
@if (_selectedItem.CollectionType == ProgramScheduleItemCollectionType.Collection) |
|
|
|
@if (_selectedItem.CollectionType == ProgramScheduleItemCollectionType.Collection) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
<MudSelect Class="mt-3" |
|
|
|
|
|
|
|
T="MediaCollectionViewModel" |
|
|
|
|
|
|
|
Label="Collection" |
|
|
|
|
|
|
|
@bind-value="_selectedItem.Collection"> |
|
|
|
|
|
|
|
@foreach (MediaCollectionViewModel collection in _mediaCollections) |
|
|
|
{ |
|
|
|
{ |
|
|
|
<MudSelect Class="mt-3" |
|
|
|
<MudSelectItem Value="@collection">@collection.Name</MudSelectItem> |
|
|
|
T="MediaCollectionViewModel" |
|
|
|
|
|
|
|
Label="Collection" |
|
|
|
|
|
|
|
@bind-value="_selectedItem.Collection"> |
|
|
|
|
|
|
|
@foreach (MediaCollectionViewModel collection in _mediaCollections) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
<MudSelectItem Value="@collection">@collection.Name</MudSelectItem> |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
</MudSelect> |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
@if (_selectedItem.CollectionType == ProgramScheduleItemCollectionType.MultiCollection) |
|
|
|
</MudSelect> |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
@if (_selectedItem.CollectionType == ProgramScheduleItemCollectionType.MultiCollection) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
<MudSelect Class="mt-3" |
|
|
|
|
|
|
|
T="MultiCollectionViewModel" |
|
|
|
|
|
|
|
Label="Multi Collection" |
|
|
|
|
|
|
|
@bind-value="_selectedItem.MultiCollection"> |
|
|
|
|
|
|
|
@foreach (MultiCollectionViewModel collection in _multiCollections) |
|
|
|
{ |
|
|
|
{ |
|
|
|
<MudSelect Class="mt-3" |
|
|
|
<MudSelectItem Value="@collection">@collection.Name</MudSelectItem> |
|
|
|
T="MultiCollectionViewModel" |
|
|
|
|
|
|
|
Label="Multi Collection" |
|
|
|
|
|
|
|
@bind-value="_selectedItem.MultiCollection"> |
|
|
|
|
|
|
|
@foreach (MultiCollectionViewModel collection in _multiCollections) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
<MudSelectItem Value="@collection">@collection.Name</MudSelectItem> |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
</MudSelect> |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
@if (_selectedItem.CollectionType == ProgramScheduleItemCollectionType.SmartCollection) |
|
|
|
</MudSelect> |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
@if (_selectedItem.CollectionType == ProgramScheduleItemCollectionType.SmartCollection) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
<MudSelect Class="mt-3" |
|
|
|
|
|
|
|
T="SmartCollectionViewModel" |
|
|
|
|
|
|
|
Label="Smart Collection" |
|
|
|
|
|
|
|
@bind-value="_selectedItem.SmartCollection"> |
|
|
|
|
|
|
|
@foreach (SmartCollectionViewModel collection in _smartCollections) |
|
|
|
{ |
|
|
|
{ |
|
|
|
<MudSelect Class="mt-3" |
|
|
|
<MudSelectItem Value="@collection">@collection.Name</MudSelectItem> |
|
|
|
T="SmartCollectionViewModel" |
|
|
|
|
|
|
|
Label="Smart Collection" |
|
|
|
|
|
|
|
@bind-value="_selectedItem.SmartCollection"> |
|
|
|
|
|
|
|
@foreach (SmartCollectionViewModel collection in _smartCollections) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
<MudSelectItem Value="@collection">@collection.Name</MudSelectItem> |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
</MudSelect> |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
@if (_selectedItem.CollectionType == ProgramScheduleItemCollectionType.TelevisionShow) |
|
|
|
</MudSelect> |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
@if (_selectedItem.CollectionType == ProgramScheduleItemCollectionType.TelevisionShow) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
<MudSelect Class="mt-3" |
|
|
|
|
|
|
|
T="NamedMediaItemViewModel" |
|
|
|
|
|
|
|
Label="Television Show" |
|
|
|
|
|
|
|
@bind-value="_selectedItem.MediaItem"> |
|
|
|
|
|
|
|
@foreach (NamedMediaItemViewModel show in _televisionShows) |
|
|
|
{ |
|
|
|
{ |
|
|
|
<MudSelect Class="mt-3" |
|
|
|
<MudSelectItem Value="@show">@show.Name</MudSelectItem> |
|
|
|
T="NamedMediaItemViewModel" |
|
|
|
|
|
|
|
Label="Television Show" |
|
|
|
|
|
|
|
@bind-value="_selectedItem.MediaItem"> |
|
|
|
|
|
|
|
@foreach (NamedMediaItemViewModel show in _televisionShows) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
<MudSelectItem Value="@show">@show.Name</MudSelectItem> |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
</MudSelect> |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
@if (_selectedItem.CollectionType == ProgramScheduleItemCollectionType.TelevisionSeason) |
|
|
|
</MudSelect> |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
@if (_selectedItem.CollectionType == ProgramScheduleItemCollectionType.TelevisionSeason) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
<MudSelect Class="mt-3" |
|
|
|
|
|
|
|
T="NamedMediaItemViewModel" |
|
|
|
|
|
|
|
Label="Television Season" |
|
|
|
|
|
|
|
@bind-value="_selectedItem.MediaItem"> |
|
|
|
|
|
|
|
@foreach (NamedMediaItemViewModel season in _televisionSeasons) |
|
|
|
{ |
|
|
|
{ |
|
|
|
<MudSelect Class="mt-3" |
|
|
|
<MudSelectItem Value="@season">@season.Name</MudSelectItem> |
|
|
|
T="NamedMediaItemViewModel" |
|
|
|
|
|
|
|
Label="Television Season" |
|
|
|
|
|
|
|
@bind-value="_selectedItem.MediaItem"> |
|
|
|
|
|
|
|
@foreach (NamedMediaItemViewModel season in _televisionSeasons) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
<MudSelectItem Value="@season">@season.Name</MudSelectItem> |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
</MudSelect> |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
@if (_selectedItem.CollectionType == ProgramScheduleItemCollectionType.Artist) |
|
|
|
</MudSelect> |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
@if (_selectedItem.CollectionType == ProgramScheduleItemCollectionType.Artist) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
<MudSelect Class="mt-3" |
|
|
|
|
|
|
|
T="NamedMediaItemViewModel" |
|
|
|
|
|
|
|
Label="Artist" |
|
|
|
|
|
|
|
@bind-value="_selectedItem.MediaItem"> |
|
|
|
|
|
|
|
@foreach (NamedMediaItemViewModel artist in _artists) |
|
|
|
{ |
|
|
|
{ |
|
|
|
<MudSelect Class="mt-3" |
|
|
|
<MudSelectItem Value="@artist">@artist.Name</MudSelectItem> |
|
|
|
T="NamedMediaItemViewModel" |
|
|
|
|
|
|
|
Label="Artist" |
|
|
|
|
|
|
|
@bind-value="_selectedItem.MediaItem"> |
|
|
|
|
|
|
|
@foreach (NamedMediaItemViewModel artist in _artists) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
<MudSelectItem Value="@artist">@artist.Name</MudSelectItem> |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
</MudSelect> |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
<MudSelect Class="mt-3" Label="Playback Order" @bind-Value="@_selectedItem.PlaybackOrder" For="@(() => _selectedItem.PlaybackOrder)"> |
|
|
|
</MudSelect> |
|
|
|
@switch (_selectedItem.CollectionType) |
|
|
|
} |
|
|
|
{ |
|
|
|
<MudSelect Class="mt-3" Label="Playback Order" @bind-Value="@_selectedItem.PlaybackOrder" For="@(() => _selectedItem.PlaybackOrder)"> |
|
|
|
case ProgramScheduleItemCollectionType.MultiCollection: |
|
|
|
@switch (_selectedItem.CollectionType) |
|
|
|
<MudSelectItem Value="PlaybackOrder.Shuffle">Shuffle</MudSelectItem> |
|
|
|
{ |
|
|
|
<MudSelectItem Value="PlaybackOrder.ShuffleInOrder">Shuffle In Order</MudSelectItem> |
|
|
|
case ProgramScheduleItemCollectionType.MultiCollection: |
|
|
|
break; |
|
|
|
<MudSelectItem Value="PlaybackOrder.Shuffle">Shuffle</MudSelectItem> |
|
|
|
case ProgramScheduleItemCollectionType.Collection: |
|
|
|
<MudSelectItem Value="PlaybackOrder.ShuffleInOrder">Shuffle In Order</MudSelectItem> |
|
|
|
case ProgramScheduleItemCollectionType.SmartCollection: |
|
|
|
break; |
|
|
|
<MudSelectItem Value="PlaybackOrder.Chronological">Chronological</MudSelectItem> |
|
|
|
case ProgramScheduleItemCollectionType.Collection: |
|
|
|
<MudSelectItem Value="PlaybackOrder.Random">Random</MudSelectItem> |
|
|
|
case ProgramScheduleItemCollectionType.SmartCollection: |
|
|
|
<MudSelectItem Value="PlaybackOrder.Shuffle">Shuffle</MudSelectItem> |
|
|
|
<MudSelectItem Value="PlaybackOrder.Chronological">Chronological</MudSelectItem> |
|
|
|
<MudSelectItem Value="PlaybackOrder.ShuffleInOrder">Shuffle In Order</MudSelectItem> |
|
|
|
<MudSelectItem Value="PlaybackOrder.Random">Random</MudSelectItem> |
|
|
|
break; |
|
|
|
<MudSelectItem Value="PlaybackOrder.Shuffle">Shuffle</MudSelectItem> |
|
|
|
default: |
|
|
|
<MudSelectItem Value="PlaybackOrder.ShuffleInOrder">Shuffle In Order</MudSelectItem> |
|
|
|
<MudSelectItem Value="PlaybackOrder.Chronological">Chronological</MudSelectItem> |
|
|
|
break; |
|
|
|
<MudSelectItem Value="PlaybackOrder.Random">Random</MudSelectItem> |
|
|
|
default: |
|
|
|
<MudSelectItem Value="PlaybackOrder.Shuffle">Shuffle</MudSelectItem> |
|
|
|
<MudSelectItem Value="PlaybackOrder.Chronological">Chronological</MudSelectItem> |
|
|
|
break; |
|
|
|
<MudSelectItem Value="PlaybackOrder.Random">Random</MudSelectItem> |
|
|
|
} |
|
|
|
<MudSelectItem Value="PlaybackOrder.Shuffle">Shuffle</MudSelectItem> |
|
|
|
</MudSelect> |
|
|
|
break; |
|
|
|
<MudSelect Class="mt-3" Label="Playout Mode" @bind-Value="@_selectedItem.PlayoutMode" For="@(() => _selectedItem.PlayoutMode)"> |
|
|
|
} |
|
|
|
@if (!_schedule.ShuffleScheduleItems) |
|
|
|
</MudSelect> |
|
|
|
{ |
|
|
|
<MudSelect Class="mt-3" Label="Playout Mode" @bind-Value="@_selectedItem.PlayoutMode" For="@(() => _selectedItem.PlayoutMode)"> |
|
|
|
<MudSelectItem Value="PlayoutMode.Flood">Flood</MudSelectItem> |
|
|
|
@if (!_schedule.ShuffleScheduleItems) |
|
|
|
} |
|
|
|
{ |
|
|
|
<MudSelectItem Value="PlayoutMode.One">One</MudSelectItem> |
|
|
|
<MudSelectItem Value="PlayoutMode.Flood">Flood</MudSelectItem> |
|
|
|
<MudSelectItem Value="PlayoutMode.Multiple">Multiple</MudSelectItem> |
|
|
|
} |
|
|
|
<MudSelectItem Value="PlayoutMode.Duration">Duration</MudSelectItem> |
|
|
|
<MudSelectItem Value="PlayoutMode.One">One</MudSelectItem> |
|
|
|
</MudSelect> |
|
|
|
<MudSelectItem Value="PlayoutMode.Multiple">Multiple</MudSelectItem> |
|
|
|
<MudTextField Class="mt-3" Label="Multiple Count" @bind-Value="@_selectedItem.MultipleCount" For="@(() => _selectedItem.MultipleCount)" Disabled="@(_selectedItem.PlayoutMode != PlayoutMode.Multiple)"/> |
|
|
|
<MudSelectItem Value="PlayoutMode.Duration">Duration</MudSelectItem> |
|
|
|
<MudTimePicker Class="mt-3" Label="Playout Duration" @bind-Time="@_selectedItem.PlayoutDuration" For="@(() => _selectedItem.PlayoutDuration)" Disabled="@(_selectedItem.PlayoutMode != PlayoutMode.Duration)"/> |
|
|
|
</MudSelect> |
|
|
|
<MudSelect Class="mt-3" Label="Tail Mode" @bind-Value="@_selectedItem.TailMode" For="@(() => _selectedItem.TailMode)" Disabled="@(_selectedItem.PlayoutMode != PlayoutMode.Duration)"> |
|
|
|
<MudTextField Class="mt-3" Label="Multiple Count" @bind-Value="@_selectedItem.MultipleCount" For="@(() => _selectedItem.MultipleCount)" Disabled="@(_selectedItem.PlayoutMode != PlayoutMode.Multiple)"/> |
|
|
|
<MudSelectItem Value="@TailMode.None">(none)</MudSelectItem> |
|
|
|
<MudTimePicker Class="mt-3" Label="Playout Duration" @bind-Time="@_selectedItem.PlayoutDuration" For="@(() => _selectedItem.PlayoutDuration)" Disabled="@(_selectedItem.PlayoutMode != PlayoutMode.Duration)"/> |
|
|
|
<MudSelectItem Value="@TailMode.Offline">Offline</MudSelectItem> |
|
|
|
<MudSelect Class="mt-3" Label="Tail Mode" @bind-Value="@_selectedItem.TailMode" For="@(() => _selectedItem.TailMode)" Disabled="@(_selectedItem.PlayoutMode != PlayoutMode.Duration)"> |
|
|
|
<MudSelectItem Value="@TailMode.Filler">Filler</MudSelectItem> |
|
|
|
<MudSelectItem Value="@TailMode.None">(none)</MudSelectItem> |
|
|
|
</MudSelect> |
|
|
|
<MudSelectItem Value="@TailMode.Offline">Offline</MudSelectItem> |
|
|
|
<MudTextField Class="mt-3" Label="Custom Title" @bind-Value="@_selectedItem.CustomTitle" For="@(() => _selectedItem.CustomTitle)"/> |
|
|
|
<MudSelectItem Value="@TailMode.Filler">Filler</MudSelectItem> |
|
|
|
<MudSelect Class="mt-3" Label="Guide Mode" @bind-Value="@_selectedItem.GuideMode" For="@(() => _selectedItem.GuideMode)"> |
|
|
|
</MudSelect> |
|
|
|
<MudSelectItem Value="@GuideMode.Normal">Normal</MudSelectItem> |
|
|
|
<MudTextField Class="mt-3" Label="Custom Title" @bind-Value="@_selectedItem.CustomTitle" For="@(() => _selectedItem.CustomTitle)"/> |
|
|
|
<MudSelectItem Value="@GuideMode.Filler">Filler</MudSelectItem> |
|
|
|
<MudSelect Class="mt-3" Label="Guide Mode" @bind-Value="@_selectedItem.GuideMode" For="@(() => _selectedItem.GuideMode)"> |
|
|
|
</MudSelect> |
|
|
|
<MudSelectItem Value="@GuideMode.Normal">Normal</MudSelectItem> |
|
|
|
<MudSelect Class="mt-3" Label="Watermark" @bind-Value="@_selectedItem.Watermark" For="@(() => _selectedItem.Watermark)" Clearable="true"> |
|
|
|
<MudSelectItem Value="@GuideMode.Filler">Filler</MudSelectItem> |
|
|
|
@foreach (WatermarkViewModel watermark in _watermarks) |
|
|
|
</MudSelect> |
|
|
|
{ |
|
|
|
</MudCardContent> |
|
|
|
<MudSelectItem Value="@watermark">@watermark.Name</MudSelectItem> |
|
|
|
</MudCard> |
|
|
|
} |
|
|
|
</div> |
|
|
|
</MudSelect> |
|
|
|
<div style="flex-grow: 1; max-width: 400px;"> |
|
|
|
</MudCardContent> |
|
|
|
<MudCard> |
|
|
|
</MudCard> |
|
|
|
<MudCardContent> |
|
|
|
</div> |
|
|
|
<MudSelect T="FillerPresetViewModel" |
|
|
|
<div style="flex-grow: 1; max-width: 400px;"> |
|
|
|
Label="Pre-Roll Filler" |
|
|
|
<MudCard> |
|
|
|
@bind-value="_selectedItem.PreRollFiller" |
|
|
|
<MudCardContent> |
|
|
|
Clearable="true"> |
|
|
|
<MudSelect Class="mt-3" |
|
|
|
@foreach (FillerPresetViewModel filler in _fillerPresets.Where(f => f.FillerKind == FillerKind.PreRoll)) |
|
|
|
T="FillerPresetViewModel" |
|
|
|
{ |
|
|
|
Label="Pre-Roll Filler" |
|
|
|
<MudSelectItem Value="@filler">@filler.Name</MudSelectItem> |
|
|
|
@bind-value="_selectedItem.PreRollFiller" |
|
|
|
} |
|
|
|
Clearable="true"> |
|
|
|
</MudSelect> |
|
|
|
@foreach (FillerPresetViewModel filler in _fillerPresets.Where(f => f.FillerKind == FillerKind.PreRoll)) |
|
|
|
<MudSelect Class="mt-3" |
|
|
|
{ |
|
|
|
T="FillerPresetViewModel" |
|
|
|
<MudSelectItem Value="@filler">@filler.Name</MudSelectItem> |
|
|
|
Label="Mid-Roll Filler" |
|
|
|
} |
|
|
|
@bind-value="_selectedItem.MidRollFiller" |
|
|
|
</MudSelect> |
|
|
|
Clearable="true"> |
|
|
|
<MudSelect Class="mt-3" |
|
|
|
@foreach (FillerPresetViewModel filler in _fillerPresets.Where(f => f.FillerKind == FillerKind.MidRoll)) |
|
|
|
T="FillerPresetViewModel" |
|
|
|
{ |
|
|
|
Label="Mid-Roll Filler" |
|
|
|
<MudSelectItem Value="@filler">@filler.Name</MudSelectItem> |
|
|
|
@bind-value="_selectedItem.MidRollFiller" |
|
|
|
} |
|
|
|
Clearable="true"> |
|
|
|
</MudSelect> |
|
|
|
@foreach (FillerPresetViewModel filler in _fillerPresets.Where(f => f.FillerKind == FillerKind.MidRoll)) |
|
|
|
<MudSelect Class="mt-3" |
|
|
|
{ |
|
|
|
T="FillerPresetViewModel" |
|
|
|
<MudSelectItem Value="@filler">@filler.Name</MudSelectItem> |
|
|
|
Label="Post-Roll Filler" |
|
|
|
} |
|
|
|
@bind-value="_selectedItem.PostRollFiller" |
|
|
|
</MudSelect> |
|
|
|
Clearable="true"> |
|
|
|
<MudSelect Class="mt-3" |
|
|
|
@foreach (FillerPresetViewModel filler in _fillerPresets.Where(f => f.FillerKind == FillerKind.PostRoll)) |
|
|
|
T="FillerPresetViewModel" |
|
|
|
{ |
|
|
|
Label="Post-Roll Filler" |
|
|
|
<MudSelectItem Value="@filler">@filler.Name</MudSelectItem> |
|
|
|
@bind-value="_selectedItem.PostRollFiller" |
|
|
|
} |
|
|
|
Clearable="true"> |
|
|
|
</MudSelect> |
|
|
|
@foreach (FillerPresetViewModel filler in _fillerPresets.Where(f => f.FillerKind == FillerKind.PostRoll)) |
|
|
|
<MudSelect Class="mt-3" |
|
|
|
{ |
|
|
|
T="FillerPresetViewModel" |
|
|
|
<MudSelectItem Value="@filler">@filler.Name</MudSelectItem> |
|
|
|
Label="Tail Filler" |
|
|
|
} |
|
|
|
@bind-value="_selectedItem.TailFiller" |
|
|
|
</MudSelect> |
|
|
|
Clearable="true"> |
|
|
|
<MudSelect Class="mt-3" |
|
|
|
@foreach (FillerPresetViewModel filler in _fillerPresets.Where(f => f.FillerKind == FillerKind.Tail)) |
|
|
|
T="FillerPresetViewModel" |
|
|
|
{ |
|
|
|
Label="Tail Filler" |
|
|
|
<MudSelectItem Value="@filler">@filler.Name</MudSelectItem> |
|
|
|
@bind-value="_selectedItem.TailFiller" |
|
|
|
} |
|
|
|
Clearable="true"> |
|
|
|
</MudSelect> |
|
|
|
@foreach (FillerPresetViewModel filler in _fillerPresets.Where(f => f.FillerKind == FillerKind.Tail)) |
|
|
|
<MudSelect Class="mt-3" |
|
|
|
{ |
|
|
|
T="FillerPresetViewModel" |
|
|
|
<MudSelectItem Value="@filler">@filler.Name</MudSelectItem> |
|
|
|
Label="Fallback Filler" |
|
|
|
} |
|
|
|
@bind-value="_selectedItem.FallbackFiller" |
|
|
|
</MudSelect> |
|
|
|
Clearable="true"> |
|
|
|
<MudSelect Class="mt-3" |
|
|
|
@foreach (FillerPresetViewModel filler in _fillerPresets.Where(f => f.FillerKind == FillerKind.Fallback)) |
|
|
|
T="FillerPresetViewModel" |
|
|
|
{ |
|
|
|
Label="Fallback Filler" |
|
|
|
<MudSelectItem Value="@filler">@filler.Name</MudSelectItem> |
|
|
|
@bind-value="_selectedItem.FallbackFiller" |
|
|
|
} |
|
|
|
Clearable="true"> |
|
|
|
</MudSelect> |
|
|
|
@foreach (FillerPresetViewModel filler in _fillerPresets.Where(f => f.FillerKind == FillerKind.Fallback)) |
|
|
|
</MudCardContent> |
|
|
|
{ |
|
|
|
</MudCard> |
|
|
|
<MudSelectItem Value="@filler">@filler.Name</MudSelectItem> |
|
|
|
<MudCard Class="mt-4"> |
|
|
|
} |
|
|
|
<MudCardContent> |
|
|
|
</MudSelect> |
|
|
|
<MudSelect Label="Watermark" @bind-Value="@_selectedItem.Watermark" For="@(() => _selectedItem.Watermark)" Clearable="true"> |
|
|
|
</MudCardContent> |
|
|
|
@foreach (WatermarkViewModel watermark in _watermarks) |
|
|
|
</MudCard> |
|
|
|
{ |
|
|
|
</div> |
|
|
|
<MudSelectItem Value="@watermark">@watermark.Name</MudSelectItem> |
|
|
|
</div> |
|
|
|
} |
|
|
|
|
|
|
|
</MudSelect> |
|
|
|
|
|
|
|
<MudSelect Class="mt-3" |
|
|
|
|
|
|
|
Label="Preferred Audio Language" |
|
|
|
|
|
|
|
@bind-Value="_selectedItem.PreferredAudioLanguageCode" |
|
|
|
|
|
|
|
For="@(() => _selectedItem.PreferredAudioLanguageCode)" |
|
|
|
|
|
|
|
Clearable="true"> |
|
|
|
|
|
|
|
<MudSelectItem Value="@((string)null)">(none)</MudSelectItem> |
|
|
|
|
|
|
|
@foreach (CultureInfo culture in _availableCultures) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
<MudSelectItem Value="@culture.ThreeLetterISOLanguageName">@culture.EnglishName</MudSelectItem> |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
</MudSelect> |
|
|
|
|
|
|
|
<MudSelect Class="mt-3" |
|
|
|
|
|
|
|
Label="Preferred Subtitle Language" |
|
|
|
|
|
|
|
@bind-Value="_selectedItem.PreferredSubtitleLanguageCode" |
|
|
|
|
|
|
|
For="@(() => _selectedItem.PreferredSubtitleLanguageCode)" |
|
|
|
|
|
|
|
Clearable="true"> |
|
|
|
|
|
|
|
<MudSelectItem Value="@((string)null)">(none)</MudSelectItem> |
|
|
|
|
|
|
|
@foreach (CultureInfo culture in _availableCultures) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
<MudSelectItem Value="@culture.ThreeLetterISOLanguageName">@culture.EnglishName</MudSelectItem> |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
</MudSelect> |
|
|
|
|
|
|
|
<MudSelect T="ChannelSubtitleMode?" Class="mt-3" Label="Subtitle Mode" @bind-Value="_selectedItem.SubtitleMode" For="@(() => _selectedItem.SubtitleMode)" Clearable="true"> |
|
|
|
|
|
|
|
<MudSelectItem T="ChannelSubtitleMode?" Value="@(ChannelSubtitleMode.None)">None</MudSelectItem> |
|
|
|
|
|
|
|
<MudSelectItem T="ChannelSubtitleMode?" Value="@(ChannelSubtitleMode.Forced)">Forced</MudSelectItem> |
|
|
|
|
|
|
|
<MudSelectItem T="ChannelSubtitleMode?" Value="@(ChannelSubtitleMode.Default)">Default</MudSelectItem> |
|
|
|
|
|
|
|
<MudSelectItem T="ChannelSubtitleMode?" Value="@(ChannelSubtitleMode.Any)">Any</MudSelectItem> |
|
|
|
|
|
|
|
</MudSelect> |
|
|
|
|
|
|
|
</MudCardContent> |
|
|
|
|
|
|
|
</MudCard> |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
</div> |
|
|
|
</EditForm> |
|
|
|
</EditForm> |
|
|
|
} |
|
|
|
} |
|
|
|
</MudContainer> |
|
|
|
</MudContainer> |
|
|
|
@ -307,6 +339,7 @@ |
|
|
|
private List<NamedMediaItemViewModel> _artists; |
|
|
|
private List<NamedMediaItemViewModel> _artists; |
|
|
|
private List<FillerPresetViewModel> _fillerPresets; |
|
|
|
private List<FillerPresetViewModel> _fillerPresets; |
|
|
|
private List<WatermarkViewModel> _watermarks; |
|
|
|
private List<WatermarkViewModel> _watermarks; |
|
|
|
|
|
|
|
private List<CultureInfo> _availableCultures; |
|
|
|
|
|
|
|
|
|
|
|
private ProgramScheduleItemEditViewModel _selectedItem; |
|
|
|
private ProgramScheduleItemEditViewModel _selectedItem; |
|
|
|
|
|
|
|
|
|
|
|
@ -337,6 +370,7 @@ |
|
|
|
.Map(list => list.OrderBy(vm => vm.Name, StringComparer.CurrentCultureIgnoreCase).ToList()); |
|
|
|
.Map(list => list.OrderBy(vm => vm.Name, StringComparer.CurrentCultureIgnoreCase).ToList()); |
|
|
|
_watermarks = await _mediator.Send(new GetAllWatermarks(), _cts.Token) |
|
|
|
_watermarks = await _mediator.Send(new GetAllWatermarks(), _cts.Token) |
|
|
|
.Map(list => list.OrderBy(vm => vm.Name, StringComparer.CurrentCultureIgnoreCase).ToList()); |
|
|
|
.Map(list => list.OrderBy(vm => vm.Name, StringComparer.CurrentCultureIgnoreCase).ToList()); |
|
|
|
|
|
|
|
_availableCultures = await _mediator.Send(new GetAllLanguageCodes(), _cts.Token); |
|
|
|
|
|
|
|
|
|
|
|
string name = string.Empty; |
|
|
|
string name = string.Empty; |
|
|
|
var shuffleScheduleItems = false; |
|
|
|
var shuffleScheduleItems = false; |
|
|
|
@ -386,7 +420,10 @@ |
|
|
|
PostRollFiller = item.PostRollFiller, |
|
|
|
PostRollFiller = item.PostRollFiller, |
|
|
|
TailFiller = item.TailFiller, |
|
|
|
TailFiller = item.TailFiller, |
|
|
|
FallbackFiller = item.FallbackFiller, |
|
|
|
FallbackFiller = item.FallbackFiller, |
|
|
|
Watermark = item.Watermark |
|
|
|
Watermark = item.Watermark, |
|
|
|
|
|
|
|
PreferredAudioLanguageCode = item.PreferredAudioLanguageCode, |
|
|
|
|
|
|
|
PreferredSubtitleLanguageCode = item.PreferredSubtitleLanguageCode, |
|
|
|
|
|
|
|
SubtitleMode = item.SubtitleMode |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
switch (item) |
|
|
|
switch (item) |
|
|
|
@ -461,7 +498,10 @@ |
|
|
|
item.PostRollFiller?.Id, |
|
|
|
item.PostRollFiller?.Id, |
|
|
|
item.TailFiller?.Id, |
|
|
|
item.TailFiller?.Id, |
|
|
|
item.FallbackFiller?.Id, |
|
|
|
item.FallbackFiller?.Id, |
|
|
|
item.Watermark?.Id)).ToList(); |
|
|
|
item.Watermark?.Id, |
|
|
|
|
|
|
|
item.PreferredAudioLanguageCode, |
|
|
|
|
|
|
|
item.PreferredSubtitleLanguageCode, |
|
|
|
|
|
|
|
item.SubtitleMode)).ToList(); |
|
|
|
|
|
|
|
|
|
|
|
Seq<BaseError> errorMessages = await _mediator.Send(new ReplaceProgramScheduleItems(Id, items), _cts.Token).Map(e => e.LeftToSeq()); |
|
|
|
Seq<BaseError> errorMessages = await _mediator.Send(new ReplaceProgramScheduleItems(Id, items), _cts.Token).Map(e => e.LeftToSeq()); |
|
|
|
|
|
|
|
|
|
|
|
|