Implémente C1 à C5 pour les séries et cycles
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
co-authored by
Copilot
parent
3d5e73838e
commit
ddc60898da
@@ -50,30 +50,18 @@ else
|
||||
<ul class="liste-series">
|
||||
@foreach (var serie in Racines)
|
||||
{
|
||||
<li class="carte-serie" @key="serie.Id">
|
||||
<a class="carte-titre" href="@($"series/{serie.Id}")">@serie.Titre</a>
|
||||
<p class="carte-details">@Avancement(serie)</p>
|
||||
|
||||
@* Un cycle contient des séries : elles se voient d'ici, sans ouvrir le cycle. *@
|
||||
@if (Filles(serie.Id) is { Count: > 0 } filles)
|
||||
{
|
||||
<ul class="liste-sous-series">
|
||||
@foreach (var fille in filles)
|
||||
{
|
||||
<li @key="fille.Id">
|
||||
<a href="@($"series/{fille.Id}")">@fille.Titre</a>
|
||||
<span class="carte-details">@Avancement(fille)</span>
|
||||
</li>
|
||||
}
|
||||
</ul>
|
||||
}
|
||||
</li>
|
||||
<ArbreSerie Serie="serie" Toutes="_series" Livres="_livres"
|
||||
Totaux="_totaux" Deplies="_deplies" />
|
||||
}
|
||||
</ul>
|
||||
}
|
||||
|
||||
@code {
|
||||
private IReadOnlyList<SerieDto>? _series;
|
||||
private IReadOnlyList<LivreDto> _livres = [];
|
||||
private IReadOnlyDictionary<int, (int Possedes, int Total)> _totaux =
|
||||
new Dictionary<int, (int, int)>();
|
||||
private readonly HashSet<int> _deplies = [];
|
||||
private string _nouveau = string.Empty;
|
||||
private bool _enCours;
|
||||
private string? _erreur;
|
||||
@@ -84,21 +72,6 @@ else
|
||||
private IEnumerable<SerieDto> Racines =>
|
||||
_series?.Where(s => s.SerieParenteId is null) ?? [];
|
||||
|
||||
private List<SerieDto> Filles(int parenteId) =>
|
||||
_series?.Where(s => s.SerieParenteId == parenteId).OrderBy(s => s.Position).ToList() ?? [];
|
||||
|
||||
/// <summary>
|
||||
/// « 4 tomes sur 7 » : le compteur est l'information principale de l'écran.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Une série sans aucun tome ne se décrit pas par « 0 sur 0 », qui ressemble à une erreur :
|
||||
/// elle dit ce qu'il faut faire.
|
||||
/// </remarks>
|
||||
private static string Avancement(SerieDto serie) =>
|
||||
serie.Elements.Count == 0
|
||||
? "Aucun tome recensé"
|
||||
: $"{serie.NombrePossedes} tome{(serie.NombrePossedes > 1 ? "s" : "")} sur {serie.Elements.Count}";
|
||||
|
||||
protected override void OnInitialized() => Reseau.Change += SurChangementReseau;
|
||||
|
||||
private void SurChangementReseau() => _ = InvokeAsync(async () =>
|
||||
@@ -111,7 +84,12 @@ else
|
||||
|
||||
protected override Task OnInitializedAsync() => ChargerAsync();
|
||||
|
||||
private async Task ChargerAsync() => _series = await Api.ListerSeriesAsync();
|
||||
private async Task ChargerAsync()
|
||||
{
|
||||
_series = await Api.ListerSeriesAsync();
|
||||
_livres = await Api.ListerAsync(new CritereLivres());
|
||||
_totaux = TotauxSeries.Calculer(_series);
|
||||
}
|
||||
|
||||
private async Task SurTouche(KeyboardEventArgs e)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user