Améliorations sur le style de l'ag grid, ajout nb marchés uniques #47
This commit is contained in:
@@ -1090,6 +1090,8 @@ AG_GRID_LOCALE_FR = {
|
|||||||
"inRange": "Entre",
|
"inRange": "Entre",
|
||||||
"inRangeStart": "de",
|
"inRangeStart": "de",
|
||||||
"inRangeEnd": "à",
|
"inRangeEnd": "à",
|
||||||
|
"before": "Avant",
|
||||||
|
"after": "Après",
|
||||||
# Chrome du menu de filtre
|
# Chrome du menu de filtre
|
||||||
"filterOoo": "Filtrer...",
|
"filterOoo": "Filtrer...",
|
||||||
"applyFilter": "Appliquer",
|
"applyFilter": "Appliquer",
|
||||||
@@ -1149,6 +1151,11 @@ def ag_grid(grid_id: str, column_defs: list[dict]) -> "dag.AgGrid":
|
|||||||
"})"
|
"})"
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
|
# Réserve l'espace de la barre de défilement horizontale en permanence
|
||||||
|
# (comportement natif de Chrome). Sans effet sur Firefox : le curseur
|
||||||
|
# de la barre y reste en overlay au survol, géré par l'OS/le navigateur
|
||||||
|
# (ex. réglage GTK overlay-scrollbars), non contrôlable par l'appli.
|
||||||
|
"alwaysShowHorizontalScroll": True,
|
||||||
},
|
},
|
||||||
# Pas de columnSize="responsiveSizeToFit" : les colonnes gardent leur
|
# Pas de columnSize="responsiveSizeToFit" : les colonnes gardent leur
|
||||||
# largeur définie dans columnDefs (cf. _column_width dans
|
# largeur définie dans columnDefs (cf. _column_width dans
|
||||||
|
|||||||
+6
-8
@@ -113,7 +113,7 @@ _SHORT_CODE_COLUMNS = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Colonnes "nom" qui ne suivent pas le suffixe `_nom` (ex. sourceDataset).
|
# Colonnes "nom" qui ne suivent pas le suffixe `_nom` (ex. sourceDataset).
|
||||||
_WIDE_LABEL_COLUMNS = {"sourceDataset"}
|
_WIDE_LABEL_COLUMNS = {"objet"}
|
||||||
|
|
||||||
# Colonnes avec infobulle systématique sur les cellules (valeur complète au
|
# Colonnes avec infobulle systématique sur les cellules (valeur complète au
|
||||||
# survol, pas seulement quand le texte est tronqué).
|
# survol, pas seulement quand le texte est tronqué).
|
||||||
@@ -158,7 +158,7 @@ def _column_width(col: str, col_type) -> dict:
|
|||||||
if col in _SHORT_CODE_COLUMNS or col.endswith(("_code")):
|
if col in _SHORT_CODE_COLUMNS or col.endswith(("_code")):
|
||||||
return {"width": 180}
|
return {"width": 180}
|
||||||
if col in _WIDE_LABEL_COLUMNS or col.endswith("_nom"):
|
if col in _WIDE_LABEL_COLUMNS or col.endswith("_nom"):
|
||||||
return {"width": 300}
|
return {"width": 350}
|
||||||
return {"width": 190}
|
return {"width": 190}
|
||||||
|
|
||||||
|
|
||||||
@@ -196,9 +196,9 @@ def grid_column_defs(hidden_columns=None):
|
|||||||
# comme tooltipComponent — posé sur un en-tête, il retombe sur
|
# comme tooltipComponent — posé sur un en-tête, il retombe sur
|
||||||
# le rendu natif d'AG Grid, qui affiche la chaîne telle quelle
|
# le rendu natif d'AG Grid, qui affiche la chaîne telle quelle
|
||||||
# (donc "**gras**" apparaissait littéralement avec les astérisques).
|
# (donc "**gras**" apparaissait littéralement avec les astérisques).
|
||||||
col_def["headerTooltip"] = (
|
col_def["headerTooltip"] = f"""{meta.get("title", col)} ({col})
|
||||||
f"{meta.get('title', col)} ({col}) — {meta['description']}"
|
|
||||||
)
|
{meta["description"]}"""
|
||||||
if col in _LINK_COLUMNS:
|
if col in _LINK_COLUMNS:
|
||||||
col_def["cellRenderer"] = "markdown"
|
col_def["cellRenderer"] = "markdown"
|
||||||
if col in _CELL_TOOLTIP_COLUMNS:
|
if col in _CELL_TOOLTIP_COLUMNS:
|
||||||
@@ -207,15 +207,13 @@ def grid_column_defs(hidden_columns=None):
|
|||||||
# on pointe vers la copie texte brut posée par add_links() dans
|
# on pointe vers la copie texte brut posée par add_links() dans
|
||||||
# src.utils.table plutôt que d'afficher ce balisage tel quel.
|
# src.utils.table plutôt que d'afficher ce balisage tel quel.
|
||||||
col_def["tooltipField"] = f"{col}_tooltip" if col in _LINK_COLUMNS else col
|
col_def["tooltipField"] = f"{col}_tooltip" if col in _LINK_COLUMNS else col
|
||||||
if col != "objet":
|
|
||||||
col_def.update(_column_width(col, col_type))
|
|
||||||
if col == "objet":
|
if col == "objet":
|
||||||
# autoHeight n'est pas supporté avec rowModelType="infinite" (la
|
# autoHeight n'est pas supporté avec rowModelType="infinite" (la
|
||||||
# grille doit pouvoir calculer la position des lignes non
|
# grille doit pouvoir calculer la position des lignes non
|
||||||
# chargées, donc une hauteur de ligne fixe) : cf. ag_grid(),
|
# chargées, donc une hauteur de ligne fixe) : cf. ag_grid(),
|
||||||
# rowHeight fixe côté dashGridOptions plutôt qu'autoHeight ici.
|
# rowHeight fixe côté dashGridOptions plutôt qu'autoHeight ici.
|
||||||
col_def["wrapText"] = True
|
col_def["wrapText"] = True
|
||||||
col_def["minWidth"] = 360
|
col_def.update(_column_width(col, col_type))
|
||||||
defs.append(col_def)
|
defs.append(col_def)
|
||||||
return defs
|
return defs
|
||||||
|
|
||||||
|
|||||||
@@ -370,3 +370,14 @@ def test_ag_grid_keeps_base_appearance():
|
|||||||
grid = ag_grid("tableau_grid", [])
|
grid = ag_grid("tableau_grid", [])
|
||||||
|
|
||||||
assert getattr(grid, "className", None) in (None, "")
|
assert getattr(grid, "className", None) in (None, "")
|
||||||
|
|
||||||
|
|
||||||
|
def test_ag_grid_always_shows_horizontal_scroll():
|
||||||
|
"""Réserve l'espace de la barre de défilement horizontale en permanence
|
||||||
|
(comportement natif Chrome). Sans effet sur le curseur en overlay de
|
||||||
|
Firefox, géré par l'OS/le navigateur, non contrôlable par l'appli."""
|
||||||
|
from src.figures import ag_grid
|
||||||
|
|
||||||
|
grid = ag_grid("tableau_grid", [])
|
||||||
|
|
||||||
|
assert grid.dashGridOptions["alwaysShowHorizontalScroll"] is True
|
||||||
|
|||||||
Reference in New Issue
Block a user