UX consultation, trajets aller/retour et rafraîchissement des totaux
- Totaux : rafraîchissement immédiat du panneau (jour/mois/année + montant prévisionnel) après création/modification/suppression/réordonnancement d'un trajet, sans changer de jour (ViewChild + méthode publique rafraichir()). - Trajets Aller/Retour : case à cocher au formulaire ; la distance comptée est doublée (distance simple stockée + booléen AllerRetour, distance effective utilisée dans tous les agrégats : totaux, résumés, barème, régularisation, PDF). Migration TrajetAllerRetour. Badge « A/R » dans une colonne dédiée en début de ligne pour garder date/adresses alignées. - Mise en page de la page Trajets : vue à hauteur fixe où seule la liste défile ; colonne gauche figée (sélecteur de date + navigation, totaux, carte) et bande fixe (véhicule + bouton d'ajout) au-dessus de la liste. Layout applicatif global en pleine hauteur (app.component). - run-dev.sh : chargement de la clé JWT depuis .env (ou secret de dev aléatoire) et Auth__FrontendBaseUrl sur le frontend dev ; rappel du lien de reset journalisé. Build backend (solution) et frontend (production) OK.
This commit is contained in:
@@ -214,6 +214,14 @@
|
||||
}
|
||||
</div>
|
||||
|
||||
<!-- Aller/Retour : double la distance comptée, sans créer de trajet retour. -->
|
||||
<div class="champ champ--aller-retour">
|
||||
<label class="case-aller-retour">
|
||||
<input type="checkbox" formControlName="allerRetour" />
|
||||
<span>Aller/Retour (compte le double de la distance)</span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<!-- Actions -->
|
||||
<div class="actions">
|
||||
<button type="submit" class="btn-primaire" [disabled]="soumissionEnCours()">
|
||||
|
||||
@@ -212,3 +212,21 @@
|
||||
background: #f3f5f8;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Case Aller/Retour : compacte, sur une seule ligne pour gagner en hauteur. */
|
||||
.champ--aller-retour {
|
||||
margin: 0.25rem 0 0.5rem;
|
||||
}
|
||||
.case-aller-retour {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.5rem;
|
||||
font-size: 0.9rem;
|
||||
cursor: pointer;
|
||||
}
|
||||
.case-aller-retour input {
|
||||
width: 1rem;
|
||||
height: 1rem;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
@@ -371,7 +371,8 @@ export class TrajetFormComponent implements OnInit, OnDestroy {
|
||||
'',
|
||||
[Validators.required, Validators.minLength(1), Validators.maxLength(ADRESSE_MAX)]
|
||||
],
|
||||
commentaire: ['', [Validators.maxLength(COMMENTAIRE_MAX)]]
|
||||
commentaire: ['', [Validators.maxLength(COMMENTAIRE_MAX)]],
|
||||
allerRetour: [false]
|
||||
});
|
||||
}
|
||||
|
||||
@@ -382,7 +383,8 @@ export class TrajetFormComponent implements OnInit, OnDestroy {
|
||||
date: this.versIsoInput(this.trajet.date),
|
||||
adresseDepart: this.trajet.adresseDepart,
|
||||
adresseArrivee: this.trajet.adresseArrivee,
|
||||
commentaire: this.trajet.commentaire ?? ''
|
||||
commentaire: this.trajet.commentaire ?? '',
|
||||
allerRetour: this.trajet.allerRetour ?? false
|
||||
});
|
||||
// En édition, on repart sans coordonnées locales : elles ne seront recalculées
|
||||
// côté backend que si l'adresse est modifiée (Exigence 5.2/5.3). Les adresses du
|
||||
@@ -549,7 +551,8 @@ export class TrajetFormComponent implements OnInit, OnDestroy {
|
||||
arriveeLatitude: coordArrivee?.latitude ?? null,
|
||||
arriveeLongitude: coordArrivee?.longitude ?? null,
|
||||
commentaire: this.normaliserCommentaire(),
|
||||
vehiculeId: this.vehiculeId
|
||||
vehiculeId: this.vehiculeId,
|
||||
allerRetour: !!this.form.get('allerRetour')?.value
|
||||
};
|
||||
}
|
||||
|
||||
@@ -565,7 +568,8 @@ export class TrajetFormComponent implements OnInit, OnDestroy {
|
||||
arriveeLatitude: coordArrivee?.latitude ?? null,
|
||||
arriveeLongitude: coordArrivee?.longitude ?? null,
|
||||
commentaire: this.normaliserCommentaire(),
|
||||
vehiculeId: this.vehiculeId
|
||||
vehiculeId: this.vehiculeId,
|
||||
allerRetour: !!this.form.get('allerRetour')?.value
|
||||
};
|
||||
}
|
||||
|
||||
@@ -618,7 +622,8 @@ export class TrajetFormComponent implements OnInit, OnDestroy {
|
||||
date: '',
|
||||
adresseDepart: '',
|
||||
adresseArrivee: '',
|
||||
commentaire: ''
|
||||
commentaire: '',
|
||||
allerRetour: false
|
||||
});
|
||||
this.coordDepart.set(null);
|
||||
this.coordArrivee.set(null);
|
||||
|
||||
Reference in New Issue
Block a user