- A1 : forcer la revalidation HTTP (Cache-Control: no-cache) sur les fichiers statiques, pour empêcher un navigateur de garder indéfiniment un CSS/JS périmé quand le service worker ne s'active pas. - A2 : le filtre du catalogue (statut, type de document) reprend les mêmes pastilles colorées que les cartes (Libelles.ClasseStatut / nouvelle Libelles.ClasseTypeDocument). - A3 : remplacement du logo par défaut de Blazor par un pictogramme de livre ouvert (favicon, icônes PWA, logo du bandeau, logo mabibli_ynh). - A4 : une couverture cassée désactive aussi son bouton d'agrandissement. - A5 : cache IndexedDB des couvertures pour la consultation hors-ligne, sans ralentir l'affichage en ligne (mise en cache en tâche de fond). L'allègement (redimensionnement, WebP) reste hors scope, à mesurer avant de s'y engager. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
70 lines
2.8 KiB
C#
70 lines
2.8 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,
|
|
};
|
|
|
|
/// <summary>
|
|
/// Classe CSS associée au type de document, pour la pastille de couleur (A2, IDEES.md) :
|
|
/// le filtre doit reprendre le même vocabulaire visuel que la carte, pas des segments neutres.
|
|
/// « Non précisé » n'a pas de couleur : ce n'est pas une valeur choisie.
|
|
/// </summary>
|
|
public static string ClasseTypeDocument(TypeDocument type) => type switch
|
|
{
|
|
MaBibli.Shared.Entites.TypeDocument.Roman => "type-roman",
|
|
MaBibli.Shared.Entites.TypeDocument.BandeDessinee => "type-bd",
|
|
_ => string.Empty,
|
|
};
|
|
}
|