# 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](c:\DataS\OpenSquared\Tradon\Source\Sao\AG_GRID_COMPATIBILITY_ANALYSIS.md) - vision d'ensemble - contraintes structurelles SAO / AG Grid - architecture cible et risques 2. [AG_GRID_PROGRESS.md](c:\DataS\OpenSquared\Tradon\Source\Sao\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](c:\DataS\OpenSquared\Tradon\Source\Sao\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