diff --git a/ErsatzTV/Pages/MovieList.razor b/ErsatzTV/Pages/MovieList.razor index ee8486a01..fdc988447 100644 --- a/ErsatzTV/Pages/MovieList.razor +++ b/ErsatzTV/Pages/MovieList.razor @@ -56,8 +56,23 @@ + @{ var letters = new System.Collections.Generic.HashSet(); } @foreach (MovieCardViewModel card in _data.Cards.Where(m => !string.IsNullOrWhiteSpace(m.Title)).OrderBy(m => m.SortTitle)) { + @if (!letters.Contains(card.SortTitle.Head())) + { + Option maybeLetter = card.SortTitle.ToLowerInvariant().HeadOrNone(); + if (maybeLetter.IsSome) + { + char letter = maybeLetter.ValueUnsafe(); + if (letter >= '0' && letter <= '9') + { + letter = '#'; + } + letters.Add(letter); +
+ } + } GetSortedItems() - { - return _data.Cards.OrderBy(m => m.SortTitle).ToList(); - } + List GetSortedItems() => _data.Cards.OrderBy(m => m.SortTitle).ToList(); SelectClicked(GetSortedItems, card, e); } diff --git a/ErsatzTV/Pages/MusicVideoList.razor b/ErsatzTV/Pages/MusicVideoList.razor index 35cc4322b..2b85730d0 100644 --- a/ErsatzTV/Pages/MusicVideoList.razor +++ b/ErsatzTV/Pages/MusicVideoList.razor @@ -56,8 +56,23 @@ + @{ var letters = new System.Collections.Generic.HashSet(); } @foreach (MusicVideoCardViewModel card in _data.Cards.Where(m => !string.IsNullOrWhiteSpace(m.Title)).OrderBy(m => m.SortTitle)) { + @if (!letters.Contains(card.SortTitle.Head())) + { + Option maybeLetter = card.SortTitle.ToLowerInvariant().HeadOrNone(); + if (maybeLetter.IsSome) + { + char letter = maybeLetter.ValueUnsafe(); + if (letter >= '0' && letter <= '9') + { + letter = '#'; + } + letters.Add(letter); +
+ } + } + @{ var letters = new System.Collections.Generic.HashSet(); } @foreach (TelevisionShowCardViewModel card in _data.Cards.OrderBy(s => s.SortTitle)) { + @if (!letters.Contains(card.SortTitle.Head())) + { + Option maybeLetter = card.SortTitle.ToLowerInvariant().HeadOrNone(); + if (maybeLetter.IsSome) + { + char letter = maybeLetter.ValueUnsafe(); + if (letter >= '0' && letter <= '9') + { + letter = '#'; + } + letters.Add(letter); +
+ } + }