Réparation des callbacks, mode d'emploi #58
This commit is contained in:
+16
-9
@@ -40,6 +40,7 @@ datatable = html.Div(
|
|||||||
filter_action="custom",
|
filter_action="custom",
|
||||||
sort_action="custom",
|
sort_action="custom",
|
||||||
hidden_columns=get_default_hidden_columns(None),
|
hidden_columns=get_default_hidden_columns(None),
|
||||||
|
columns=[{"id": col, "name": col} for col in df.columns],
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -49,10 +50,11 @@ layout = [
|
|||||||
html.Details(
|
html.Details(
|
||||||
children=[
|
children=[
|
||||||
html.Summary(
|
html.Summary(
|
||||||
html.H3("Mode d'emploi", style={"text-decoration": "underline"}),
|
html.H3("Mode d'emploi", style={"textDecoration": "underline"}),
|
||||||
),
|
),
|
||||||
dcc.Markdown(
|
dcc.Markdown(
|
||||||
"""
|
dangerously_allow_html=True,
|
||||||
|
children="""
|
||||||
##### Définition des colonnes
|
##### Définition des colonnes
|
||||||
|
|
||||||
Pour voir la définition d'une colonne, passez votre souris sur son en-tête.
|
Pour voir la définition d'une colonne, passez votre souris sur son en-tête.
|
||||||
@@ -62,10 +64,10 @@ layout = [
|
|||||||
Vous pouvez appliquer un filtre pour chaque colonne en entrant du texte sous le nom de la colonne, puis en tapant sur `Entrée`.
|
Vous pouvez appliquer un filtre pour chaque colonne en entrant du texte sous le nom de la colonne, puis en tapant sur `Entrée`.
|
||||||
|
|
||||||
- Champs textuels : la recherche est insensible à la casse (majuscules/minuscules) et retourne les valeurs qui contiennent
|
- Champs textuels : la recherche est insensible à la casse (majuscules/minuscules) et retourne les valeurs qui contiennent
|
||||||
le texte recherché. Exemple : `rennes` retourne "RENNES METROPOLE".
|
le texte recherché. Exemple : `rennes` retourne "RENNES METROPOLE". Lorsque vous ouvrez une URL de vue, le format équivalent `icontains rennes` est utilisé.
|
||||||
- Champs numériques : vous pouvez soit taper un nombre pour trouver les valeurs égales, soit le précéder de **>** ou **<** pour filtrer les valeurs supérieures ou inférieures. Exemple pour les offres reçues : `> 4` retourne les marchés ayant reçu plus de 4 offres.
|
- Champs numériques : vous pouvez soit taper un nombre pour trouver les valeurs égales, soit le précéder de **>** ou **<** pour filtrer les valeurs supérieures ou inférieures. Exemple pour les offres reçues : `> 4` retourne les marchés ayant reçu plus de 4 offres.
|
||||||
- Champs date : vous pouvez également utiliser **>** ou **<**. Exemples : `< 2024-01-31` pour "avant le 31 janvier 2024",
|
- Champs date : vous pouvez également utiliser **>** ou **<**. Exemples : `< 2024-01-31` pour "avant le 31 janvier 2024",
|
||||||
`2024` pour "en 2024", `> 2022` pour "à partir de 2022"
|
`2024` pour "en 2024", `> 2022` pour "à partir de 2022". Lorsque vous ouvrez une URL de vue, le format équivalent `i<` ou `i>` est utilisé.
|
||||||
|
|
||||||
Vous pouvez filtrer plusieurs colonnes à la fois. Vos filtres sont remis à zéro quand vous rafraîchissez la page.
|
Vous pouvez filtrer plusieurs colonnes à la fois. Vos filtres sont remis à zéro quand vous rafraîchissez la page.
|
||||||
|
|
||||||
@@ -73,6 +75,10 @@ layout = [
|
|||||||
|
|
||||||
Pour trier une colonne, utilisez les flèches grises à côté des noms de colonnes. Chaque clic change le tri dans cet ordre : tri ascendant, tri descendant, pas de tri.
|
Pour trier une colonne, utilisez les flèches grises à côté des noms de colonnes. Chaque clic change le tri dans cet ordre : tri ascendant, tri descendant, pas de tri.
|
||||||
|
|
||||||
|
##### Partager une vue
|
||||||
|
|
||||||
|
Une vue est un ensemble de filtres, de tris et de choix de colonnes que vous avez appliqué. Vous pouvez copier une adresse Web qui reproduit la vue courante à l'identique en cliquant sur l'icône <img src="/assets/copy.svg" alt="drawing" width="20"/>. En la collant dans la barre d'adresse d'un navigateur, vous ouvrez la vue Tableau avec les mêmes paramètres.
|
||||||
|
|
||||||
##### Télécharger le résultat
|
##### Télécharger le résultat
|
||||||
|
|
||||||
Vous pouvez télécharger le résultat de vos filtres et tris, pour les colonnes affichées, en cliquant sur **Télécharger au format Excel**.
|
Vous pouvez télécharger le résultat de vos filtres et tris, pour les colonnes affichées, en cliquant sur **Télécharger au format Excel**.
|
||||||
@@ -82,7 +88,7 @@ layout = [
|
|||||||
Les liens dans les colonnes Identifiant unique, Acheteur et Titulaire vous permettent de consulter une vue qui leur est dédiée
|
Les liens dans les colonnes Identifiant unique, Acheteur et Titulaire vous permettent de consulter une vue qui leur est dédiée
|
||||||
(informations, marchés attribués/remportés, etc.)
|
(informations, marchés attribués/remportés, etc.)
|
||||||
|
|
||||||
"""
|
""",
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
id="instructions",
|
id="instructions",
|
||||||
@@ -142,7 +148,6 @@ def update_table(page_current, page_size, filter_query, sort_by, data_timestamp)
|
|||||||
# search_params = None
|
# search_params = None
|
||||||
# else:
|
# else:
|
||||||
# search_params = urllib.parse.parse_qs(search_params.lstrip("?"))
|
# search_params = urllib.parse.parse_qs(search_params.lstrip("?"))
|
||||||
|
|
||||||
return prepare_table_data(
|
return prepare_table_data(
|
||||||
None, data_timestamp, filter_query, page_current, page_size, sort_by
|
None, data_timestamp, filter_query, page_current, page_size, sort_by
|
||||||
)
|
)
|
||||||
@@ -180,11 +185,13 @@ def download_data(n_clicks, filter_query, sort_by, hidden_columns: list = None):
|
|||||||
Output("table", "filter_query"),
|
Output("table", "filter_query"),
|
||||||
Output("table", "sort_by"),
|
Output("table", "sort_by"),
|
||||||
Output("table", "hidden_columns"),
|
Output("table", "hidden_columns"),
|
||||||
|
Output("url", "search", allow_duplicate=True),
|
||||||
Input("url", "search"),
|
Input("url", "search"),
|
||||||
|
prevent_initial_call=True,
|
||||||
)
|
)
|
||||||
def restore_view_from_url(search):
|
def restore_view_from_url(search):
|
||||||
if not search:
|
if not search:
|
||||||
return no_update, no_update, no_update
|
return no_update, no_update, no_update, no_update
|
||||||
|
|
||||||
params = urllib.parse.parse_qs(search.lstrip("?"))
|
params = urllib.parse.parse_qs(search.lstrip("?"))
|
||||||
print("params", params)
|
print("params", params)
|
||||||
@@ -208,7 +215,7 @@ def restore_view_from_url(search):
|
|||||||
except json.JSONDecodeError:
|
except json.JSONDecodeError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
return filter_query, sort_by, hidden_columns
|
return filter_query, sort_by, hidden_columns, ""
|
||||||
|
|
||||||
|
|
||||||
@callback(
|
@callback(
|
||||||
@@ -263,7 +270,7 @@ def sync_url_and_reset_button(filter_query, sort_by, hidden_columns, href):
|
|||||||
def show_confirmation(n_clicks):
|
def show_confirmation(n_clicks):
|
||||||
if n_clicks:
|
if n_clicks:
|
||||||
return html.Span(
|
return html.Span(
|
||||||
"URL copiée",
|
"Adresse de la vue copiée",
|
||||||
style={"color": "green", "fontWeight": "bold", "marginLeft": "10px"},
|
style={"color": "green", "fontWeight": "bold", "marginLeft": "10px"},
|
||||||
)
|
)
|
||||||
return no_update
|
return no_update
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ def split_filter_part(filter_part):
|
|||||||
["i<", "<"],
|
["i<", "<"],
|
||||||
["i>", ">"],
|
["i>", ">"],
|
||||||
["icontains", "contains"],
|
["icontains", "contains"],
|
||||||
|
# [" ", "contains"]
|
||||||
]
|
]
|
||||||
print("filter part", filter_part)
|
print("filter part", filter_part)
|
||||||
for operator_group in operators:
|
for operator_group in operators:
|
||||||
|
|||||||
Reference in New Issue
Block a user