@page "/revues" @inject ServiceLivresApi Api @inject EtatReseau Reseau @implements IDisposable MaBibli — revues

Revues

Une fiche par revue, les numéros à l'intérieur — douze numéros d'un magazine ne font pas douze fiches. Les revues ne sont pas au catalogue : ce ne sont pas des livres.

@if (_erreur is not null) { }
@if (_revues is null) {

Chargement…

} else if (_revues.Count == 0) {

Aucune revue. Scannez le code-barres d'un magazine, ou saisissez son nom ci-dessus : le code d'une revue commence par 977 et porte un ISSN, pas un ISBN.

} else { } @code { private IReadOnlyList? _revues; private string _nouvelle = string.Empty; private bool _enCours; private string? _erreur; private string? MotifBlocage => Reseau.EnLigne ? null : EtatReseau.MotifHorsLigne; private static string Quand(NumeroRevueDto numero) => numero.DateParution is { } date ? $"({date.ToLocalTime():MM/yyyy})" : string.Empty; protected override void OnInitialized() => Reseau.Change += SurChangementReseau; private void SurChangementReseau() => _ = InvokeAsync(async () => { await ChargerAsync(); StateHasChanged(); }); public void Dispose() => Reseau.Change -= SurChangementReseau; protected override Task OnInitializedAsync() => ChargerAsync(); private async Task ChargerAsync() => _revues = await Api.ListerRevuesAsync(); private async Task SurTouche(KeyboardEventArgs e) { if (e.Key == "Enter" && !string.IsNullOrWhiteSpace(_nouvelle) && Reseau.EnLigne) { await CreerAsync(); } } private async Task CreerAsync() { _enCours = true; _erreur = null; var resultat = await Api.CreerRevueAsync(new EnregistrementRevue { Titre = _nouvelle }); _enCours = false; if (!resultat.EstOk) { _erreur = resultat.Erreur; return; } _nouvelle = string.Empty; await ChargerAsync(); } }