Browse Source

rename channel progress mode to playout mode (#2254)

pull/2255/head
Jason Dove 5 months ago committed by GitHub
parent
commit
b52159e8db
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 4
      CHANGELOG.md
  2. 2
      ErsatzTV.Application/Channels/ChannelViewModel.cs
  3. 2
      ErsatzTV.Application/Channels/Commands/CreateChannel.cs
  4. 2
      ErsatzTV.Application/Channels/Commands/CreateChannelHandler.cs
  5. 2
      ErsatzTV.Application/Channels/Commands/UpdateChannel.cs
  6. 2
      ErsatzTV.Application/Channels/Commands/UpdateChannelHandler.cs
  7. 2
      ErsatzTV.Application/Channels/Mapper.cs
  8. 2
      ErsatzTV.Application/Playouts/Commands/CreateFloodPlayoutHandler.cs
  9. 2
      ErsatzTV.Application/Playouts/Commands/UpdateExternalJsonPlayoutHandler.cs
  10. 2
      ErsatzTV.Application/Playouts/Commands/UpdateOnDemandCheckpointHandler.cs
  11. 2
      ErsatzTV.Application/Playouts/Commands/UpdatePlayoutHandler.cs
  12. 2
      ErsatzTV.Application/Playouts/Commands/UpdateTemplatePlayoutHandler.cs
  13. 2
      ErsatzTV.Application/Playouts/PlayoutNameViewModel.cs
  14. 2
      ErsatzTV.Application/Playouts/Queries/GetAllPlayoutsHandler.cs
  15. 2
      ErsatzTV.Application/Playouts/Queries/GetPlayoutByIdHandler.cs
  16. 2
      ErsatzTV.Core/Domain/Channel.cs
  17. 4
      ErsatzTV.Core/Domain/ChannelPlayoutMode.cs
  18. 10
      ErsatzTV.Core/Scheduling/PlayoutBuilder.cs
  19. 2
      ErsatzTV.Core/Scheduling/PlayoutTimeShifter.cs
  20. 6163
      ErsatzTV.Infrastructure.MySql/Migrations/20250804184056_Rename_ChannelProgressMode.Designer.cs
  21. 28
      ErsatzTV.Infrastructure.MySql/Migrations/20250804184056_Rename_ChannelProgressMode.cs
  22. 6
      ErsatzTV.Infrastructure.MySql/Migrations/TvContextModelSnapshot.cs
  23. 6000
      ErsatzTV.Infrastructure.Sqlite/Migrations/20250804183849_Rename_ChannelProgressMode.Designer.cs
  24. 28
      ErsatzTV.Infrastructure.Sqlite/Migrations/20250804183849_Rename_ChannelProgressMode.cs
  25. 6
      ErsatzTV.Infrastructure.Sqlite/Migrations/TvContextModelSnapshot.cs
  26. 10
      ErsatzTV/Pages/ChannelEditor.razor
  27. 4
      ErsatzTV/Pages/Playouts.razor
  28. 6
      ErsatzTV/ViewModels/ChannelEditViewModel.cs

4
CHANGELOG.md

@ -65,6 +65,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- Classic schedules: always schedule the full `Duration` amount instead of stopping mid-duration - Classic schedules: always schedule the full `Duration` amount instead of stopping mid-duration
- This allows duration items to be scheduled beyond midnight - This allows duration items to be scheduled beyond midnight
- e.g. fixed start time 22:00 with 4 hour duration will schedule until 02:00 instead of stopping at midnight - e.g. fixed start time 22:00 with 4 hour duration will schedule until 02:00 instead of stopping at midnight
- Rename channel setting `Progress Mode` to `Playout Mode`
- This controls the progression of the channel's playout, and has nothing to do with transcoding
- `Always` is now called `Continuous` (playout progresses with wall clock)
- `On Demand` is unchanged (playout only progresses while a client is watching the channel)
## [25.3.1] - 2025-07-24 ## [25.3.1] - 2025-07-24
### Fixed ### Fixed

2
ErsatzTV.Application/Channels/ChannelViewModel.cs

@ -16,7 +16,7 @@ public record ChannelViewModel(
string StreamSelector, string StreamSelector,
string PreferredAudioLanguageCode, string PreferredAudioLanguageCode,
string PreferredAudioTitle, string PreferredAudioTitle,
ChannelProgressMode ProgressMode, ChannelPlayoutMode PlayoutMode,
StreamingMode StreamingMode, StreamingMode StreamingMode,
int? WatermarkId, int? WatermarkId,
int? FallbackFillerId, int? FallbackFillerId,

2
ErsatzTV.Application/Channels/Commands/CreateChannel.cs

@ -15,7 +15,7 @@ public record CreateChannel(
string StreamSelector, string StreamSelector,
string PreferredAudioLanguageCode, string PreferredAudioLanguageCode,
string PreferredAudioTitle, string PreferredAudioTitle,
ChannelProgressMode ProgressMode, ChannelPlayoutMode PlayoutMode,
StreamingMode StreamingMode, StreamingMode StreamingMode,
int? WatermarkId, int? WatermarkId,
int? FallbackFillerId, int? FallbackFillerId,

2
ErsatzTV.Application/Channels/Commands/CreateChannelHandler.cs

@ -76,7 +76,7 @@ public class CreateChannelHandler(
Group = request.Group, Group = request.Group,
Categories = request.Categories, Categories = request.Categories,
FFmpegProfileId = ffmpegProfileId, FFmpegProfileId = ffmpegProfileId,
ProgressMode = request.ProgressMode, PlayoutMode = request.PlayoutMode,
StreamingMode = request.StreamingMode, StreamingMode = request.StreamingMode,
Artwork = artwork, Artwork = artwork,
StreamSelectorMode = request.StreamSelectorMode, StreamSelectorMode = request.StreamSelectorMode,

2
ErsatzTV.Application/Channels/Commands/UpdateChannel.cs

@ -16,7 +16,7 @@ public record UpdateChannel(
string StreamSelector, string StreamSelector,
string PreferredAudioLanguageCode, string PreferredAudioLanguageCode,
string PreferredAudioTitle, string PreferredAudioTitle,
ChannelProgressMode ProgressMode, ChannelPlayoutMode PlayoutMode,
StreamingMode StreamingMode, StreamingMode StreamingMode,
int? WatermarkId, int? WatermarkId,
int? FallbackFillerId, int? FallbackFillerId,

2
ErsatzTV.Application/Channels/Commands/UpdateChannelHandler.cs

@ -92,7 +92,7 @@ public class UpdateChannelHandler(
} }
} }
c.ProgressMode = update.ProgressMode; c.PlayoutMode = update.PlayoutMode;
c.StreamingMode = update.StreamingMode; c.StreamingMode = update.StreamingMode;
c.WatermarkId = update.WatermarkId; c.WatermarkId = update.WatermarkId;
c.FallbackFillerId = update.FallbackFillerId; c.FallbackFillerId = update.FallbackFillerId;

2
ErsatzTV.Application/Channels/Mapper.cs

@ -19,7 +19,7 @@ internal static class Mapper
channel.StreamSelector, channel.StreamSelector,
channel.PreferredAudioLanguageCode, channel.PreferredAudioLanguageCode,
channel.PreferredAudioTitle, channel.PreferredAudioTitle,
channel.ProgressMode, channel.PlayoutMode,
channel.StreamingMode, channel.StreamingMode,
channel.WatermarkId, channel.WatermarkId,
channel.FallbackFillerId, channel.FallbackFillerId,

2
ErsatzTV.Application/Playouts/Commands/CreateFloodPlayoutHandler.cs

@ -37,7 +37,7 @@ public class CreateFloodPlayoutHandler : IRequestHandler<CreateFloodPlayout, Eit
await dbContext.Playouts.AddAsync(playout); await dbContext.Playouts.AddAsync(playout);
await dbContext.SaveChangesAsync(); await dbContext.SaveChangesAsync();
await _channel.WriteAsync(new BuildPlayout(playout.Id, PlayoutBuildMode.Reset)); await _channel.WriteAsync(new BuildPlayout(playout.Id, PlayoutBuildMode.Reset));
if (playout.Channel.ProgressMode is ChannelProgressMode.OnDemand) if (playout.Channel.PlayoutMode is ChannelPlayoutMode.OnDemand)
{ {
await _channel.WriteAsync(new TimeShiftOnDemandPlayout(playout.Channel.Number, DateTimeOffset.Now, false)); await _channel.WriteAsync(new TimeShiftOnDemandPlayout(playout.Channel.Number, DateTimeOffset.Now, false));
} }

2
ErsatzTV.Application/Playouts/Commands/UpdateExternalJsonPlayoutHandler.cs

@ -49,7 +49,7 @@ public class
playout.ProgramSchedulePlayoutType, playout.ProgramSchedulePlayoutType,
playout.Channel.Name, playout.Channel.Name,
playout.Channel.Number, playout.Channel.Number,
playout.Channel.ProgressMode, playout.Channel.PlayoutMode,
playout.ProgramSchedule?.Name ?? string.Empty, playout.ProgramSchedule?.Name ?? string.Empty,
playout.TemplateFile, playout.TemplateFile,
playout.ExternalJsonFile, playout.ExternalJsonFile,

2
ErsatzTV.Application/Playouts/Commands/UpdateOnDemandCheckpointHandler.cs

@ -24,7 +24,7 @@ public class UpdateOnDemandCheckpointHandler(
foreach (Playout playout in maybePlayout) foreach (Playout playout in maybePlayout)
{ {
if (playout.Channel.ProgressMode is not ChannelProgressMode.OnDemand) if (playout.Channel.PlayoutMode is not ChannelPlayoutMode.OnDemand)
{ {
return; return;
} }

2
ErsatzTV.Application/Playouts/Commands/UpdatePlayoutHandler.cs

@ -41,7 +41,7 @@ public class UpdatePlayoutHandler : IRequestHandler<UpdatePlayout, Either<BaseEr
playout.ProgramSchedulePlayoutType, playout.ProgramSchedulePlayoutType,
playout.Channel.Name, playout.Channel.Name,
playout.Channel.Number, playout.Channel.Number,
playout.Channel.ProgressMode, playout.Channel.PlayoutMode,
playout.ProgramSchedule?.Name ?? string.Empty, playout.ProgramSchedule?.Name ?? string.Empty,
playout.TemplateFile, playout.TemplateFile,
playout.ExternalJsonFile, playout.ExternalJsonFile,

2
ErsatzTV.Application/Playouts/Commands/UpdateTemplatePlayoutHandler.cs

@ -49,7 +49,7 @@ public class
playout.ProgramSchedulePlayoutType, playout.ProgramSchedulePlayoutType,
playout.Channel.Name, playout.Channel.Name,
playout.Channel.Number, playout.Channel.Number,
playout.Channel.ProgressMode, playout.Channel.PlayoutMode,
playout.ProgramSchedule?.Name ?? string.Empty, playout.ProgramSchedule?.Name ?? string.Empty,
playout.TemplateFile, playout.TemplateFile,
playout.ExternalJsonFile, playout.ExternalJsonFile,

2
ErsatzTV.Application/Playouts/PlayoutNameViewModel.cs

@ -7,7 +7,7 @@ public record PlayoutNameViewModel(
ProgramSchedulePlayoutType PlayoutType, ProgramSchedulePlayoutType PlayoutType,
string ChannelName, string ChannelName,
string ChannelNumber, string ChannelNumber,
ChannelProgressMode ProgressMode, ChannelPlayoutMode PlayoutMode,
string ScheduleName, string ScheduleName,
string TemplateFile, string TemplateFile,
string ExternalJsonFile, string ExternalJsonFile,

2
ErsatzTV.Application/Playouts/Queries/GetAllPlayoutsHandler.cs

@ -24,7 +24,7 @@ public class GetAllPlayoutsHandler : IRequestHandler<GetAllPlayouts, List<Playou
p.ProgramSchedulePlayoutType, p.ProgramSchedulePlayoutType,
p.Channel.Name, p.Channel.Name,
p.Channel.Number, p.Channel.Number,
p.Channel.ProgressMode, p.Channel.PlayoutMode,
p.ProgramScheduleId == null ? string.Empty : p.ProgramSchedule.Name, p.ProgramScheduleId == null ? string.Empty : p.ProgramSchedule.Name,
p.TemplateFile, p.TemplateFile,
p.ExternalJsonFile, p.ExternalJsonFile,

2
ErsatzTV.Application/Playouts/Queries/GetPlayoutByIdHandler.cs

@ -22,7 +22,7 @@ public class GetPlayoutByIdHandler(IDbContextFactory<TvContext> dbContextFactory
p.ProgramSchedulePlayoutType, p.ProgramSchedulePlayoutType,
p.Channel.Name, p.Channel.Name,
p.Channel.Number, p.Channel.Number,
p.Channel.ProgressMode, p.Channel.PlayoutMode,
p.ProgramScheduleId == null ? string.Empty : p.ProgramSchedule.Name, p.ProgramScheduleId == null ? string.Empty : p.ProgramSchedule.Name,
p.TemplateFile, p.TemplateFile,
p.ExternalJsonFile, p.ExternalJsonFile,

2
ErsatzTV.Core/Domain/Channel.cs

@ -32,7 +32,7 @@ public class Channel
public ChannelMusicVideoCreditsMode MusicVideoCreditsMode { get; set; } public ChannelMusicVideoCreditsMode MusicVideoCreditsMode { get; set; }
public string MusicVideoCreditsTemplate { get; set; } public string MusicVideoCreditsTemplate { get; set; }
public ChannelSongVideoMode SongVideoMode { get; set; } public ChannelSongVideoMode SongVideoMode { get; set; }
public ChannelProgressMode ProgressMode { get; set; } public ChannelPlayoutMode PlayoutMode { get; set; }
public ChannelActiveMode ActiveMode { get; set; } public ChannelActiveMode ActiveMode { get; set; }
public string WebEncodedName => WebUtility.UrlEncode(Name); public string WebEncodedName => WebUtility.UrlEncode(Name);
} }

4
ErsatzTV.Core/Domain/ChannelProgressMode.cs → ErsatzTV.Core/Domain/ChannelPlayoutMode.cs

@ -1,7 +1,7 @@
namespace ErsatzTV.Core.Domain; namespace ErsatzTV.Core.Domain;
public enum ChannelProgressMode public enum ChannelPlayoutMode
{ {
Always = 0, Continuous = 0,
OnDemand = 1 OnDemand = 1
} }

10
ErsatzTV.Core/Scheduling/PlayoutBuilder.cs

@ -84,7 +84,7 @@ public class PlayoutBuilder : IPlayoutBuilder
// } // }
// time shift on demand channel if needed // time shift on demand channel if needed
if (playout.Channel.ProgressMode is ChannelProgressMode.OnDemand && mode is not PlayoutBuildMode.Reset) if (playout.Channel.PlayoutMode is ChannelPlayoutMode.OnDemand && mode is not PlayoutBuildMode.Reset)
{ {
_playoutTimeShifter.TimeShift(playout, parameters.Start, false); _playoutTimeShifter.TimeShift(playout, parameters.Start, false);
} }
@ -251,7 +251,7 @@ public class PlayoutBuilder : IPlayoutBuilder
playout.OnDemandCheckpoint = null; playout.OnDemandCheckpoint = null;
// don't trim start for on demand channels, we want to time shift it all forward // don't trim start for on demand channels, we want to time shift it all forward
if (playout.Channel.ProgressMode is ChannelProgressMode.OnDemand) if (playout.Channel.PlayoutMode is ChannelPlayoutMode.OnDemand)
{ {
TrimStart = false; TrimStart = false;
} }
@ -265,7 +265,7 @@ public class PlayoutBuilder : IPlayoutBuilder
cancellationToken); cancellationToken);
// time shift on demand channel if needed // time shift on demand channel if needed
if (playout.Channel.ProgressMode is ChannelProgressMode.OnDemand) if (playout.Channel.PlayoutMode is ChannelPlayoutMode.OnDemand)
{ {
_playoutTimeShifter.TimeShift(playout, parameters.Start, false); _playoutTimeShifter.TimeShift(playout, parameters.Start, false);
} }
@ -415,7 +415,7 @@ public class PlayoutBuilder : IPlayoutBuilder
} }
// on demand channels end up with slightly more than expected due to time shifting from midnight to first build // on demand channels end up with slightly more than expected due to time shifting from midnight to first build
if (playout.Channel.ProgressMode is not ChannelProgressMode.OnDemand) if (playout.Channel.PlayoutMode is not ChannelPlayoutMode.OnDemand)
{ {
// check for future items that aren't grouped inside range // check for future items that aren't grouped inside range
var futureItems = playout.Items.Filter(i => i.StartOffset > trimAfter).ToList(); var futureItems = playout.Items.Filter(i => i.StartOffset > trimAfter).ToList();
@ -457,7 +457,7 @@ public class PlayoutBuilder : IPlayoutBuilder
} }
// on demand channels do NOT use alternate schedules // on demand channels do NOT use alternate schedules
if (playout.Channel.ProgressMode is ChannelProgressMode.OnDemand) if (playout.Channel.PlayoutMode is ChannelPlayoutMode.OnDemand)
{ {
activeSchedule = playout.ProgramSchedule; activeSchedule = playout.ProgramSchedule;
} }

2
ErsatzTV.Core/Scheduling/PlayoutTimeShifter.cs

@ -10,7 +10,7 @@ public class PlayoutTimeShifter(IFFmpegSegmenterService segmenterService, ILogge
{ {
public void TimeShift(Playout playout, DateTimeOffset now, bool force) public void TimeShift(Playout playout, DateTimeOffset now, bool force)
{ {
if (playout.Channel.ProgressMode is not ChannelProgressMode.OnDemand) if (playout.Channel.PlayoutMode is not ChannelPlayoutMode.OnDemand)
{ {
return; return;
} }

6163
ErsatzTV.Infrastructure.MySql/Migrations/20250804184056_Rename_ChannelProgressMode.Designer.cs generated

File diff suppressed because it is too large Load Diff

28
ErsatzTV.Infrastructure.MySql/Migrations/20250804184056_Rename_ChannelProgressMode.cs

@ -0,0 +1,28 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace ErsatzTV.Infrastructure.MySql.Migrations
{
/// <inheritdoc />
public partial class Rename_ChannelProgressMode : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.RenameColumn(
name: "ProgressMode",
table: "Channel",
newName: "PlayoutMode");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.RenameColumn(
name: "PlayoutMode",
table: "Channel",
newName: "ProgressMode");
}
}
}

6
ErsatzTV.Infrastructure.MySql/Migrations/TvContextModelSnapshot.cs

@ -284,6 +284,9 @@ namespace ErsatzTV.Infrastructure.MySql.Migrations
b.Property<string>("Number") b.Property<string>("Number")
.HasColumnType("varchar(255)"); .HasColumnType("varchar(255)");
b.Property<int>("PlayoutMode")
.HasColumnType("int");
b.Property<string>("PreferredAudioLanguageCode") b.Property<string>("PreferredAudioLanguageCode")
.HasColumnType("longtext"); .HasColumnType("longtext");
@ -293,9 +296,6 @@ namespace ErsatzTV.Infrastructure.MySql.Migrations
b.Property<string>("PreferredSubtitleLanguageCode") b.Property<string>("PreferredSubtitleLanguageCode")
.HasColumnType("longtext"); .HasColumnType("longtext");
b.Property<int>("ProgressMode")
.HasColumnType("int");
b.Property<int>("SongVideoMode") b.Property<int>("SongVideoMode")
.HasColumnType("int"); .HasColumnType("int");

6000
ErsatzTV.Infrastructure.Sqlite/Migrations/20250804183849_Rename_ChannelProgressMode.Designer.cs generated

File diff suppressed because it is too large Load Diff

28
ErsatzTV.Infrastructure.Sqlite/Migrations/20250804183849_Rename_ChannelProgressMode.cs

@ -0,0 +1,28 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace ErsatzTV.Infrastructure.Sqlite.Migrations
{
/// <inheritdoc />
public partial class Rename_ChannelProgressMode : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.RenameColumn(
name: "ProgressMode",
table: "Channel",
newName: "PlayoutMode");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.RenameColumn(
name: "PlayoutMode",
table: "Channel",
newName: "ProgressMode");
}
}
}

6
ErsatzTV.Infrastructure.Sqlite/Migrations/TvContextModelSnapshot.cs

@ -271,6 +271,9 @@ namespace ErsatzTV.Infrastructure.Sqlite.Migrations
b.Property<string>("Number") b.Property<string>("Number")
.HasColumnType("TEXT"); .HasColumnType("TEXT");
b.Property<int>("PlayoutMode")
.HasColumnType("INTEGER");
b.Property<string>("PreferredAudioLanguageCode") b.Property<string>("PreferredAudioLanguageCode")
.HasColumnType("TEXT"); .HasColumnType("TEXT");
@ -280,9 +283,6 @@ namespace ErsatzTV.Infrastructure.Sqlite.Migrations
b.Property<string>("PreferredSubtitleLanguageCode") b.Property<string>("PreferredSubtitleLanguageCode")
.HasColumnType("TEXT"); .HasColumnType("TEXT");
b.Property<int>("ProgressMode")
.HasColumnType("INTEGER");
b.Property<int>("SongVideoMode") b.Property<int>("SongVideoMode")
.HasColumnType("INTEGER"); .HasColumnType("INTEGER");

10
ErsatzTV/Pages/ChannelEditor.razor

@ -62,11 +62,11 @@
</MudStack> </MudStack>
<MudStack Row="true" Breakpoint="Breakpoint.SmAndDown" Class="form-field-stack gap-md-8 mb-5"> <MudStack Row="true" Breakpoint="Breakpoint.SmAndDown" Class="form-field-stack gap-md-8 mb-5">
<div class="d-flex"> <div class="d-flex">
<MudText>Progress Mode</MudText> <MudText>Playout Mode</MudText>
</div> </div>
<MudSelect @bind-Value="_model.ProgressMode" For="@(() => _model.ProgressMode)"> <MudSelect @bind-Value="_model.PlayoutMode" For="@(() => _model.PlayoutMode)" HelperText="Controls the progression of the channel's playout">
<MudSelectItem Value="@(ChannelProgressMode.Always)">Always</MudSelectItem> <MudSelectItem Value="@(ChannelPlayoutMode.Continuous)">Continuous</MudSelectItem>
<MudSelectItem Value="@(ChannelProgressMode.OnDemand)">On Demand</MudSelectItem> <MudSelectItem Value="@(ChannelPlayoutMode.OnDemand)">On Demand</MudSelectItem>
</MudSelect> </MudSelect>
</MudStack> </MudStack>
<MudStack Row="true" Breakpoint="Breakpoint.SmAndDown" Class="form-field-stack gap-md-8 mb-5"> <MudStack Row="true" Breakpoint="Breakpoint.SmAndDown" Class="form-field-stack gap-md-8 mb-5">
@ -310,7 +310,7 @@
_model.Logo = channelViewModel.Logo; _model.Logo = channelViewModel.Logo;
} }
_model.ProgressMode = channelViewModel.ProgressMode; _model.PlayoutMode = channelViewModel.PlayoutMode;
_model.StreamingMode = channelViewModel.StreamingMode; _model.StreamingMode = channelViewModel.StreamingMode;
_model.StreamSelectorMode = channelViewModel.StreamSelectorMode; _model.StreamSelectorMode = channelViewModel.StreamSelectorMode;
_model.StreamSelector = channelViewModel.StreamSelector; _model.StreamSelector = channelViewModel.StreamSelector;

4
ErsatzTV/Pages/Playouts.razor

@ -113,9 +113,9 @@
</div> </div>
@if (context.PlayoutType == ProgramSchedulePlayoutType.Flood) @if (context.PlayoutType == ProgramSchedulePlayoutType.Flood)
{ {
if (context.ProgressMode is ChannelProgressMode.OnDemand) if (context.PlayoutMode is ChannelPlayoutMode.OnDemand)
{ {
<MudTooltip Text="Alternate Schedules are not supported with On Demand progress"> <MudTooltip Text="Alternate Schedules are not supported with On Demand playout mode">
<MudIconButton Icon="@Icons.Material.Filled.EditCalendar" <MudIconButton Icon="@Icons.Material.Filled.EditCalendar"
Disabled="true"> Disabled="true">
</MudIconButton> </MudIconButton>

6
ErsatzTV/ViewModels/ChannelEditViewModel.cs

@ -19,7 +19,7 @@ public class ChannelEditViewModel
public string PreferredAudioTitle { get; set; } public string PreferredAudioTitle { get; set; }
public ArtworkContentTypeModel Logo { get; set; } public ArtworkContentTypeModel Logo { get; set; }
public string ExternalLogoUrl { get; set; } public string ExternalLogoUrl { get; set; }
public ChannelProgressMode ProgressMode { get; set; } public ChannelPlayoutMode PlayoutMode { get; set; }
public StreamingMode StreamingMode { get; set; } public StreamingMode StreamingMode { get; set; }
public int? WatermarkId { get; set; } public int? WatermarkId { get; set; }
public int? FallbackFillerId { get; set; } public int? FallbackFillerId { get; set; }
@ -53,7 +53,7 @@ public class ChannelEditViewModel
StreamSelector, StreamSelector,
PreferredAudioLanguageCode, PreferredAudioLanguageCode,
PreferredAudioTitle, PreferredAudioTitle,
ProgressMode, PlayoutMode,
StreamingMode, StreamingMode,
WatermarkId, WatermarkId,
FallbackFillerId, FallbackFillerId,
@ -78,7 +78,7 @@ public class ChannelEditViewModel
StreamSelector, StreamSelector,
PreferredAudioLanguageCode, PreferredAudioLanguageCode,
PreferredAudioTitle, PreferredAudioTitle,
ProgressMode, PlayoutMode,
StreamingMode, StreamingMode,
WatermarkId, WatermarkId,
FallbackFillerId, FallbackFillerId,

Loading…
Cancel
Save