Tooltips abonnement sur Sauvegarder vue et Mes vues
This commit is contained in:
+24
-7
@@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user