mirror of https://github.com/ErsatzTV/ErsatzTV.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
111 lines
4.3 KiB
111 lines
4.3 KiB
@page "/media/filler/presets" |
|
@using ErsatzTV.Application.Configuration |
|
@using ErsatzTV.Application.Filler |
|
@using ErsatzTV.Core.Domain.Filler |
|
@implements IDisposable |
|
@inject IDialogService Dialog |
|
@inject IMediator Mediator |
|
|
|
<MudContainer MaxWidth="MaxWidth.ExtraLarge" Class="pt-8"> |
|
<div> |
|
<MudButton Variant="Variant.Filled" Color="Color.Primary" Href="media/filler/presets/add"> |
|
Add Filler Preset |
|
</MudButton> |
|
</div> |
|
<MudTable Class="mt-4" |
|
Hover="true" |
|
@bind-RowsPerPage="@_fillerPresetsRowsPerPage" |
|
ServerData="@(new Func<TableState, Task<TableData<FillerPresetViewModel>>>(ServerReloadFillerPresets))" |
|
Dense="true" |
|
@ref="_fillerPresetsTable"> |
|
<ToolBarContent> |
|
<MudText Typo="Typo.h6">Filler Presets</MudText> |
|
</ToolBarContent> |
|
<ColGroup> |
|
<col/> |
|
<col/> |
|
<col style="width: 120px;"/> |
|
</ColGroup> |
|
<HeaderContent> |
|
<MudTh>Name</MudTh> |
|
<MudTh>Filler Kind</MudTh> |
|
<MudTh/> |
|
</HeaderContent> |
|
<RowTemplate> |
|
<MudTd DataLabel="Name">@context.Name</MudTd> |
|
<MudTd DataLabel="Filler Kind"> |
|
@( |
|
context.FillerKind switch |
|
{ |
|
FillerKind.PreRoll => "Pre-Roll", |
|
FillerKind.MidRoll => "Mid-Roll", |
|
FillerKind.PostRoll => "Post-Roll", |
|
FillerKind.Fallback => "Fallback", |
|
FillerKind.Tail => "Tail", |
|
_ => "None" |
|
} |
|
) |
|
</MudTd> |
|
<MudTd> |
|
<div style="align-items: center; display: flex;"> |
|
<MudTooltip Text="Edit Filler Preset"> |
|
<MudIconButton Icon="@Icons.Material.Filled.Edit" |
|
Href="@($"media/filler/presets/{context.Id}/edit")"> |
|
</MudIconButton> |
|
</MudTooltip> |
|
<MudTooltip Text="Delete Filler Preset"> |
|
<MudIconButton Icon="@Icons.Material.Filled.Delete" |
|
OnClick="@(_ => DeleteFillerPreset(context))"> |
|
</MudIconButton> |
|
</MudTooltip> |
|
</div> |
|
</MudTd> |
|
</RowTemplate> |
|
<PagerContent> |
|
<MudTablePager/> |
|
</PagerContent> |
|
</MudTable> |
|
</MudContainer> |
|
|
|
@code { |
|
private readonly CancellationTokenSource _cts = new(); |
|
|
|
private MudTable<FillerPresetViewModel> _fillerPresetsTable; |
|
|
|
private int _fillerPresetsRowsPerPage = 10; |
|
|
|
public void Dispose() |
|
{ |
|
_cts.Cancel(); |
|
_cts.Dispose(); |
|
} |
|
|
|
protected override async Task OnParametersSetAsync() => _fillerPresetsRowsPerPage = await Mediator.Send(new GetConfigElementByKey(ConfigElementKey.FillerPresetsPageSize), _cts.Token) |
|
.Map(maybeRows => maybeRows.Match(ce => int.TryParse(ce.Value, out int rows) ? rows : 10, () => 10)); |
|
|
|
private async Task DeleteFillerPreset(FillerPresetViewModel fillerPreset) |
|
{ |
|
var parameters = new DialogParameters { { "EntityType", "filler preset" }, { "EntityName", fillerPreset.Name } }; |
|
var options = new DialogOptions { CloseButton = true, MaxWidth = MaxWidth.ExtraSmall }; |
|
|
|
IDialogReference dialog = await Dialog.ShowAsync<DeleteDialog>("Delete Filler Preset", parameters, options); |
|
DialogResult result = await dialog.Result; |
|
if (!result.Canceled) |
|
{ |
|
await Mediator.Send(new DeleteFillerPreset(fillerPreset.Id), _cts.Token); |
|
if (_fillerPresetsTable != null) |
|
{ |
|
await _fillerPresetsTable.ReloadServerData(); |
|
} |
|
} |
|
} |
|
|
|
private async Task<TableData<FillerPresetViewModel>> ServerReloadFillerPresets(TableState state) |
|
{ |
|
await Mediator.Send(new SaveConfigElementByKey(ConfigElementKey.FillerPresetsPageSize, state.PageSize.ToString()), _cts.Token); |
|
|
|
PagedFillerPresetsViewModel data = await Mediator.Send(new GetPagedFillerPresets(state.Page, state.PageSize), _cts.Token); |
|
return new TableData<FillerPresetViewModel> { TotalItems = data.TotalCount, Items = data.Page }; |
|
} |
|
|
|
} |