Ajout des liens dans le tableau le plus tard possible

This commit is contained in:
Colin Maudry
2025-09-27 21:14:11 +02:00
parent 2fe92d8a14
commit 9e5673c28f
2 changed files with 30 additions and 34 deletions
+22 -26
View File
@@ -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)
+8 -8
View File
@@ -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(
(
'<a href="' + pl.col("sourceFile") + '">' + pl.col("sourceDataset") + "</a>"
).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(
'<a href = "https://annuaire-entreprises.data.gouv.fr/etablissement/'
@@ -65,7 +65,7 @@ def add_annuaire_link(lff: pl.LazyFrame):
.otherwise(pl.col("titulaire_id"))
.alias("titulaire_id")
)
lff = lff.with_columns(
dff = dff.with_columns(
(
'<a href = "https://annuaire-entreprises.data.gouv.fr/etablissement/'
+ pl.col("acheteur_id")
@@ -74,7 +74,7 @@ def add_annuaire_link(lff: pl.LazyFrame):
+ "</a>"
).alias("acheteur_id")
)
return lff
return dff
def booleans_to_strings(lff: pl.LazyFrame) -> pl.LazyFrame: