MaBibli 1.0.0
Gestion de bibliothèque personnelle auto-hébergée : catalogue, prêts, scan de code-barres, consultation hors-ligne. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
@*
|
||||
Le catalogue contient déjà quelque chose de semblable.
|
||||
|
||||
⚠️ C'est un AVERTISSEMENT, jamais un refus : posséder deux exemplaires est légitime — on
|
||||
garde le sien et on prête l'autre — et le rapprochement se trompe dans les deux sens (il
|
||||
confond le poche et le grand format, il rate une réédition retitrée). L'écran montre donc
|
||||
les fiches en cause plutôt que de les décrire, et laisse la décision à l'utilisateur.
|
||||
|
||||
Les fiches sont des LIENS : la question qui se pose vraiment est « est-ce bien le même
|
||||
livre ? », et on n'y répond qu'en regardant celui qui est déjà là.
|
||||
*@
|
||||
<div class="message-avertissement" role="alert">@Doublons.Message</div>
|
||||
|
||||
<ul class="liste-livres">
|
||||
@foreach (var livre in Doublons.Livres)
|
||||
{
|
||||
<li class="carte-livre" @key="livre.Id">
|
||||
<Couverture Url="@livre.CoverUrl" Titre="@livre.Titre" Classe="couverture-petite" />
|
||||
|
||||
<div class="carte-corps">
|
||||
<a class="carte-titre" href="@($"livres/{livre.Id}")">@livre.Titre</a>
|
||||
|
||||
@if (livre.Auteurs.Count > 0)
|
||||
{
|
||||
<p class="carte-auteur">@string.Join(", ", livre.Auteurs.Select(a => a.Nom))</p>
|
||||
}
|
||||
|
||||
<p class="carte-details">
|
||||
@if (livre.Format == Format.Numerique)
|
||||
{
|
||||
<span class="etiquette">@Libelles.Format(livre.Format)</span>
|
||||
}
|
||||
|
||||
@* Un exemplaire dehors est justement une raison d'en vouloir un second. *@
|
||||
@if (livre.PreteA is { } emprunteur)
|
||||
{
|
||||
<span class="etiquette etiquette-prete">Prêté à @emprunteur</span>
|
||||
}
|
||||
|
||||
@if (!string.IsNullOrWhiteSpace(livre.Editeur))
|
||||
{
|
||||
<span>@livre.Editeur</span>
|
||||
}
|
||||
|
||||
@if (!string.IsNullOrWhiteSpace(livre.Isbn))
|
||||
{
|
||||
<span class="code-isbn">@FormatageIsbn.Afficher(livre.Isbn)</span>
|
||||
}
|
||||
</p>
|
||||
</div>
|
||||
</li>
|
||||
}
|
||||
</ul>
|
||||
|
||||
<div class="actions-formulaire">
|
||||
<button type="button" class="bouton bouton-principal" disabled="@EnCours" @onclick="OnConfirmer">
|
||||
@(EnCours ? "Ajout…" : "Ajouter quand même")
|
||||
</button>
|
||||
<button type="button" class="bouton bouton-discret" disabled="@EnCours" @onclick="OnRenoncer">
|
||||
Ne pas ajouter
|
||||
</button>
|
||||
</div>
|
||||
|
||||
@code {
|
||||
[Parameter, EditorRequired] public DoublonsLivre Doublons { get; set; } = default!;
|
||||
|
||||
/// <summary>Ajout confirmé : second exemplaire, autre édition, ou rapprochement à côté.</summary>
|
||||
[Parameter] public EventCallback OnConfirmer { get; set; }
|
||||
|
||||
/// <summary>Retour en arrière : le livre était bien déjà là.</summary>
|
||||
[Parameter] public EventCallback OnRenoncer { get; set; }
|
||||
|
||||
[Parameter] public bool EnCours { get; set; }
|
||||
}
|
||||
Reference in New Issue
Block a user