diff --git a/CHANGELOG.md b/CHANGELOG.md index 2e141cebd..f68d4ded7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -84,6 +84,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Use smaller batch size for search index updates (100, down from 1000) - This should help newly scanned items appear in the UI more quickly - Replace favicon and logo in background image used for error streams +- Block schedule template editor: + - Auto scroll day view to block item time when adding and removing block items from template + - Allow keyboard selection of block groups and blocks ## [25.8.0] - 2025-10-26 ### Added diff --git a/ErsatzTV/Pages/TemplateEditor.razor b/ErsatzTV/Pages/TemplateEditor.razor index 5c05fdea3..504a67b70 100644 --- a/ErsatzTV/Pages/TemplateEditor.razor +++ b/ErsatzTV/Pages/TemplateEditor.razor @@ -35,10 +35,10 @@
Block Group
- + @foreach (BlockGroupViewModel blockGroup in _blockGroups) { - @blockGroup.Name + @blockGroup.Name } @@ -46,10 +46,10 @@
Block
- + @foreach (BlockViewModel block in _blocks) { - @block.Name + @block.Name } @@ -94,7 +94,8 @@ Content - _calendar; public void Dispose() { @@ -194,12 +196,22 @@ End = item.EndTime }; - private async Task UpdateBlockGroupItems(BlockGroupViewModel blockGroup) + private async Task UpdateBlockGroupItems(string blockGroupName) { - _selectedBlockGroup = blockGroup; + Option maybeBlockGroup = Optional(_blockGroups.Find(bg => bg.Name == blockGroupName)); + foreach (var blockGroup in maybeBlockGroup) + { + _selectedBlockGroup = blockGroup; + + _blocks.Clear(); + _blocks.AddRange(await Mediator.Send(new GetBlocksByBlockGroupId(_selectedBlockGroup.Id), _cts.Token)); + } + } - _blocks.Clear(); - _blocks.AddRange(await Mediator.Send(new GetBlocksByBlockGroupId(_selectedBlockGroup.Id), _cts.Token)); + private void UpdateSelectedBlock(string blockName) + { + _selectedBlock = _blocks.Find(bg => bg.Name == blockName); + InvokeAsync(StateHasChanged); } private void AddBlockToTemplate() @@ -223,6 +235,8 @@ _template.Items.Add(item); + InvokeAsync(() => { _calendar.ScrollToTime(TimeOnly.FromDateTime(item.Start)); }); + break; } @@ -235,6 +249,9 @@ if (_blockToRemove is not null) { _template.Items.Remove(_blockToRemove); + + await InvokeAsync(() => { _calendar.ScrollToTime(TimeOnly.FromDateTime(_blockToRemove.Start)); }); + _blockToRemove = null; await InvokeAsync(StateHasChanged);