Corrige la grille des besoins : postes manquants au-delà du premier
Chaque cellule de la grille (label de poste, en-têtes, créneaux, cases vides) recevait sa position via l'ordre d'émission des enfants, en comptant sur le fait que chaque ligne totalise exactement le nombre de tranches de 30 min d'un jour pour que l'auto-flow CSS reste aligné. Un poste dont les créneaux ne tombaient pas exactement sur ce total (deux créneaux adjacents mais non alignés sur 30 min, courant depuis la création de créneaux à la main) décalait tous les postes suivants — leur nom de poste n'apparaissait plus sur la bonne ligne. Chaque cellule reçoit maintenant sa position de grille explicitement (gridColumn/gridRow calculés), immunisé contre ce genre de décalage : l'anomalie d'un poste reste locale à sa propre ligne. Nouveau test de non-régression (scripts/smoke.tsx:checkGridLayout) : inspecte les gridRow réellement rendus plutôt que la simple absence de crash — un décalage CSS n'est pas détectable par un rendu SSR ordinaire. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
5f80f167c8
commit
8b9c0ac498
@@ -463,12 +463,22 @@ temps : une colonne = 30 min, bornée par jour à la plage réellement utilisée
|
||||
(du créneau le plus matinal au plus tardif, arrondi à la demi-heure
|
||||
englobante — pas les 24 h complètes). Les créneaux gardent des horaires
|
||||
libres (`ShiftCreate`, § 2) ; ils sont replacés dans cette grille fixe en
|
||||
fusionnant les cases qu'ils couvrent (`gridColumn: span N`), arrondis à la
|
||||
tranche englobante s'ils ne tombent pas pile sur un multiple de 30 min
|
||||
(`buildTimeGrid` / `placeInTimeGrid` dans `frontend/src/lib/planning.ts`).
|
||||
Largeur adaptative par jour (`columnWidthPx`, en fonction du nombre de
|
||||
tranches) : peu de tranches ⇒ colonnes larges, beaucoup ⇒ largeur compacte
|
||||
avec défilement horizontal — jamais de colonnes étroites par défaut.
|
||||
fusionnant les cases qu'ils couvrent, arrondis à la tranche englobante s'ils
|
||||
ne tombent pas pile sur un multiple de 30 min (`buildTimeGrid` /
|
||||
`placeInTimeGrid` dans `frontend/src/lib/planning.ts`). **Chaque cellule
|
||||
reçoit sa position de grille explicitement** (`gridColumn`/`gridRow`
|
||||
calculés dans `GrillePage.tsx`, pas seulement `gridColumn: span N`) : un
|
||||
poste dont les créneaux ne totalisent pas exactement le nombre de tranches
|
||||
d'un jour (deux créneaux adjacents mais non alignés sur 30 min, désormais
|
||||
courant depuis la création à la main) ne doit jamais décaler les lignes
|
||||
suivantes — bug corrigé une fois (postes manquants au-delà du premier), un
|
||||
positionnement implicite (auto-flow) recréerait la même classe de bug.
|
||||
Vérifié par `scripts/smoke.tsx:checkGridLayout` (inspecte les `grid-row`
|
||||
rendus, pas seulement l'absence de crash — un décalage CSS n'est pas visible
|
||||
dans un simple rendu SSR). Largeur adaptative par jour (`columnWidthPx`, en
|
||||
fonction du nombre de tranches) : peu de tranches ⇒ colonnes larges, beaucoup
|
||||
⇒ largeur compacte avec défilement horizontal — jamais de colonnes étroites
|
||||
par défaut.
|
||||
La « Vue bénévoles » (`VolunteerViewPage.tsx`) reste sur l'ancien modèle,
|
||||
distinct : une colonne par **créneau** (signature `starts_at`/`ends_at`)
|
||||
plutôt qu'un axe temporel continu (`buildLattice` / `LatticeColumn`), plus
|
||||
@@ -664,6 +674,7 @@ Aucune dépendance locale requise hors Docker.
|
||||
| 25 | Formulaire public : photo recadrée en carré côté navigateur avant l'envoi, aperçu agrandi ; personnalisation de la page (logo, texte d'introduction) depuis l'écran de configuration (`/inscriptions`) | à valider |
|
||||
| 26 | Feuilles de poste : programmation du jour (horaires des artistes, tous postes confondus) sous le référent | à valider |
|
||||
| 27 | Formulaire public : encart de paiement de la cotisation via Yapla (lien externe configurable), affiché sous la case correspondante | à valider |
|
||||
| 28 | Correctif grille des besoins : positionnement explicite (`gridColumn`/`gridRow`) de chaque cellule — un poste aux créneaux non alignés sur 30 min ne décale plus les postes suivants (noms de poste manquants au-delà du premier) | à valider |
|
||||
|
||||
**Reste hors périmètre** (modèle prêt à les accueillir) : SMS, constructeur
|
||||
de formulaire, pointage sur site, IA. Frontend : squelette + 6 écrans +
|
||||
|
||||
Reference in New Issue
Block a user