Files
sao2.0/AG_GRID_SESSION_INDEX.md
2026-05-16 09:15:21 +02:00

7.5 KiB

AG Grid Session Index

Point d'entree

Ce fichier sert de synthese rapide pour reprendre le projet AG Grid / SAO a la prochaine session.

Documents a lire dans l'ordre

  1. AG_GRID_COMPATIBILITY_ANALYSIS.md

    • vision d'ensemble
    • contraintes structurelles SAO / AG Grid
    • architecture cible et risques
  2. AG_GRID_PROGRESS.md

    • etat d'avancement du POC
    • ce qui est deja branche dans le code
    • ce qui restait a faire apres les premieres passes
  3. AG_GRID_STYLING_NOTES.md

    • retour d'experience de la grosse session de debug CSS
    • ce qui a fait perdre du temps
    • ce qui a vraiment aide
    • methode recommandee pour les prochaines retouches visuelles

Synthese globale

1. Ce qui est valide

  • POC AG Grid Community en JavaScript pur branche dans SAO
  • fallback historique SAO conserve
  • selection de lignes fonctionnelle
  • tri fonctionnel
  • filtres popup fonctionnels
  • rendu visuel fortement rapproche du style AG Grid standard
  • persistance locale du layout utilisateur
  • panneau Columns custom stable
  • grouping multi-level avec agregations, sous-totaux et grand total

2. Ce qu'on a appris

  • le principal risque n'est pas AG Grid, mais le vieux CSS global SAO
  • les pseudo-elements et les styles globaux sur les controles natifs peuvent casser le theme AG Grid
  • les retouches visuelles doivent etre debuggees avec des traces DOM/cascade, pas seulement "a l'oeil"
  • les bugs de state doivent eux aussi etre traces tres tot
  • les traces utiles a partager doivent etre en JSON plat
  • si 1 ou 2 corrections "intuitives" ne suffisent pas, il faut instrumenter immediatement

3. Strategie pour la prochaine session

  • ne pas repartir de zero
  • relire d'abord cette page puis la section la plus recente de AG_GRID_PROGRESS.md
  • relire ensuite AG_GRID_STYLING_NOTES.md
  • si un bug visuel resiste a 1 ou 2 corrections, passer tout de suite a un dump cible
  • si un bug de state ou de rendering resiste a 1 ou 2 corrections, ajouter tout de suite une trace ..._FLAT_JSON
  • eviter les gros changements globaux de priorite CSS sans isolation claire

Point de reprise apres la session du 2026-03-30

Le POC a franchi un palier important:

  • panneau Columns hors Bootstrap, stable et persiste
  • configuration utilisateur locale de la grille
  • panneau Grouping
  • grouping multi-level client-side
  • agregations
  • sous-totaux
  • grand total
  • toolbar simplifiee et icones plus propres

Les traces suivantes ont ete introduites pour accelerer le debug:

  • COLUMNS_MENU_LAYOUT_FLAT_JSON
  • GROUPING_ACTION_FLAT_JSON
  • GROUPING_STATE_FLAT_JSON
  • GROUPING_PERSISTED_FLAT_JSON
  • ROW_DATA_KIND_FLAT_JSON

Memo important:

  • produire les traces plus frequemment
  • preferer des JSON plats des le debut
  • ne pas attendre plusieurs tentatives "a l'aveugle" quand un symptome resiste

Point de reprise apres la session du 2026-03-31

Deux chantiers supplementaires ont ete consolides:

  • diagnostic de fallback AG Grid plus riche
  • dark mode V1 safe sur le shell principal et la grille

Fallback renderer

La trace a lire en premier est maintenant:

  • TREE_VIEW_DECISION_FLAT_JSON

Elle permet de savoir immediatement si une vue part sur:

  • ag_grid
  • legacy_tree

Et pourquoi, avec notamment:

  • children_field
  • editable_view
  • embedded_relation_tree

Le nouveau garde-fou embedded_relation_tree est important:

  • il evite que des sous-listes embarquees de type one2many ou relationnelles partent par erreur sur AG Grid

Dark mode V1

Le dark mode est maintenant present dans une version prudente:

  • toggle global pres du logo
  • persistance locale
  • logo light/dark dedie
  • topbar, menu, shell, filtres modernises, toolbar de formulaire et AG Grid traites

Ne pas supposer que tout legacy est theme en dark:

  • les composants fragiles n'ont pas encore tous ete traites
  • il faut continuer par zones locales

Next steps produit memorises

Priorite probable

  • presets / bookmarks d'affichage par user/vue

Idee retenue:

  • permettre au user de choisir une configuration nommee de grille
  • separer si besoin:
    • bookmark de filtre SAO
    • preset de layout/tri/grouping AG Grid

Suite logique apres grouping / sous-totaux

  • Reset layout
  • Reset grouping
  • Expand all / Collapse all
  • presets nommes de vue
  • support de plus de colonnes speciales
  • meilleure visibilite des raisons de fallback vers l'ancien tree
  • plus tard: agregations backend sur tout le dataset filtre

Suite logique dark mode

  • finir le perimetre safe du dark mode
  • verifier les toolbars / panneaux encore heterogenes
  • traiter ensuite les modales et dropdowns les plus utilises
  • garder la bascule light/dark strictement non destructive

Recommandation long terme

Si AG Grid doit devenir central dans les vues tree, il faudra probablement:

  • mieux isoler AG Grid du CSS global SAO
  • ou rationaliser les anciennes regles SAO sur input/select/radio/checkbox
  • ou definir une vraie zone de styles AG Grid maitrisee

Point de reprise apres la session du 2026-05-04

Session de stabilisation apres migration vers le depot:

  • https://gitea.open-squared.tech/admin/sao2.0.git

Regle importante d'arborescence / deploiement

Le repo local ne correspond pas exactement a l'arborescence serveur:

  • index.html est gere dans le repo parent cote serveur
  • les fichiers utiles au runtime sont charges depuis dist/
  • quand on modifie tryton-sao.js ou tryton-sao.css, penser a synchroniser aussi:
    • dist/tryton-sao.js
    • dist/tryton-sao.css

Ce point a explique pourquoi une correction CSS Many2One semblait inactive.

Correctif Many2One

Probleme corrige:

  • texte des champs Many2One chevauchant l'icone primaire d'ouverture

Correction retenue:

  • ne pas compter uniquement sur le CSS
  • Sao.View.Form.Many2One.display() appelle maintenant _sync_icon_padding
  • _sync_icon_padding pose directement le padding gauche/droite selon les icones visibles

Trace temporaire:

  • [M2O_ICON_LAYOUT]

Correctif grouping AG Grid restaure

Probleme corrige:

  • apres reouverture d'une vue, le panneau Grouping restaurait bien Supplier
  • mais les groupes etaient reconstruits avec des valeurs vides, donc (Empty)

Cause:

  • le grouping persistait plus vite que le chargement des valeurs texte Many2One / rec_name

Correction:

  • _load_grouping_values charge les champs presents dans grouping.groupBy
  • display() attend ce chargement avant de construire rowData

Traces a lire si le sujet revient:

  • [AGGRID][GROUPING_LOAD_FIELDS_FLAT_JSON]
  • [AGGRID][GROUPING_KEYS_FLAT_JSON]
  • [AGGRID][ROW_DATA_KIND_FLAT_JSON]

Favicon

  • ajout de images/tradon-icon.png
  • style: grand T vert sur fond carre arrondi bleu petrole / vert
  • attention au cache navigateur favicon

Commits de reprise

  • d9292b8 Fix served Many2One icon padding
  • d78c9e0 Fix AG Grid restored grouping values
  • fb54c32 Add Tradon browser favicon

Nettoyage futur

  • retirer les traces temporaires une fois la stabilisation confirmee
  • garder le reflexe des traces JSON plates pour les bugs AG Grid difficiles

Dernier correctif en cours

  • les modales Sao.Window.Search ouvertes par les loupes Many2One ne doivent pas utiliser AG Grid pour l'instant
  • marqueur ajoute: search_window: true
  • fallback AG Grid ajoute: search_window
  • symptome corrige: fenetre Search Broker vide alors que les records existent