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:
@@ -246,7 +246,8 @@ src/
|
||||
- Ligne par trajet (triée par `Position` croissante au sein du jour) : colonne dédiée **A/R** en début de ligne pour les allers/retours, commentaire (si présent), adresses (taille réduite), distance effective
|
||||
- Actions par trajet : modifier (→ `TrajetFormComponent` pré-rempli en < 500 ms), supprimer (→ dialog de confirmation), **insérer après** (→ `TrajetFormComponent` en mode insertion avec `adresseDepart` = point de fin du trajet courant — son arrivée, ou son **départ** si le trajet est un aller/retour —, la **date de la journée** du trajet, `positionApres` = Position du trajet courant)
|
||||
- Si le trajet n'est pas le dernier de la journée : action **insérer avant le suivant** disponible, pré-remplissant l'adresse de départ avec le point de fin du trajet courant (départ si aller/retour) et l'adresse d'arrivée avec le départ du trajet suivant, en calculant la position d'insertion `(P_courant + P_suivant) / 2`
|
||||
- Méthode publique `ouvrirJour(dateIso)` : déplie une journée donnée (appelée par le conteneur après ajout/insertion pour rendre le trajet visible)
|
||||
- Méthode publique `ouvrirJour(dateIso)` : déplie une journée donnée (appelée par le conteneur après ajout/insertion pour rendre le trajet visible) ; `ouvrirToutesLesJournees()` déplie tous les groupes ; `aDesJourneesFermees()` conditionne l'affichage du bouton « Ouvrir toutes les journées »
|
||||
- `@Input jourAffiche` : la journée affichée sur la Carte ; le groupe correspondant est mis en surbrillance (`estJourAffiche`)
|
||||
- **Glisser-déposer** (drag & drop) limité à chaque journée : un `cdkDropList` par jour, listes **non connectées** entre elles (pas de déplacement inter-journées) → recalcul des positions du jour puis `PATCH /api/trajets/reordonner`
|
||||
- Rafraîchissement du résumé mensuel en < 1 000 ms après modification/suppression/insertion
|
||||
|
||||
@@ -275,16 +276,19 @@ src/
|
||||
**`SelecteurTemporelComponent`**
|
||||
- **Repliable** ; l'en-tête affiche le mois et l'année sélectionnés (ex. « Septembre 2026 »)
|
||||
- Sélecteur d'année : liste limitée à l'année courante + années ayant des données (endpoint `/api/annees-disponibles`)
|
||||
- Sélecteur de mois : 12 mois affichés, surbrillance des mois avec données (endpoint `/api/mois-disponibles/{annee}`)
|
||||
- Sélecteur de mois : 12 mois affichés, surbrillance des mois avec données (endpoint `/api/mois-disponibles/{annee}`), avec le même code couleur bleu que la journée mise en avant dans la liste ; le mois sélectionné reste en bleu plein
|
||||
- Pas de sélecteur de jour (la consultation se fait par mois) ; désactivation de tout mois > mois courant
|
||||
- Émet un événement `moisSelectionne: { annee: number, mois: number }` à chaque changement
|
||||
|
||||
**`ConsultationJourComponent`** (composant conteneur / layout principal)
|
||||
- Deux états : un signal `mois` (`{ annee, mois }`) pilote la **liste mensuelle** ; un signal `date` (ISO) pilote la **carte** et la date par défaut d'ajout/insertion
|
||||
- Colonne gauche (fixe) : `SelecteurTemporelComponent`, puis la **bande de navigation par jour** (« ‹ Jour préc. / date / Jour suiv. › »), puis `PanneauTotauxComponent`, puis `CarteTrajetsComponent`
|
||||
- Colonne gauche (fixe) : `SelecteurTemporelComponent`, puis `PanneauTotauxComponent`, puis `CarteTrajetsComponent` (plus de bande de navigation par jour)
|
||||
- Colonne droite : bande fixe (sélecteur de Véhicule + bouton « Ajouter un trajet »), puis `TrajetListComponent` du mois avec scroll vertical
|
||||
- Navigation par jour **bornée aux jours ayant des trajets** dans le mois (exception : le jour courant dans le mois courant reste navigable même sans trajet) ; elle ne recharge que la carte et les totaux du jour
|
||||
- La journée affichée sur la Carte est pilotée par le **survol** des Trajets de la liste : survoler un Trajet bascule la Carte sur sa journée (via un `Subject` debouncé ~80 ms pour éviter les rechargements en rafale) et met le tracé en évidence ; en fin de survol, la Carte **reste** sur la dernière journée survolée (seule la surbrillance du tracé est retirée)
|
||||
- Au chargement d'un mois, la Carte se positionne par défaut sur la dernière journée du mois comportant des Trajets
|
||||
- Bouton « Ouvrir toutes les journées » (dans la barre liste, avant « Ajouter un trajet » pour ne pas décaler ce dernier ; affiché seulement s'il reste des journées repliées) → `TrajetListComponent.ouvrirToutesLesJournees()`
|
||||
- Sélecteur de Véhicule (par défaut : véhicule courant) ; filtre la liste, le Panneau_Totaux et la Carte sur le véhicule sélectionné
|
||||
- Transmet la date affichée à la liste (`[jourAffiche]`) : le groupe de cette journée est mis en surbrillance (en-tête bleu accentué) pour la repérer
|
||||
- Coordonne le rafraîchissement (< 1 000 ms) ; un mois vide affiche des totaux à 0 et un unique message « Aucun trajet pour ce mois », sans alerte d'erreur
|
||||
- Après création/modification d'un trajet (`onFormEnregistre(trajet)`), si la date du trajet est dans un autre mois, se repositionne sur ce mois, cale la Carte sur la journée du trajet, puis déplie ce jour dans la liste (`TrajetListComponent.ouvrirJour`, différé au tick suivant pour passer après le recalcul de repliage du setter)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user