Tooltips abonnement sur Sauvegarder vue et Mes vues

This commit is contained in:
Colin Maudry
2026-07-13 23:04:48 +02:00
parent 8b9433b7f2
commit 34f10f2283
+24 -7
View File
@@ -332,17 +332,29 @@ layout = [
id="saved-views-bar", id="saved-views-bar",
className="d-inline-flex align-items-center gap-2", className="d-inline-flex align-items-center gap-2",
children=[ children=[
dbc.Button( # Boutons enveloppés dans un <span> : Bootstrap met
# `pointer-events: none` sur les boutons désactivés,
# ce qui empêche le survol (et donc le `title`
# natif) de fonctionner directement dessus. Le
# `title` est donc porté par le span englobant.
html.Span(
id="btn-save-view-wrapper",
className="d-inline-block",
children=dbc.Button(
"Sauvegarder la vue", "Sauvegarder la vue",
id="btn-save-view", id="btn-save-view",
color="secondary", color="secondary",
size="sm", size="sm",
# Grisé/désactivé pour les non-abonnés (le callback # Grisé/désactivé pour les non-abonnés (le
# toggle_saved_views_controls affine au chargement). # callback toggle_saved_views_controls
# affine au chargement).
disabled=True, disabled=True,
title="Enregistrer les filtres, tris et colonnes actuels sous un nom (abonnés)",
), ),
dbc.DropdownMenu( ),
html.Span(
id="saved-views-menu-wrapper",
className="d-inline-block",
children=dbc.DropdownMenu(
id="saved-views-menu", id="saved-views-menu",
label="Mes vues", label="Mes vues",
color="secondary", color="secondary",
@@ -351,6 +363,7 @@ layout = [
disabled=True, disabled=True,
className="d-inline-block", className="d-inline-block",
), ),
),
], ],
), ),
dcc.Store(id="saved-views-refresh"), dcc.Store(id="saved-views-refresh"),
@@ -647,14 +660,18 @@ def reset_view(n_clicks, column_state):
@callback( @callback(
Output("btn-save-view", "disabled"), Output("btn-save-view", "disabled"),
Output("saved-views-menu", "disabled"), Output("saved-views-menu", "disabled"),
Output("btn-save-view-wrapper", "title"),
Output("saved-views-menu-wrapper", "title"),
Input("tableau_url", "pathname"), Input("tableau_url", "pathname"),
) )
def toggle_saved_views_controls(_pathname): def toggle_saved_views_controls(_pathname):
# La barre reste visible pour tous ; « Sauvegarder la vue » et « Mes vues » # La barre reste visible pour tous ; « Sauvegarder la vue » et « Mes vues »
# sont grisés et désactivés pour les non-abonnés (le gating serveur de # sont grisés et désactivés pour les non-abonnés (le gating serveur de
# save_view reste en place via prepare_view_to_save). # save_view reste en place via prepare_view_to_save). L'infobulle est
# portée par les <span> englobants, cf. layout.
disabled = saved_views_ui.controls_disabled(current_user_has_subscription()) disabled = saved_views_ui.controls_disabled(current_user_has_subscription())
return disabled, disabled tooltip = "Fonctionnalité accessible en vous abonnant" if disabled else ""
return disabled, disabled, tooltip, tooltip
def resolve_vue_from_url(search: str) -> dict | None: def resolve_vue_from_url(search: str) -> dict | None: