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:
@@ -23,7 +23,11 @@ def prepare_view_to_save(
|
||||
|
||||
def saved_views_items(views) -> list:
|
||||
return [
|
||||
dbc.DropdownMenuItem(view["name"], href=f"/tableau?{view['query']}")
|
||||
dbc.DropdownMenuItem(
|
||||
view["name"],
|
||||
id={"type": "saved-view-item", "index": view["id"]},
|
||||
n_clicks=0,
|
||||
)
|
||||
for view in views
|
||||
]
|
||||
|
||||
@@ -35,8 +39,11 @@ def _view_row(view) -> html.Div:
|
||||
children=[
|
||||
html.Span(view["name"], className="flex-grow-1"),
|
||||
dbc.Button(
|
||||
# Limitation connue : la vue n'est pas appliquée automatiquement
|
||||
# en arrivant sur /tableau depuis cette page. Le mécanisme de
|
||||
# rappel multi-page reste à faire (voir tableau.py `apply_saved_view`).
|
||||
"Ouvrir",
|
||||
href=f"/tableau?{view['query']}",
|
||||
href="/tableau",
|
||||
color="link",
|
||||
size="sm",
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user