Rendre lisibles le statut et la date imposée
All checks were successful
Build / build (push) Successful in 1m2s

Statut : quatre boutons peints de leur texture, si bien que le panneau
sert enfin de légende. « En cours » se raye et « terminé » redevient vif
— la trame les distingue, la teinte n'a plus à le faire.

Date imposée : un cadre tireté cerne la forme entière. Les taquets
tombaient sous les poignées de redimensionnement et disparaissaient sur
une barre courte. Son libellé passe dans le modèle, ce qui la fait
apparaître dans la vue par mois, qui la taisait.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-10 19:17:15 +02:00
parent 4a513f9a59
commit 815e144d9a
10 changed files with 574 additions and 98 deletions

View File

@@ -29,6 +29,7 @@ import {
formaterHorizon,
formaterMois,
formaterPeriode,
libelleStatut,
moisDe,
projetFiltre,
projetFiltreEtat,
@@ -213,6 +214,10 @@ function construireEntreePhase({ projet, phase }, tagsActifs) {
ligne.className = `mois-entree mois-entree--${phase.status}`;
ligne.style.setProperty('--couleur-projet', projet.color);
if (phase.milestone) ligne.classList.add('mois-entree--jalon');
// La vue par mois est celle où l'on parcourt les échéances : c'est
// exactement là qu'une date qu'on ne décide pas doit se voir. Elle ne le
// faisait pas, alors que la frise l'annonçait sur chaque barre.
if (phase.fixed) ligne.classList.add('mois-entree--imposee');
// C'est cette classe qui rend la ligne entière cliquable (app.js) : sans
// notes, il n'y a rien à déplier et le clic ne doit rien promettre.
if (phase.notes) ligne.classList.add('mois-entree--commentee');
@@ -221,8 +226,8 @@ function construireEntreePhase({ projet, phase }, tagsActifs) {
ligne.append(triangle(phase.notes, phase.name));
// La marque reprend les formes de la frise — losange pour un jalon, barre
// pour une tâche — pour qu'on reconnaisse au même dessin ce qu'on a appris à
// lire là-bas.
// pour une tâche, cadre tireté pour une date imposée — pour qu'on reconnaisse
// au même dessin ce qu'on a appris à lire là-bas.
const marque = document.createElement('span');
marque.className = 'mois-entree__marque';
ligne.append(marque);
@@ -327,7 +332,7 @@ function infobulle(projet, phase) {
? `Jalon du ${formaterDateLongue(phase.start)}`
: `${formaterDateLongue(phase.start)}${formaterDateLongue(phase.end)}` +
` (${jours} jour${jours > 1 ? 's' : ''})`) +
`\n${LIBELLES_STATUT[phase.status]}` +
`\n${libelleStatut(phase)}` +
// Aplati : un `title` ne connaît que le texte. Sans cela, survoler afficherait
// la source markdown, astérisques comprises — une note *moins* lisible
// qu'avant qu'on ne l'enrichisse.