Consultation : carte pilotée par le survol, plus de navigation jour
Refonte de l'interaction carte/liste suite au retour d'usage : - Suppression de la bande de navigation « Jour préc. / date / Jour suiv. » (boutons, code et styles associés retirés). - La journée affichée sur la carte suit le SURVOL des trajets : survoler un trajet bascule la carte sur sa journée (Subject debouncé ~80 ms) et met le tracé en évidence ; en fin de survol, la carte reste sur la dernière journée survolée. Au chargement d'un mois, la carte se cale sur la dernière journée ayant des trajets. - Bouton « Ouvrir toutes les journées » (avant « Ajouter un trajet » pour ne pas décaler ce dernier ; affiché seulement s'il reste des journées repliées). - Surbrillance du groupe de la journée affichée sur la carte (en-tête bleu accentué), pilotée par le nouvel Input jourAffiche de la liste. - Harmonisation : les mois « avec données » du sélecteur passent au même bleu que la journée mise en avant (le mois sélectionné reste en bleu plein). - Date par défaut à la création : date de la carte, sinon date du jour (inchangé). Specs : requirements.md (exigence 12, glossaire Sélecteur_Temporel) et design.md (ConsultationJour, TrajetList, SelecteurTemporel) mis à jour.
This commit is contained in:
@@ -103,6 +103,15 @@ export class TrajetListComponent {
|
||||
}
|
||||
private _trajets: Trajet[] = [];
|
||||
|
||||
/**
|
||||
* Journée (`yyyy-MM-dd`) actuellement affichée sur la carte : son groupe est mis
|
||||
* en surbrillance dans la liste pour la repérer visuellement. `null` si aucune.
|
||||
*/
|
||||
@Input() set jourAffiche(valeur: string | null) {
|
||||
this._jourAffiche.set((valeur ?? '').slice(0, 10) || null);
|
||||
}
|
||||
private readonly _jourAffiche = signal<string | null>(null);
|
||||
|
||||
/** Émis lorsque l'utilisateur demande la modification d'un trajet. */
|
||||
@Output() edit = new EventEmitter<Trajet>();
|
||||
|
||||
@@ -217,6 +226,11 @@ export class TrajetListComponent {
|
||||
return this.joursOuverts().has(groupe.date);
|
||||
}
|
||||
|
||||
/** Vrai si ce groupe correspond à la journée affichée sur la carte (surbrillance). */
|
||||
estJourAffiche(groupe: GroupeJour): boolean {
|
||||
return this._jourAffiche() === groupe.date;
|
||||
}
|
||||
|
||||
/** Bascule le repliage d'une journée (déplie / replie). */
|
||||
basculerJour(groupe: GroupeJour): void {
|
||||
this.joursOuverts.update((ouverts) => {
|
||||
@@ -247,6 +261,16 @@ export class TrajetListComponent {
|
||||
});
|
||||
}
|
||||
|
||||
/** Déplie TOUTES les journées du mois affiché (bouton « Ouvrir toutes les journées »). */
|
||||
ouvrirToutesLesJournees(): void {
|
||||
this.joursOuverts.set(new Set<string>(this.groupes().map((g) => g.date)));
|
||||
}
|
||||
|
||||
/** Vrai si au moins une journée est repliée (pour n'afficher le bouton que si utile). */
|
||||
aDesJourneesFermees(): boolean {
|
||||
return this.groupes().some((g) => !this.joursOuverts().has(g.date));
|
||||
}
|
||||
|
||||
// --- Helpers d'affichage ---
|
||||
|
||||
/** Vrai si le trajet est le dernier DE SA JOURNÉE (pas d'« insérer avant le suivant »). */
|
||||
|
||||
Reference in New Issue
Block a user