diff --git a/src/pages/home.py b/src/pages/home.py index 780bfad..971fff3 100644 --- a/src/pages/home.py +++ b/src/pages/home.py @@ -34,13 +34,6 @@ lf = booleans_to_strings(lf) # Remplacer les valeurs manquantes par des chaînes vides lf = lf.fill_null("") - -# Ajout des liens vers l'annuaire -lf = add_annuaire_link(lf) - -# Ajout des liens open data -lf = add_resource_link(lf) - schema = lf.collect_schema() @@ -57,17 +50,6 @@ datatable = html.Div( page_action="custom", filter_action="custom", filter_options={"case": "insensitive", "placeholder_text": "Filtrer..."}, - columns=[ - { - "name": i, - "id": i, - "presentation": "markdown", - "type": "text", - "format": {"nully": "N/A"}, - "hideable": True, - } - for i in lf.collect_schema().names() - ], sort_action="custom", sort_mode="multi", sort_by=[], @@ -158,6 +140,7 @@ layout = [ @callback( Output("table", "data"), + Output("table", "columns"), Output("table", "data_timestamp"), Output("nb_rows", "children"), Output("btn-download-data", "disabled"), @@ -229,6 +212,26 @@ def update_table(page_current, page_size, filter_query, sort_by, data_timestamp) start_row = page_current * page_size # end_row = (page_current + 1) * page_size dff = dff.slice(start_row, page_size) + + # Ajout des liens vers l'annuaire des entreprises + dff = add_annuaire_link(dff) + + # Ajout des liens vers les fichiers Open Data + dff = add_resource_link(dff) + + # Liste finale de colonnes + columns = [ + { + "name": column, + "id": column, + "presentation": "markdown", + "type": "text", + "format": {"nully": "N/A"}, + "hideable": True, + } + for column in dff.columns + ] + dicts = dff.to_dicts() if height > 65000: @@ -242,6 +245,7 @@ def update_table(page_current, page_size, filter_query, sort_by, data_timestamp) return ( dicts, + columns, data_timestamp + 1, nb_rows, download_disabled, @@ -259,14 +263,6 @@ def update_table(page_current, page_size, filter_query, sort_by, data_timestamp) def download_data(n_clicks, hidden_columns: list = None): df_to_download = df_filtered.clone() - print(df_to_download.columns) - - # Rétablissement des colonnes source et sourceOpenData (voir add_resource_link) - df_to_download = df_to_download.with_columns( - pl.col("source").str.extract(r'href="(.*?)"').alias("sourceFile"), - pl.col("source").str.extract(r'">(.*?)<').alias("sourceDataset"), - ) - # Les colonnes masquées sont supprimées if hidden_columns: df_to_download = df_to_download.drop(hidden_columns) diff --git a/src/utils.py b/src/utils.py index 9900ee9..a7ef63c 100644 --- a/src/utils.py +++ b/src/utils.py @@ -42,18 +42,18 @@ def split_filter_part(filter_part): return [None] * 3 -def add_resource_link(lff: pl.LazyFrame) -> pl.LazyFrame: - lff = lff.with_columns( +def add_resource_link(dff: pl.DataFrame) -> pl.DataFrame: + dff = dff.with_columns( ( '' + pl.col("sourceDataset") + "" ).alias("source") ) - lff = lff.drop(["sourceFile", "sourceDataset"]) - return lff + dff = dff.drop(["sourceFile", "sourceDataset"]) + return dff -def add_annuaire_link(lff: pl.LazyFrame): - lff = lff.with_columns( +def add_annuaire_link(dff: pl.DataFrame): + dff = dff.with_columns( pl.when(pl.col("titulaire_typeIdentifiant") == "SIRET") .then( '" ).alias("acheteur_id") ) - return lff + return dff def booleans_to_strings(lff: pl.LazyFrame) -> pl.LazyFrame: