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>
|
</button>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
@if (erreur()) {
|
|
||||||
<p class="consultation__erreur" role="alert">{{ erreur() }}</p>
|
|
||||||
}
|
|
||||||
|
|
||||||
@if (chargement()) {
|
@if (chargement()) {
|
||||||
<p class="consultation__chargement">Chargement des trajets…</p>
|
<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. */
|
/** Chargement de la journée en cours. */
|
||||||
readonly chargement = signal(false);
|
readonly chargement = signal(false);
|
||||||
|
|
||||||
/** Message d'erreur de chargement de la journée. */
|
|
||||||
readonly erreur = signal<string | null>(null);
|
|
||||||
|
|
||||||
private jourSub?: Subscription;
|
private jourSub?: Subscription;
|
||||||
private vehiculesSub?: Subscription;
|
private vehiculesSub?: Subscription;
|
||||||
@@ -337,19 +335,15 @@ export class ConsultationJourComponent implements OnInit, OnDestroy {
|
|||||||
const mois = moisCourant.mois;
|
const mois = moisCourant.mois;
|
||||||
|
|
||||||
this.chargement.set(true);
|
this.chargement.set(true);
|
||||||
this.erreur.set(null);
|
|
||||||
|
|
||||||
// Chaque observable du forkJoin porte son propre `catchError` afin que le
|
// 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).
|
// 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
|
// 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.
|
// « Chargement des trajets… ». Un mois sans données (ou en échec) affiche
|
||||||
let resumeEnErreur = false;
|
// simplement une liste vide et le message « Aucun trajet pour ce mois ».
|
||||||
this.jourSub = forkJoin({
|
this.jourSub = forkJoin({
|
||||||
resume: this.trajetService.getResumeMensuel(annee, mois, vehiculeId).pipe(
|
resume: this.trajetService.getResumeMensuel(annee, mois, vehiculeId).pipe(
|
||||||
catchError(() => {
|
catchError(() => of({ annee, mois, trajets: [], totalKm: 0 } as ResumeMensuel))
|
||||||
resumeEnErreur = true;
|
|
||||||
return of({ annee, mois, trajets: [], totalKm: 0 } as ResumeMensuel);
|
|
||||||
})
|
|
||||||
),
|
),
|
||||||
carte: this.trajetService
|
carte: this.trajetService
|
||||||
.getTrajetsJournee(date)
|
.getTrajetsJournee(date)
|
||||||
@@ -393,9 +387,6 @@ export class ConsultationJourComponent implements OnInit, OnDestroy {
|
|||||||
? carte
|
? carte
|
||||||
: this.filtrerCarteParVehicule(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
|
// 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.
|
// après une navigation Jour ± 1, sans attendre une autre interaction.
|
||||||
this.cdr.markForCheck();
|
this.cdr.markForCheck();
|
||||||
@@ -405,7 +396,6 @@ export class ConsultationJourComponent implements OnInit, OnDestroy {
|
|||||||
// robuste : on affiche l'erreur et on rafraîchit la vue.
|
// robuste : on affiche l'erreur et on rafraîchit la vue.
|
||||||
this.trajets.set([]);
|
this.trajets.set([]);
|
||||||
this.trajetsCarte.set([]);
|
this.trajetsCarte.set([]);
|
||||||
this.erreur.set('Impossible de charger les trajets du mois.');
|
|
||||||
this.cdr.markForCheck();
|
this.cdr.markForCheck();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,10 +1,6 @@
|
|||||||
<section class="panneau-totaux" aria-label="Totaux kilométriques">
|
<section class="panneau-totaux" aria-label="Totaux kilométriques">
|
||||||
<h2 class="panneau-totaux__titre">Totaux</h2>
|
<h2 class="panneau-totaux__titre">Totaux</h2>
|
||||||
|
|
||||||
@if (erreur()) {
|
|
||||||
<p class="panneau-totaux__erreur" role="alert">{{ erreur() }}</p>
|
|
||||||
}
|
|
||||||
|
|
||||||
@if (chargement() && !totaux()) {
|
@if (chargement() && !totaux()) {
|
||||||
<p class="panneau-totaux__chargement">Chargement des totaux…</p>
|
<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). */
|
/** Chargement en cours (totaux et/ou montant prévisionnel). */
|
||||||
readonly chargement = signal(false);
|
readonly chargement = signal(false);
|
||||||
|
|
||||||
/** Message d'erreur affiché si le chargement échoue. */
|
|
||||||
readonly erreur = signal<string | null>(null);
|
|
||||||
|
|
||||||
private totauxSub?: Subscription;
|
private totauxSub?: Subscription;
|
||||||
private montantSub?: Subscription;
|
private montantSub?: Subscription;
|
||||||
@@ -98,7 +96,6 @@ export class PanneauTotauxComponent implements OnChanges, OnDestroy {
|
|||||||
this.totaux.set(null);
|
this.totaux.set(null);
|
||||||
this.montantPrevisionnel.set(null);
|
this.montantPrevisionnel.set(null);
|
||||||
this.chargement.set(false);
|
this.chargement.set(false);
|
||||||
this.erreur.set(null);
|
|
||||||
this.cdr.markForCheck();
|
this.cdr.markForCheck();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -109,7 +106,6 @@ export class PanneauTotauxComponent implements OnChanges, OnDestroy {
|
|||||||
const mois = this.moisDe(date);
|
const mois = this.moisDe(date);
|
||||||
|
|
||||||
this.chargement.set(true);
|
this.chargement.set(true);
|
||||||
this.erreur.set(null);
|
|
||||||
this.cdr.markForCheck();
|
this.cdr.markForCheck();
|
||||||
|
|
||||||
this.totauxSub = this.trajetService.getTotauxJour(date, vehiculeId).subscribe({
|
this.totauxSub = this.trajetService.getTotauxJour(date, vehiculeId).subscribe({
|
||||||
@@ -119,9 +115,11 @@ export class PanneauTotauxComponent implements OnChanges, OnDestroy {
|
|||||||
this.cdr.markForCheck();
|
this.cdr.markForCheck();
|
||||||
},
|
},
|
||||||
error: () => {
|
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.totaux.set(null);
|
||||||
this.chargement.set(false);
|
this.chargement.set(false);
|
||||||
this.erreur.set('Impossible de charger les totaux.');
|
|
||||||
this.cdr.markForCheck();
|
this.cdr.markForCheck();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,6 +1,4 @@
|
|||||||
@if (groupes().length === 0) {
|
@if (groupes().length > 0) {
|
||||||
<p class="liste-vide" role="status">Aucun trajet pour ce mois.</p>
|
|
||||||
} @else {
|
|
||||||
<!-- Un groupe par journée : en-tête de date + liste de dépôt indépendante.
|
<!-- 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. -->
|
Les listes NE sont PAS connectées entre elles → drag limité à chaque jour. -->
|
||||||
@for (groupe of groupes(); track groupe.date) {
|
@for (groupe of groupes(); track groupe.date) {
|
||||||
|
|||||||
Reference in New Issue
Block a user