Ajouter la liste d'envies personnelle, son export et la bibliographie par auteur

La liste d'envies vit dans une table séparée (LivreSouhaite) plutôt que dans un
statut de plus sur Livre : un livre souhaité n'est pas possédé, et le loger dans
Livres l'aurait fait entrer dans le catalogue, les compteurs et les prêts, au
prix d'un « et qui n'est pas souhaité » à répéter dans chaque lecture. La portée
est personnelle, comme le statut de lecture — mais ici Utilisateur est une vraie
frontière : toute lecture filtre dessus.

Bibliographie : SRU BnF interrogé par bib.author, vérifié le 2026-08-18. Deux
filtres mesurés sur des réponses réelles sont indispensables — le type de
document (l'index mêle livres audio, jeux et spectacles) et surtout l'auteur
réel de la notice, « all » rapprochant les mots sur l'ensemble des auteurs :
« Émile Zola » remonte sinon toute l'œuvre de sa fille Denise Le Blond-Zola.
Les rééditions sont regroupées par clé d'œuvre (183 notices Werber -> 51
œuvres). Le rapprochement avec l'étagère se fait par titre, pas par ISBN, qui
désigne une édition et non une œuvre ; ses limites sont dites à l'écran.

Export en deux formats, tous deux du texte sans dépendance : .txt groupé par
auteur pour la librairie, .csv à séparateur point-virgule et BOM pour le
tableur.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
mathieu
2026-08-18 13:59:06 +02:00
co-authored by Claude Opus 5
parent 3a5a3a7763
commit 8b8fe3be6e
27 changed files with 3939 additions and 0 deletions
+96
View File
@@ -738,3 +738,99 @@ body {
margin: 0;
font-size: 0.95rem;
}
/* ─────────────────────────────────────────────────────────────────────────────
Liste d'envies et bibliographie par auteur.
Mobile d'abord : une colonne, l'action à droite du texte, rien qui déborde.
───────────────────────────────────────────────────────────────────────────── */
.bloc-souhait-ajout {
background: var(--mb-fond-doux);
border-radius: 8px;
padding: 0.75rem;
margin-bottom: 1rem;
}
/* Le champ ISBN et son bouton sur une ligne : le bouton ne doit pas se rétrécir
au point de devenir intouchable au pouce quand le champ est large. */
.ligne-isbn {
display: flex;
gap: 0.5rem;
}
.ligne-isbn .champ-saisie {
flex: 1;
min-width: 0;
}
.ligne-isbn .bouton {
flex-shrink: 0;
}
.actions-export {
display: flex;
flex-wrap: wrap;
gap: 0.5rem;
margin-bottom: 0.75rem;
}
.liste-souhaits,
.liste-bibliographie {
list-style: none;
margin: 0;
padding: 0;
}
.carte-souhait,
.carte-oeuvre {
display: flex;
gap: 0.75rem;
align-items: flex-start;
padding: 0.75rem 0;
border-bottom: 1px solid var(--mb-bord);
}
/* Le corps prend la place restante et « min-width: 0 » l'autorise à rétrécir :
sans lui, un titre long pousse le bouton hors de l'écran sur mobile. */
.carte-souhait .carte-corps,
.carte-oeuvre .carte-corps {
flex: 1;
min-width: 0;
}
.carte-souhait .bouton,
.carte-oeuvre .bouton {
flex-shrink: 0;
align-self: center;
}
.souhait-note {
margin: 0.25rem 0 0;
color: var(--mb-texte-doux);
font-size: 0.9rem;
font-style: italic;
}
/* Le grisage des livres déjà possédés : c'est l'information principale de l'écran
de bibliographie. L'opacité seule suffirait visuellement, mais elle ne dit rien
à un lecteur d'écran — d'où l'étiquette « Déjà chez vous » qui l'accompagne
toujours dans le balisage. */
.oeuvre-possedee {
opacity: 0.55;
}
.oeuvre-possedee .carte-titre {
font-weight: 400;
}
.etiquette-possede {
background: #e3ece3;
color: #2f5d34;
font-weight: 600;
}
.etiquette-souhaite {
background: #e6e6f5;
color: #3b3b7a;
font-weight: 600;
}