Passer à AG grid pour les tableaux de données #41
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Les datatables utilisées actuellement dans decp.info ne seront bientôt plus supportées par Plotly au profit des AG Grids. Ces dernières sont plus puissantes, mais la migration n'est pas simple car j'ai beaucoup personnalisé les datatables, et elles sont utilisées un peu partout dans l'application.
Arguments pour migrer :
Voir :
Ordonnancement (voir #101) : cette migration AG Grid vient après la montée en version Dash 4.x (#101). Les DataTable sont dépréciées et retirées en Dash 5.0, donc échéance ferme avant Dash 5. Le filtrage booléen avancé (#97) pourra s'appuyer sur AG Grid + traduction
filterModel→ requête DuckDB côté serveur.Décision d'architecture — migration vers Dash AG Grid
Direction validée pour la migration. Résumé des choix structurants.
Objectifs
Séquençage
tableau.pyseul (page vitrine, cas le plus complet) — on éprouve le pattern AG Grid + row model + moteur de requête avant de généraliser.acheteur.py,titulaire.py,observatoire.py(server-side, périmètre restreint).recherche.py,admin/liste.py,figures.make_table(statiques / triviaux).Row model
tableau.py: correspond au paging/filtre/tri custom actuel sur DuckDB (~1,5 M lignes). AG Grid n'affiche que la page courante et renvoie l'état de filtre/tri à un callback Dash.Pas de rétro-compatibilité (version majeure)
?filtres=…&tris=…&colonnes=…en DSL DataTable) est retiré.?vue=<user_id>_<nom>→ voir #112.Moteur de requête : AST booléen canonique → SQL DuckDB
Point-clé : avec le row model server-side, c'est notre callback qui compile le filtre en SQL — AG Grid n'est qu'une grille d'affichage. On ne dépend donc pas de la puissance de filtrage d'AG Grid, mais d'un bon modèle interne.
AND/OR/NOT+ groupement, feuilles =colonne contains valeur(réutilisetokenize_text_filter: insensible casse/accents, wildcards*, phrases+).AND(comportement actuel préservé).(béton OR ciment) AND brique AND NOT démolition, parsé vers le même AST.#97 — approche retenue
OR/AND/NOT, parenthèses) telle que décrite dans #97.Liens