Saisie/insertion : date de journée, repositionnement, point A/R, retour domicile

Améliorations de saisie issues du retour d'usage :

- Insertion : la date pré-remplie est celle de la JOURNÉE du trajet source (via
  prefill.date), et non la date de la carte, pour éviter les erreurs de saisie.
- Insertion « après » / « avant le suivant » : l'adresse de départ pré-remplie
  est le point de FIN du trajet source — son arrivée, ou son DÉPART si c'est un
  aller/retour (le véhicule est revenu à son point d'origine).
- Après création/modification sur une autre journée : repositionnement auto sur
  le mois du trajet, cadrage de la carte sur sa date, et dépliage du groupe de
  cette journée (TrajetListComponent.ouvrirJour, différé après recalcul du
  repliage) pour rendre le trajet ajouté visible.
- Bouton « Utiliser mon domicile » sur l'arrivée : pré-remplit le commentaire
  avec « Retour domicile » si le commentaire est vide (jamais de remplacement).

Specs : requirements.md (exigences 10.19, 11.1/11.2/11.12, 12.23) et design.md
(TrajetForm, TrajetList, ConsultationJour) mis à jour.
This commit is contained in:
2026-09-20 20:16:30 +02:00
parent e84c2356f1
commit 173b123f03
6 changed files with 112 additions and 18 deletions
@@ -67,6 +67,12 @@ export interface TrajetInsertionPrefill {
adresseDepart?: string | null;
adresseArrivee?: string | null;
vehiculeId?: number | null;
/**
* Date (ISO `yyyy-MM-dd`) de la journée du trajet à partir duquel on insère.
* En mode insertion, elle prime sur `dateParDefaut` (date de la carte) afin que
* le nouveau trajet soit rattaché à la BONNE journée (Exigences 11.1–11.4).
*/
date?: string | null;
}
/** Identifie lequel des deux champs adresse est concerné. */
@@ -400,8 +406,14 @@ export class TrajetFormComponent implements OnInit, OnDestroy {
return;
}
// Création / insertion : pré-remplit la date avec la journée affichée si fournie.
const dateDefaut = this.versIsoInput(this.dateParDefaut ?? '');
// Création / insertion : pré-remplit la date. En mode insertion, la date de la
// JOURNÉE du trajet concerné (prefill.date) prime sur la date de la carte
// (dateParDefaut), afin de rattacher le nouveau trajet à la bonne journée.
const dateSource =
this.mode === 'insert' && this.prefill?.date
? this.prefill.date
: (this.dateParDefaut ?? '');
const dateDefaut = this.versIsoInput(dateSource);
if (dateDefaut) {
this.form.patchValue({ date: dateDefaut });
}
@@ -511,6 +523,13 @@ export class TrajetFormComponent implements OnInit, OnDestroy {
this.coordArrivee.set(null);
this.sourceFiableArrivee.set(true);
this.suggestionsArrivee.set([]);
// Confort de saisie : un trajet dont l'arrivée est le domicile est typiquement
// un retour. On pré-remplit le commentaire avec « Retour domicile » s'il est
// encore vide (on ne remplace jamais un commentaire déjà saisi).
if (!(this.commentaireCtrl.value ?? '').trim()) {
this.commentaireCtrl.setValue('Retour domicile');
this.commentaireCtrl.markAsDirty();
}
}
}