diff --git a/src/callbacks.py b/src/callbacks.py index 35534e8..689a4a6 100644 --- a/src/callbacks.py +++ b/src/callbacks.py @@ -1,7 +1,7 @@ import polars as pl from dash import dash_table, html -from utils import add_links_in_dict, format_montant, setup_table_columns +from utils import add_links_in_dict, format_values, setup_table_columns def get_top_org_table(data, org_type: str): @@ -16,7 +16,7 @@ def get_top_org_table(data, org_type: str): dff_nb = dff_nb.sort(by="montant", descending=True) dff_nb = dff_nb.cast(pl.String) dff_nb = dff_nb.fill_null("") - dff_nb = format_montant(dff_nb, column="montant") + dff_nb = format_values(dff_nb) columns, tooltip = setup_table_columns( dff_nb, hideable=False, exclude=[f"{org_type}_id"] ) diff --git a/src/pages/acheteur.py b/src/pages/acheteur.py index cb8d224..2219d40 100644 --- a/src/pages/acheteur.py +++ b/src/pages/acheteur.py @@ -8,8 +8,8 @@ from src.figures import point_on_map from src.utils import ( add_links_in_dict, df, - format_montant, format_number, + format_values, get_annuaire_data, get_departement_region, meta_content, @@ -215,8 +215,7 @@ def get_last_marches_table(data) -> html.Div: return html.Div(html.P("Aucun marché trouvé.")) dff = dff.cast(pl.String) dff = dff.fill_null("") - print("1", dff.columns) - dff = format_montant(dff) + dff = format_values(dff) columns, tooltip = setup_table_columns( dff, hideable=False, diff --git a/src/pages/marche.py b/src/pages/marche.py index bd90a50..807bb7a 100644 --- a/src/pages/marche.py +++ b/src/pages/marche.py @@ -4,7 +4,7 @@ import polars as pl from dash import Input, Output, callback, dcc, html, register_page from polars import selectors as cs -from src.utils import data_schema, df, format_montant, meta_content +from src.utils import data_schema, df, format_values, meta_content register_page( __name__, @@ -75,7 +75,7 @@ def get_marche_data(url) -> tuple[dict, list]: # Données du marché dff_marche = lff.unique("uid").collect(engine="streaming") - dff_marche = format_montant(dff_marche) + dff_marche = format_values(dff_marche) return dff_marche.to_dicts()[0], dff_titulaires.to_dicts() diff --git a/src/pages/tableau.py b/src/pages/tableau.py index a8e31dd..4b3d380 100644 --- a/src/pages/tableau.py +++ b/src/pages/tableau.py @@ -9,8 +9,8 @@ from src.utils import ( add_resource_link, df, filter_table_data, - format_montant, format_number, + format_values, get_default_hidden_columns, meta_content, setup_table_columns, @@ -208,7 +208,7 @@ def update_table(page_current, page_size, filter_query, sort_by, data_timestamp) dff = add_resource_link(dff) # Formatage des montants - dff = format_montant(dff) + dff = format_values(dff) columns, tooltip = setup_table_columns(dff) diff --git a/src/pages/titulaire.py b/src/pages/titulaire.py index 0adeed9..90b2b75 100644 --- a/src/pages/titulaire.py +++ b/src/pages/titulaire.py @@ -8,8 +8,8 @@ from src.figures import point_on_map from src.utils import ( add_links_in_dict, df, - format_montant, format_number, + format_values, get_annuaire_data, get_departement_region, meta_content, @@ -227,7 +227,7 @@ def get_last_marches_table(data) -> html.Div: dff = pl.DataFrame(data) dff = dff.cast(pl.String) dff = dff.fill_null("") - dff = format_montant(dff) + dff = format_values(dff) columns, tooltip = setup_table_columns( dff, hideable=False, exclude=["acheteur_id", "id"] ) diff --git a/src/utils.py b/src/utils.py index 783a236..23ad4fe 100644 --- a/src/utils.py +++ b/src/utils.py @@ -125,8 +125,8 @@ def format_number(number) -> str: return number -def format_montant(dff: pl.DataFrame, column: str = "montant") -> pl.DataFrame: - def format_function(expr, scale=None): +def format_values(dff: pl.DataFrame) -> pl.DataFrame: + def format_montant(expr, scale=None): # https://stackoverflow.com/a/78636786 expr = expr.cast(pl.String) expr = expr.str.splitn(".", 2) @@ -156,8 +156,17 @@ def format_montant(dff: pl.DataFrame, column: str = "montant") -> pl.DataFrame: return montant - print("3", dff.columns) - dff = dff.with_columns(pl.col(column).pipe(format_function).alias(column)) + def format_distance(expr): + expr = expr.cast(pl.String) + return pl.concat_str(expr, pl.lit(" km")) + + if "montant" in dff.columns: + dff = dff.with_columns(pl.col("montant").pipe(format_montant).alias("montant")) + if "distance" in dff.columns: + dff = dff.with_columns( + pl.col("distance").pipe(format_distance).alias("distance") + ) + return dff