feat: restore observatoire filters from localStorage on page load #65

This commit is contained in:
Colin Maudry
2026-03-18 20:35:31 +01:00
parent 051e908bd1
commit b4a42449ad
+41 -14
View File
@@ -303,27 +303,54 @@ Alors, on fait comment ?
@callback( @callback(
Output("dashboard_year", "value"),
Output("dashboard_acheteur_id", "value"), Output("dashboard_acheteur_id", "value"),
Output("dashboard_acheteur_categorie", "value"),
Output("dashboard_acheteur_departement_code", "value"),
Output("dashboard_titulaire_id", "value"), Output("dashboard_titulaire_id", "value"),
# Output("dashboard_url", "search"), Output("dashboard_titulaire_categorie", "value"),
Output("dashboard_titulaire_departement_code", "value"),
Output("dashboard_marche_type", "value"),
Output("dashboard_marche_considerationsSociales", "value"),
Output("dashboard_marche_considerationsEnvironnementales", "value"),
Input("dashboard_url", "search"), Input("dashboard_url", "search"),
Input("dashboard_url", "pathname"),
State("observatoire-filters", "data"),
) )
def restore_filters_from_url(search): def restore_filters(search, _pathname, stored_filters):
if not search: if search:
return no_update, no_update
params = urllib.parse.parse_qs(search.lstrip("?")) params = urllib.parse.parse_qs(search.lstrip("?"))
acheteur_id = (params.get("acheteur_id") or [None])[0] or None
titulaire_id = (params.get("titulaire_id") or [None])[0] or None
if acheteur_id or titulaire_id:
return (
None,
acheteur_id,
None,
None,
titulaire_id,
None,
None,
None,
None,
None,
)
def get_param_value(key): if stored_filters:
values = params.get(key) return (
if values and values[0] is not None: stored_filters.get("year"),
return values[0] stored_filters.get("acheteur_id"),
return no_update stored_filters.get("acheteur_categorie"),
stored_filters.get("acheteur_departement_code"),
stored_filters.get("titulaire_id"),
stored_filters.get("titulaire_categorie"),
stored_filters.get("titulaire_departement_code"),
stored_filters.get("marche_type"),
stored_filters.get("considerations_sociales"),
stored_filters.get("considerations_environnementales"),
)
acheteur_id = get_param_value("acheteur_id") return (no_update,) * 10
titulaire_id = get_param_value("titulaire_id")
return acheteur_id, titulaire_id
@callback( @callback(