feat(tableau): vues sauvegardées en JSON AST, retrait URL riche (#41)

Les vues stockent désormais {filterModel, columnState} en JSON dans
saved_views.query au lieu d'une query string DSL. Le rappel d'une vue
applique filterModel + columnState à la grille AG Grid via un nouveau
callback apply_saved_view, déclenché par pattern-matching sur les items
du menu "Mes vues" (désormais cliquables au lieu de liens href).

Retire restore_view_from_url, sync_url_and_reset_button,
show_confirmation, le bouton "Partager la vue" et le clientside
clean_filters de tableau.py - la migration AG Grid retire le mécanisme
d'URL riche sans rétrocompatibilité.

Le lien "Ouvrir" de compte/vues.py pointe maintenant vers /tableau nu
(limitation connue documentée, le rappel cross-page reste à faire).
This commit is contained in:
Colin Maudry
2026-07-10 08:35:31 +02:00
parent fbea2ebd53
commit 8efd8db07e
3 changed files with 41 additions and 138 deletions
+3 -2
View File
@@ -38,13 +38,14 @@ def test_prepare_accepts_valid():
assert err is None
def test_saved_views_items_build_links():
def test_saved_views_items_build_clickable_entries():
items = ui.saved_views_items(
[_view(1, "Vue A", "filtres=a"), _view(2, "Vue B", "tris=b")]
)
assert len(items) == 2
assert items[0].href == "/tableau?filtres=a"
assert items[0].id == {"type": "saved-view-item", "index": 1}
assert items[0].children == "Vue A"
assert items[1].id == {"type": "saved-view-item", "index": 2}
def test_views_table_empty_state():