Arbre des séries dépouillé, et ordre de lecture derrière son propre écran

- L'arbre ne montre plus que la descendance : titre, avancement, lien. Il dépliait
  auparavant la liste complète des tomes de chaque nœud, cartes de livres comprises —
  un cycle occupait plusieurs écrans et l'on ne voyait plus qui contient quoi. Corollaire :
  tout est déplié par défaut, et l'on replie ce dont on ne veut pas.
- /series ne charge plus le catalogue entier : l'arbre n'en a plus l'usage.
- ⚠️ Nouvelle route /series/{id}/ordre, sur le modèle de /souhaits/ordre. Les flèches
  n'existent plus qu'ici : en consultation, elles se déclenchaient au défilement du pouce
  et l'ordre de lecture d'une saga changeait sans qu'on l'ait voulu.
- Le mode ordre ne fait QUE réordonner : les actions par tome et l'ajout de tome n'y
  figurent pas.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
mathieu
2026-08-20 20:45:14 +02:00
co-authored by Claude Opus 5
parent 4fd67e4e3b
commit bd4fea2638
4 changed files with 230 additions and 86 deletions
+7 -6
View File
@@ -47,21 +47,21 @@ else if (_series.Count == 0)
}
else
{
<ul class="liste-series">
<ul class="liste-series arbre">
@foreach (var serie in Racines)
{
<ArbreSerie Serie="serie" Toutes="_series" Livres="_livres"
Totaux="_totaux" Deplies="_deplies" />
<ArbreSerie Serie="serie" Toutes="_series" Totaux="_totaux" Replies="_replies" />
}
</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 = [];
/// <summary>Nœuds repliés à la main. Tout est déplié par défaut — voir ArbreSerie.</summary>
private readonly HashSet<int> _replies = [];
private string _nouveau = string.Empty;
private bool _enCours;
private string? _erreur;
@@ -86,8 +86,9 @@ else
private async Task ChargerAsync()
{
// ⚠️ Le catalogue n'est plus chargé ici : l'arbre ne montre que la descendance des
// séries, plus leurs tomes. C'était une lecture complète du fonds pour rien.
_series = await Api.ListerSeriesAsync();
_livres = await Api.ListerAsync(new CritereLivres());
_totaux = TotauxSeries.Calculer(_series);
}