Repository navigation
feat(builder): réglages de lecture du graphique — unité, bornes, lignes de référence, cibles, couleurs fixées, catégories vides, synthèse de carte (#1218) - #1266
Merged
Conversation
…es de référence, cibles, couleurs fixées, catégories vides, synthèse de carte (#1218) Quatorze attributs de dsfr-data-chart reçoivent un contrôle dans la section « Apparence » : unit-tooltip, unit-tooltip-bar, x-min, x-max, y-min, y-max, reference-lines, targets, targets-zone, targets-legend, color-map, empty-label, map-summary, map-summary-value. Chaque réglage n'apparaît que pour les types qui le lisent (table mesurée dans le navigateur, apps/builder/src/lecture.ts). Tant qu'aucun réglage n'est posé, le code généré est inchangé. Dès qu'un réglage est posé, les données intégrées passent par la bibliothèque, comme le format long de #1204. Le reste de #1218 passe à l'issue de suite #1263, que citent les exclusions. Refs #1218 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FrLwzPx5CG4VsPHEdo5ZVs
…ges de lecture (#1218) - loadFavoriteState : réglages restaurés, ancien favori rouvert sans réglage, statut « Modifications non générées » (trois preuves de mutation). - tests/builder-e2e/builder-lecture-recette.spec.ts : 11 cas qui posent les réglages par l'interface et lisent l'aperçu (échelles Chart.js, calques, synthèse de carte, 375 px, absence de défilement de page). Recette manuelle, hors CI : l'aperçu charge DSFR Chart depuis son CDN. - Noms proposés pour une couleur : la série unique est nommée par le titre. Refs #1218 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FrLwzPx5CG4VsPHEdo5ZVs
18 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Refs #1218 — suite ouverte : #1263
#1220 avait posé le garde-fou de couverture du Builder « Créer un graphique » et renvoyé à #1218 vingt-sept attributs de
dsfr-data-chartsans contrôle. Cette PR en livre quatorze, ceux qui changent ce que l'usager LIT, et renvoie les treize autres (plus deux composants) à l'issue de suite #1263, que citent désormais les exclusions.Réglages livrés
Tous dans la section 4 · Apparence du volet. Un réglage n'apparaît que pour les types qui le lisent ; masqué, il garde sa valeur mais n'est pas écrit dans le code.
unit-tooltip,unit-tooltip-barcolor-mapempty-labelmap-summary,map-summary-valuey-min,y-max—x-min,x-maxpour des barres horizontalesx-min,x-maxreference-linestargets,targets-zone,targets-legendLa table « quel réglage pour quel type » (
apps/builder/src/lecture.ts) est mesurée dans le navigateur (échelles Chart.js lues après rendu, DSFR Chart 2.1.1), pas déduite du manifeste. Ce que la mesure a montré est dans « Vu en chemin ».Couverture des attributs de
dsfr-data-chart— avant / aprèsLe manifeste déclare 49 attributs, le même nombre qu'à #1220 : les versions 0.44 à 0.47 n'en ont ajouté aucun à
dsfr-data-chart(0.45 :color-maprecolore les points ; 0.47 :label-fieldacceptechamp:Libellé— une grammaire, pas un attribut). Mesure :tests/apps/builder/couverture.test.ts.type,label-field,value-field,value-field-2,value-fields,series-field,code-field,stacked,selected-palettedatabox,databox-title,databox-source,databox-date,databox-trend,databox-download,databox-screenshot,databox-fullscreensource,name,horizontal,fillunit-tooltip,unit-tooltip-barx-min,x-max,y-min,y-maxreference-linestargets,targets-zone,targets-legendcolor-mapempty-labelmap-summary,map-summary-valuemap-summary-weight,map-summary-fieldhighlight-index,map-highlightheading-level,databox-date-field,databox-tooltip-title,databox-tooltip-content,databox-modal-title,databox-modal-content,databox-actions,databox-default-sourceidle-messagegauge-valueComposants d'affichage : inchangé —
dsfr-data-kpi-groupetdsfr-data-displayrestent exclus, désormais vers #1263.Ce qui est laissé, et pourquoi
heading-level,databox-date-field, infobulle, fenêtre d'information, actions, source par défaut) : réglage fin d'un cadre déjà exposé, à traiter d'un bloc — avec la case « Plein écran », que seuldatabox-modal-titlerendrait utile (fix(builder): cadre officiel DSFR — vue tableau avec noms de champs techniques, et « Plein écran » sans effet (DSFR Chart 2.1.1) #1179).map-summary-weight,map-summary-field: la moyenne pondérée demande que la requête générée agrège une seconde colonne (l'effectif), dans les quatre chemins du générateur. Le lot livre la somme, la valeur publiée et « aucun chiffre ».highlight-index: désigne un rang, pas une catégorie — instable dès que les données ou le tri changent. « Couleurs par catégorie » couvre le besoin par le nom. À arbitrer.map-highlight,idle-message(sans effet tant que le Builder ne génère pas derequire-where),dsfr-data-kpi-group,dsfr-data-display.limitdedsfr-data-query) et hauteur / ratio : ni dans feat(builder): réglages de dsfr-data-chart encore absents du Builder — suite de #1204 #1218 ni attributs dedsfr-data-chart; non traités.Code généré
<dsfr-data-chart>dans la fonction uniquevisualElement. La requête n'est pas touchée.<dsfr-data-source data='…'>+<dsfr-data-chart>), comme le format long de feat(builder): podium, barres + ligne, cartes régions/académies/monde, format long et garde-fou de couverture (#1204) #1220 — une balise DSFR Chart nue ne connaît ni les lignes de référence, ni les cibles, nicolor-map, ni la synthèse de carte.Favoris et états déposés
Les quatorze clés d'état entrent dans l'instantané (
getBuilderStateToSave) et dans la détection « Modifications non générées ». À la réouverture (favoris, Playground, Pipeline, tableau de bord), elles sont remises en forme parnormalizeLecture: un favori enregistré avant ce lot n'en porte aucune, se rouvre sans réglage et régénère le même code, y compris quand la session en cours en portait. Une clé mal formée prend sa valeur par défaut. Un réglage rouvert déplie la divulgation qui le porte.Assistant
Chaque contrôle a son repère (
builder.apparence.unite,builder.apparence.axes.reference.ajouter…), quatre zones nouvelles (couleurs,axes,axes.reference,axes.cibles), des synonymes (« seuil », « objectif », « borne », « total national »…).reperes.generated.tsest régénéré ;check:repereset la complétude par le rendu (reperes-completude.test.ts, qui rend désormais une ligne de chaque éditeur) sont verts.Vérification des données (ADR-122)
Aucun contrôle ajouté à
tests/verif-donnees/, pour ces raisons :carte-resume-somme-927etcarte-resume-dit-ce-quil-ecarte(domaineaffichages).srcdoc), et un manifeste ne peut pas importer son générateur (test-garde de l'oracle) : y recopier le balisage attendu contrôlerait une copie, pas le générateur.À noter pour le propriétaire :
map-summary-valuen'a pas de contrôle danstests/verif-donnees/(c'est un littéral, non calculé).Tests
tests/apps/builder/lecture-1218.test.ts(84 cas) : module pur, code généré dans les chemins du générateur, instantané, formulaire par type. Cinq preuves de mutation, vues rouges puis retirées.tests/apps/builder/retour-playground-champs.test.ts(+3) : réouverture parloadFavoriteState, ancien favori, statut « modifié ». Trois preuves de mutation.tests/apps/builder/couverture.test.ts: les quatorze attributs ne sont plus exclus et ont chacun leur contrôle.tests/builder-e2e/builder-lecture-recette.spec.ts(11 cas, recette manuelle hors CI — l'aperçu charge DSFR Chart depuis son CDN) : réglages posés par l'interface, puis lus dans l'aperçu (échelles Chart.js, étiquettes, calques, synthèse de carte), ancien favori, 375 px, absence de défilement de page. Preuve de mutation vue rouge.npm run test:runnpm run typecheck:tests,npm run lint,npm run check:accentsnpm run check:reperes,check:specs-tables,check:studio-couverturenpm run build, build du Buildernpm run verifexport-html-api-recette+layout-diagnostic-recettee2e/buttons.spec.ts+e2e/mobile-chrome.spec.tsbuilder-lecture-recetteLes specs Playwright ont tourné contre le serveur de dev de cette branche sur le port 5241, avec des copies temporaires des configurations : le port 5173 était tenu par un autre worktree. La CI les rejoue telles quelles.
Choix d'interface à valider
y-*ou enx-*(barres horizontales). L'axe horizontal n'a ses propres bornes que pour le nuage.<input type="color">natif (comme le Builder carto), bleu France proposé ; noms suggérés depuis les séries et les données générées.5,6et310 480; une saisie illisible n'écrit aucun attribut, sans message.Vu en chemin, non corrigé
Bibliothèque (
packages/coren'est pas touché, pas de changeset) :y-min/y-maxsurtype="bar" horizontalajoutent deux catégories fantômes à l'axe des étiquettes ; ce sontx-min/x-maxqui bornent les valeurs.y-min/y-maxsans effet surtype="bar-line";x-min/x-maxsans effet surtype="line", que leur description cite.y-min="5"→ axe depuis 0).Builder :
labelFieldLabel) est enregistré mais n'est écrit nulle part dans le code généré.extraSeriesne sont pas dans l'instantané des favoris.Le détail est dans #1263.
🤖 Generated with Claude Code
https://claude.ai/code/session_01FrLwzPx5CG4VsPHEdo5ZVs