Factoriser la logique d'editeur dupliquee entre pages (listes d'items, groupes de niveaux, setFormat) #65

Closed
opened 2026-07-02 05:36:52 +00:00 by Reliodas · 0 comments
Owner

Contexte

L'audit du 2026-07-02 a mesure une duplication importante entre les scripts inline des pages editeurs :

  • species.html, feats.html et equipment.html dupliquent chacun le meme trio addItem / removeItem / renderItemsList / handleItemInput (liste editable nom + description).
  • classes.html et subclasses.html partagent un script quasi identique (~300 lignes chacun, seule une minorite de lignes differe) : renderLevelGroups, addLevelGroup, removeLevelGroup, addFeature, removeFeature, handleGroupInput, handleFeatureInput, renderGroupsHtml, renderFeatureItems, decoupage deux colonnes du verso paysage.
  • setFormat (bascule portrait/paysage + hint d'impression) est reimplemente dans creatures.html, classes.html et subclasses.html.
  • creatures.html duplique aussi renderTraitsList / renderActionsList / handleListInput, variante du meme patron.

Toute correction de bug dans ce code doit aujourd'hui etre reportee a la main dans 2 a 4 fichiers. card-editor.js est deja le foyer naturel des fabriques partagees (initPresetSearch, initPrintQueue, arrangeSheets).

Modifications a faire

  • Extraire dans card-editor.js une fabrique de liste editable (nom + description) parametrable, et l'utiliser dans species.html, feats.html, equipment.html (et si raisonnable pour les traits/actions de creatures.html).
  • Extraire la logique commune des groupes de niveaux partagee par classes.html et subclasses.html.
  • Extraire un initFormatToggle commun pour la bascule portrait/paysage et le hint d'impression.
  • Refactor sans changement fonctionnel : aucun changement de rendu, d'IDs DOM publics ni de comportement d'impression. Rester fidele au style existant (pas de framework, pas de build).

Criteres d'acceptation

  • Les fonctions dupliquees listees ci-dessus n'existent plus qu'a un seul endroit (parametrage par page permis).
  • node scripts/smoke-test.js et node tests/visual-validation.js passent.
  • Verification manuelle : chargement d'un prereglage, edition d'une liste (ajout/suppression/saisie), bascule portrait/paysage sur creatures/classes/subclasses, panier d'impression sur au moins une page refactoree.
  • Aucun changement visuel des cartes (comparer les captures tests/screenshots/ avant/apres).
## Contexte L'audit du 2026-07-02 a mesure une duplication importante entre les scripts inline des pages editeurs : - `species.html`, `feats.html` et `equipment.html` dupliquent chacun le meme trio `addItem` / `removeItem` / `renderItemsList` / `handleItemInput` (liste editable nom + description). - `classes.html` et `subclasses.html` partagent un script quasi identique (~300 lignes chacun, seule une minorite de lignes differe) : `renderLevelGroups`, `addLevelGroup`, `removeLevelGroup`, `addFeature`, `removeFeature`, `handleGroupInput`, `handleFeatureInput`, `renderGroupsHtml`, `renderFeatureItems`, decoupage deux colonnes du verso paysage. - `setFormat` (bascule portrait/paysage + hint d'impression) est reimplemente dans `creatures.html`, `classes.html` et `subclasses.html`. - `creatures.html` duplique aussi `renderTraitsList` / `renderActionsList` / `handleListInput`, variante du meme patron. Toute correction de bug dans ce code doit aujourd'hui etre reportee a la main dans 2 a 4 fichiers. `card-editor.js` est deja le foyer naturel des fabriques partagees (`initPresetSearch`, `initPrintQueue`, `arrangeSheets`). ## Modifications a faire - Extraire dans `card-editor.js` une fabrique de liste editable (nom + description) parametrable, et l'utiliser dans `species.html`, `feats.html`, `equipment.html` (et si raisonnable pour les traits/actions de `creatures.html`). - Extraire la logique commune des groupes de niveaux partagee par `classes.html` et `subclasses.html`. - Extraire un `initFormatToggle` commun pour la bascule portrait/paysage et le hint d'impression. - Refactor sans changement fonctionnel : aucun changement de rendu, d'IDs DOM publics ni de comportement d'impression. Rester fidele au style existant (pas de framework, pas de build). ## Criteres d'acceptation - Les fonctions dupliquees listees ci-dessus n'existent plus qu'a un seul endroit (parametrage par page permis). - `node scripts/smoke-test.js` et `node tests/visual-validation.js` passent. - Verification manuelle : chargement d'un prereglage, edition d'une liste (ajout/suppression/saisie), bascule portrait/paysage sur creatures/classes/subclasses, panier d'impression sur au moins une page refactoree. - Aucun changement visuel des cartes (comparer les captures `tests/screenshots/` avant/apres).
Reliodas added this to the 1.0.0-beta milestone 2026-07-02 05:36:52 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: dnd/cards#65
No description provided.