Mois vide : suppression des alertes rouges et du message vide en double
Un mois sans trajet est un cas normal, pas une erreur : - Panneau totaux : plus d'alerte « Impossible de charger les totaux ». Un jour/mois sans trajet affiche simplement des totaux à 0,00 km. Signal erreur supprimé. - Consultation : plus d'alerte « Impossible de charger les trajets du mois ». Signal erreur et variable resumeEnErreur supprimés ; un échec de résumé affiche une liste vide (les vraies indisponibilités serveur restent signalées par l'intercepteur global). - Message vide unique : « Aucun trajet pour ce mois » n'est plus affiché en double (retiré de la liste, conservé côté consultation avec garde de chargement). Builds dev et prod OK.
This commit is contained in:
@@ -69,10 +69,6 @@
|
||||
</button>
|
||||
</header>
|
||||
|
||||
@if (erreur()) {
|
||||
<p class="consultation__erreur" role="alert">{{ erreur() }}</p>
|
||||
}
|
||||
|
||||
@if (chargement()) {
|
||||
<p class="consultation__chargement">Chargement des trajets…</p>
|
||||
}
|
||||
|
||||
@@ -105,8 +105,6 @@ export class ConsultationJourComponent implements OnInit, OnDestroy {
|
||||
/** Chargement de la journée en cours. */
|
||||
readonly chargement = signal(false);
|
||||
|
||||
/** Message d'erreur de chargement de la journée. */
|
||||
readonly erreur = signal<string | null>(null);
|
||||
|
||||
private jourSub?: Subscription;
|
||||
private vehiculesSub?: Subscription;
|
||||
@@ -337,19 +335,15 @@ export class ConsultationJourComponent implements OnInit, OnDestroy {
|
||||
const mois = moisCourant.mois;
|
||||
|
||||
this.chargement.set(true);
|
||||
this.erreur.set(null);
|
||||
|
||||
// Chaque observable du forkJoin porte son propre `catchError` afin que le
|
||||
// forkJoin complète TOUJOURS (il n'émet qu'une fois tous les flux complétés).
|
||||
// Ainsi un échec réseau sur le résumé ou la carte ne fige plus l'UI sur
|
||||
// « Chargement des trajets… ». On mémorise l'erreur du résumé pour l'afficher.
|
||||
let resumeEnErreur = false;
|
||||
// « Chargement des trajets… ». Un mois sans données (ou en échec) affiche
|
||||
// simplement une liste vide et le message « Aucun trajet pour ce mois ».
|
||||
this.jourSub = forkJoin({
|
||||
resume: this.trajetService.getResumeMensuel(annee, mois, vehiculeId).pipe(
|
||||
catchError(() => {
|
||||
resumeEnErreur = true;
|
||||
return of({ annee, mois, trajets: [], totalKm: 0 } as ResumeMensuel);
|
||||
})
|
||||
catchError(() => of({ annee, mois, trajets: [], totalKm: 0 } as ResumeMensuel))
|
||||
),
|
||||
carte: this.trajetService
|
||||
.getTrajetsJournee(date)
|
||||
@@ -393,9 +387,6 @@ export class ConsultationJourComponent implements OnInit, OnDestroy {
|
||||
? carte
|
||||
: this.filtrerCarteParVehicule(carte)
|
||||
);
|
||||
this.erreur.set(resumeEnErreur
|
||||
? 'Impossible de charger les trajets du mois.'
|
||||
: null);
|
||||
// Force la mise à jour immédiate de la liste, des totaux et de la carte
|
||||
// après une navigation Jour ± 1, sans attendre une autre interaction.
|
||||
this.cdr.markForCheck();
|
||||
@@ -405,7 +396,6 @@ export class ConsultationJourComponent implements OnInit, OnDestroy {
|
||||
// robuste : on affiche l'erreur et on rafraîchit la vue.
|
||||
this.trajets.set([]);
|
||||
this.trajetsCarte.set([]);
|
||||
this.erreur.set('Impossible de charger les trajets du mois.');
|
||||
this.cdr.markForCheck();
|
||||
}
|
||||
});
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
<section class="panneau-totaux" aria-label="Totaux kilométriques">
|
||||
<h2 class="panneau-totaux__titre">Totaux</h2>
|
||||
|
||||
@if (erreur()) {
|
||||
<p class="panneau-totaux__erreur" role="alert">{{ erreur() }}</p>
|
||||
}
|
||||
|
||||
@if (chargement() && !totaux()) {
|
||||
<p class="panneau-totaux__chargement">Chargement des totaux…</p>
|
||||
}
|
||||
|
||||
@@ -63,8 +63,6 @@ export class PanneauTotauxComponent implements OnChanges, OnDestroy {
|
||||
/** Chargement en cours (totaux et/ou montant prévisionnel). */
|
||||
readonly chargement = signal(false);
|
||||
|
||||
/** Message d'erreur affiché si le chargement échoue. */
|
||||
readonly erreur = signal<string | null>(null);
|
||||
|
||||
private totauxSub?: Subscription;
|
||||
private montantSub?: Subscription;
|
||||
@@ -98,7 +96,6 @@ export class PanneauTotauxComponent implements OnChanges, OnDestroy {
|
||||
this.totaux.set(null);
|
||||
this.montantPrevisionnel.set(null);
|
||||
this.chargement.set(false);
|
||||
this.erreur.set(null);
|
||||
this.cdr.markForCheck();
|
||||
return;
|
||||
}
|
||||
@@ -109,7 +106,6 @@ export class PanneauTotauxComponent implements OnChanges, OnDestroy {
|
||||
const mois = this.moisDe(date);
|
||||
|
||||
this.chargement.set(true);
|
||||
this.erreur.set(null);
|
||||
this.cdr.markForCheck();
|
||||
|
||||
this.totauxSub = this.trajetService.getTotauxJour(date, vehiculeId).subscribe({
|
||||
@@ -119,9 +115,11 @@ export class PanneauTotauxComponent implements OnChanges, OnDestroy {
|
||||
this.cdr.markForCheck();
|
||||
},
|
||||
error: () => {
|
||||
// Un mois / jour sans trajet est un cas normal : on affiche des totaux
|
||||
// nuls plutôt qu'une alerte. Les vraies indisponibilités serveur sont
|
||||
// signalées globalement par l'intercepteur (notification).
|
||||
this.totaux.set(null);
|
||||
this.chargement.set(false);
|
||||
this.erreur.set('Impossible de charger les totaux.');
|
||||
this.cdr.markForCheck();
|
||||
}
|
||||
});
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
@if (groupes().length === 0) {
|
||||
<p class="liste-vide" role="status">Aucun trajet pour ce mois.</p>
|
||||
} @else {
|
||||
@if (groupes().length > 0) {
|
||||
<!-- Un groupe par journée : en-tête de date + liste de dépôt indépendante.
|
||||
Les listes NE sont PAS connectées entre elles → drag limité à chaque jour. -->
|
||||
@for (groupe of groupes(); track groupe.date) {
|
||||
|
||||
Reference in New Issue
Block a user