Files
mabibli/MaBibli.Client/Composants/Libelles.cs
T
mathieuandClaude Opus 5 07cb48b2be Distinguer scénario, dessin et couleurs sur chaque livre
Le rôle vit sur le LIEN livre-auteur, jamais sur l'auteur : le même auteur
scénarise un album et dessine le suivant, et il ne doit pas exister en deux
fiches pour autant — ce que l'index unique sur la clé de regroupement
interdit de toute façon.

Les rôles se retrouvent par clé d'auteur résolue et non par position :
ResoudreAsync écarte les noms vides et fusionne les variantes, donc sa
liste peut être plus courte que la saisie.

Piège traité : le champ des noms reconstruit la liste à chaque frappe.
Decouper reprend les rôles connus en rapprochant sur la forme normalisée,
sans quoi corriger une faute de frappe les effacerait tous.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-19 22:37:20 +02:00

58 lines
2.3 KiB
C#

using MaBibli.Shared.Entites;
namespace MaBibli.Client.Composants;
/// <summary>Libellés français des énumérations, au même endroit pour toute l'interface.</summary>
public static class Libelles
{
public static string Format(Format format) => format switch
{
MaBibli.Shared.Entites.Format.Physique => "Physique",
MaBibli.Shared.Entites.Format.Numerique => "Numérique",
_ => format.ToString(),
};
/// <summary>
/// Libellé du type de document. <b>« Non précisé » ne s'affiche pas sur une fiche</b> :
/// c'est l'absence de choix, et l'interface ne montre que ce qui a été choisi. Le libellé
/// existe pour les boutons de saisie et de filtre, où il faut bien nommer l'option.
/// </summary>
public static string TypeDocument(TypeDocument type) => type switch
{
MaBibli.Shared.Entites.TypeDocument.NonPrecise => "Non précisé",
MaBibli.Shared.Entites.TypeDocument.Roman => "Roman",
MaBibli.Shared.Entites.TypeDocument.BandeDessinee => "BD",
_ => type.ToString(),
};
/// <summary>
/// Libellé d'un rôle d'auteur. « Non précisé » ne s'affiche jamais sur une fiche : c'est
/// l'absence de choix, pas une information.
/// </summary>
public static string RoleAuteur(RoleAuteur role) => role switch
{
MaBibli.Shared.Entites.RoleAuteur.NonPrecise => "Non précisé",
MaBibli.Shared.Entites.RoleAuteur.Scenario => "Scénario",
MaBibli.Shared.Entites.RoleAuteur.Dessin => "Dessin",
MaBibli.Shared.Entites.RoleAuteur.Couleurs => "Couleurs",
_ => role.ToString(),
};
public static string Statut(Statut statut) => statut switch
{
MaBibli.Shared.Entites.Statut.ALire => "À lire",
MaBibli.Shared.Entites.Statut.EnCours => "En cours",
MaBibli.Shared.Entites.Statut.Lu => "Lu",
_ => statut.ToString(),
};
/// <summary>Classe CSS associée au statut, pour la pastille de couleur.</summary>
public static string ClasseStatut(Statut statut) => statut switch
{
MaBibli.Shared.Entites.Statut.ALire => "statut-a-lire",
MaBibli.Shared.Entites.Statut.EnCours => "statut-en-cours",
MaBibli.Shared.Entites.Statut.Lu => "statut-lu",
_ => string.Empty,
};
}