Sépare consultation et édition pour les lots B1 B2 B3
Réutilise la carte livre du catalogue, sépare les modes des séries et des envies, et déplie les œuvres bibliographiques non possédées. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
co-authored by
Copilot
parent
5d45eb492e
commit
3d5e73838e
@@ -140,15 +140,26 @@ else if (_bibliographie is { } biblio)
|
||||
{
|
||||
@* La classe « oeuvre-possedee » grise la ligne : le livre est déjà sur l'étagère. *@
|
||||
<li class="carte-oeuvre @(oeuvre.Possede ? "oeuvre-possedee" : null)" @key="oeuvre.Titre">
|
||||
@if (oeuvre is { Possede: true, LivreId: { } livreId }
|
||||
&& _livresCatalogue.FirstOrDefault(l => l.Id == livreId) is { } livre)
|
||||
{
|
||||
<CarteLivre Livre="livre" />
|
||||
}
|
||||
@if (!oeuvre.Possede || !_livresCatalogue.Any(l => l.Id == oeuvre.LivreId))
|
||||
{
|
||||
<div class="carte-corps">
|
||||
<p class="carte-titre">
|
||||
@if (oeuvre is { Possede: true, LivreId: { } livreId })
|
||||
@if (oeuvre is { Possede: true, LivreId: { } livreIdPossede })
|
||||
{
|
||||
<a class="lien-auteur" href="@($"livres/{livreId}")">@oeuvre.Titre</a>
|
||||
<a class="lien-auteur" href="@($"livres/{livreIdPossede}")">@oeuvre.Titre</a>
|
||||
}
|
||||
else
|
||||
{
|
||||
@oeuvre.Titre
|
||||
<button type="button" class="carte-titre oeuvre-titre-bouton"
|
||||
@onclick="() => BasculerOeuvre(oeuvre.Titre)"
|
||||
aria-expanded="@_oeuvresOuvertes.Contains(oeuvre.Titre)">
|
||||
@oeuvre.Titre
|
||||
</button>
|
||||
}
|
||||
</p>
|
||||
|
||||
@@ -176,6 +187,20 @@ else if (_bibliographie is { } biblio)
|
||||
}
|
||||
</p>
|
||||
</div>
|
||||
@if (_oeuvresOuvertes.Contains(oeuvre.Titre))
|
||||
{
|
||||
<p class="message-discret detail-oeuvre">
|
||||
@if (!string.IsNullOrWhiteSpace(oeuvre.Isbn))
|
||||
{
|
||||
<span>ISBN : @FormatageIsbn.Afficher(oeuvre.Isbn)</span>
|
||||
}
|
||||
@if (oeuvre.NombreEditions > 1)
|
||||
{
|
||||
<span>@oeuvre.NombreEditions éditions recensées</span>
|
||||
}
|
||||
</p>
|
||||
}
|
||||
}
|
||||
|
||||
@if (oeuvre.ADecouvrir)
|
||||
{
|
||||
@@ -225,6 +250,8 @@ else if (_bibliographie is { } biblio)
|
||||
private string? _message;
|
||||
|
||||
private int _possedees;
|
||||
private IReadOnlyList<LivreDto> _livresCatalogue = [];
|
||||
private readonly HashSet<string> _oeuvresOuvertes = [];
|
||||
|
||||
protected override async Task OnParametersSetAsync() => await ChargerAsync();
|
||||
|
||||
@@ -240,6 +267,7 @@ else if (_bibliographie is { } biblio)
|
||||
try
|
||||
{
|
||||
_bibliographie = await Api.ObtenirBibliographieAsync(AuteurId);
|
||||
_livresCatalogue = await Api.ListerAsync(new CritereLivres());
|
||||
|
||||
if (_bibliographie is null)
|
||||
{
|
||||
@@ -272,6 +300,14 @@ else if (_bibliographie is { } biblio)
|
||||
}
|
||||
}
|
||||
|
||||
private void BasculerOeuvre(string titre)
|
||||
{
|
||||
if (!_oeuvresOuvertes.Add(titre))
|
||||
{
|
||||
_oeuvresOuvertes.Remove(titre);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Ajoute une œuvre à la liste d'envies, en emportant ce que la BnF en sait.
|
||||
/// </summary>
|
||||
|
||||
Reference in New Issue
Block a user