Browse Source

use season number as season placeholder

pull/26/head
Jason Dove 6 years ago
parent
commit
3965634e61
  1. 3
      ErsatzTV.Application/MediaCards/Mapper.cs
  2. 2
      ErsatzTV.Application/MediaCards/TelevisionSeasonCardViewModel.cs
  3. 7
      ErsatzTV/Pages/TelevisionSeasons.razor
  4. 8
      ErsatzTV/Shared/MediaCard.razor

3
ErsatzTV.Application/MediaCards/Mapper.cs

@ -18,7 +18,8 @@ namespace ErsatzTV.Application.MediaCards
GetSeasonName(televisionSeason.Number), GetSeasonName(televisionSeason.Number),
string.Empty, string.Empty,
GetSeasonName(televisionSeason.Number), GetSeasonName(televisionSeason.Number),
televisionSeason.Poster); televisionSeason.Poster,
televisionSeason.Number == 0 ? "S" : televisionSeason.Number.ToString());
internal static MovieCardViewModel ProjectToViewModel(MovieMediaItem movie) => internal static MovieCardViewModel ProjectToViewModel(MovieMediaItem movie) =>
new( new(

2
ErsatzTV.Application/MediaCards/TelevisionSeasonCardViewModel.cs

@ -1,7 +1,7 @@
namespace ErsatzTV.Application.MediaCards namespace ErsatzTV.Application.MediaCards
{ {
public record TelevisionSeasonCardViewModel public record TelevisionSeasonCardViewModel
(int TelevisionSeasonId, string Title, string Subtitle, string SortTitle, string Poster) : MediaCardViewModel( (int TelevisionSeasonId, string Title, string Subtitle, string SortTitle, string Poster, string Placeholder) : MediaCardViewModel(
Title, Title,
Subtitle, Subtitle,
SortTitle, SortTitle,

7
ErsatzTV/Pages/TelevisionSeasons.razor

@ -1,4 +1,5 @@
@page "/media/tv/shows/{ShowId:int}" @page "/media/tv/shows/{ShowId:int}"
@using static LanguageExt.Prelude
@using ErsatzTV.Application.Television @using ErsatzTV.Application.Television
@using ErsatzTV.Application.Television.Queries @using ErsatzTV.Application.Television.Queries
@using ErsatzTV.Application.MediaCards @using ErsatzTV.Application.MediaCards
@ -30,7 +31,7 @@
<MudContainer MaxWidth="MaxWidth.Large" Class="media-card-grid"> <MudContainer MaxWidth="MaxWidth.Large" Class="media-card-grid">
@foreach (TelevisionSeasonCardViewModel card in _data.Cards) @foreach (TelevisionSeasonCardViewModel card in _data.Cards)
{ {
<MediaCard Data="@card" Link="@($"/media/tv/shows/{ShowId}/seasons/{card.TelevisionSeasonId}")" DataRefreshed="@(() => RefreshData())"/> <MediaCard Data="@card" CustomPlaceholder="@SeasonPlaceholder" Link="@($"/media/tv/shows/{ShowId}/seasons/{card.TelevisionSeasonId}")" DataRefreshed="@(() => RefreshData())"/>
} }
</MudContainer> </MudContainer>
@ -56,4 +57,8 @@
_data = await Mediator.Send(new GetTelevisionSeasonCards(ShowId, _pageNumber, _pageSize)); _data = await Mediator.Send(new GetTelevisionSeasonCards(ShowId, _pageNumber, _pageSize));
} }
private string SeasonPlaceholder(string sortTitle) =>
Optional(_data.Cards.SingleOrDefault(d => d.SortTitle == sortTitle))
.Match(vm => vm.Placeholder, () => sortTitle.Substring(0, 1).ToUpperInvariant());
} }

8
ErsatzTV/Shared/MediaCard.razor

@ -45,9 +45,17 @@
[Parameter] [Parameter]
public EventCallback<Unit> DataRefreshed { get; set; } public EventCallback<Unit> DataRefreshed { get; set; }
[Parameter]
public Func<string, string> CustomPlaceholder { get; set; }
private string Placeholder(string sortTitle) private string Placeholder(string sortTitle)
{ {
if (CustomPlaceholder != null)
{
return CustomPlaceholder(sortTitle);
}
string first = sortTitle.Substring(0, 1).ToUpperInvariant(); string first = sortTitle.Substring(0, 1).ToUpperInvariant();
return int.TryParse(first, out _) ? "#" : first; return int.TryParse(first, out _) ? "#" : first;
} }

Loading…
Cancel
Save