Ajout des liens dans le tableau le plus tard possible
This commit is contained in:
+22
-26
@@ -34,13 +34,6 @@ lf = booleans_to_strings(lf)
|
|||||||
# Remplacer les valeurs manquantes par des chaînes vides
|
# Remplacer les valeurs manquantes par des chaînes vides
|
||||||
lf = lf.fill_null("")
|
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()
|
schema = lf.collect_schema()
|
||||||
|
|
||||||
|
|
||||||
@@ -57,17 +50,6 @@ datatable = html.Div(
|
|||||||
page_action="custom",
|
page_action="custom",
|
||||||
filter_action="custom",
|
filter_action="custom",
|
||||||
filter_options={"case": "insensitive", "placeholder_text": "Filtrer..."},
|
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_action="custom",
|
||||||
sort_mode="multi",
|
sort_mode="multi",
|
||||||
sort_by=[],
|
sort_by=[],
|
||||||
@@ -158,6 +140,7 @@ layout = [
|
|||||||
|
|
||||||
@callback(
|
@callback(
|
||||||
Output("table", "data"),
|
Output("table", "data"),
|
||||||
|
Output("table", "columns"),
|
||||||
Output("table", "data_timestamp"),
|
Output("table", "data_timestamp"),
|
||||||
Output("nb_rows", "children"),
|
Output("nb_rows", "children"),
|
||||||
Output("btn-download-data", "disabled"),
|
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
|
start_row = page_current * page_size
|
||||||
# end_row = (page_current + 1) * page_size
|
# end_row = (page_current + 1) * page_size
|
||||||
dff = dff.slice(start_row, 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()
|
dicts = dff.to_dicts()
|
||||||
|
|
||||||
if height > 65000:
|
if height > 65000:
|
||||||
@@ -242,6 +245,7 @@ def update_table(page_current, page_size, filter_query, sort_by, data_timestamp)
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
dicts,
|
dicts,
|
||||||
|
columns,
|
||||||
data_timestamp + 1,
|
data_timestamp + 1,
|
||||||
nb_rows,
|
nb_rows,
|
||||||
download_disabled,
|
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):
|
def download_data(n_clicks, hidden_columns: list = None):
|
||||||
df_to_download = df_filtered.clone()
|
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
|
# Les colonnes masquées sont supprimées
|
||||||
if hidden_columns:
|
if hidden_columns:
|
||||||
df_to_download = df_to_download.drop(hidden_columns)
|
df_to_download = df_to_download.drop(hidden_columns)
|
||||||
|
|||||||
+8
-8
@@ -42,18 +42,18 @@ def split_filter_part(filter_part):
|
|||||||
return [None] * 3
|
return [None] * 3
|
||||||
|
|
||||||
|
|
||||||
def add_resource_link(lff: pl.LazyFrame) -> pl.LazyFrame:
|
def add_resource_link(dff: pl.DataFrame) -> pl.DataFrame:
|
||||||
lff = lff.with_columns(
|
dff = dff.with_columns(
|
||||||
(
|
(
|
||||||
'<a href="' + pl.col("sourceFile") + '">' + pl.col("sourceDataset") + "</a>"
|
'<a href="' + pl.col("sourceFile") + '">' + pl.col("sourceDataset") + "</a>"
|
||||||
).alias("source")
|
).alias("source")
|
||||||
)
|
)
|
||||||
lff = lff.drop(["sourceFile", "sourceDataset"])
|
dff = dff.drop(["sourceFile", "sourceDataset"])
|
||||||
return lff
|
return dff
|
||||||
|
|
||||||
|
|
||||||
def add_annuaire_link(lff: pl.LazyFrame):
|
def add_annuaire_link(dff: pl.DataFrame):
|
||||||
lff = lff.with_columns(
|
dff = dff.with_columns(
|
||||||
pl.when(pl.col("titulaire_typeIdentifiant") == "SIRET")
|
pl.when(pl.col("titulaire_typeIdentifiant") == "SIRET")
|
||||||
.then(
|
.then(
|
||||||
'<a href = "https://annuaire-entreprises.data.gouv.fr/etablissement/'
|
'<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"))
|
.otherwise(pl.col("titulaire_id"))
|
||||||
.alias("titulaire_id")
|
.alias("titulaire_id")
|
||||||
)
|
)
|
||||||
lff = lff.with_columns(
|
dff = dff.with_columns(
|
||||||
(
|
(
|
||||||
'<a href = "https://annuaire-entreprises.data.gouv.fr/etablissement/'
|
'<a href = "https://annuaire-entreprises.data.gouv.fr/etablissement/'
|
||||||
+ pl.col("acheteur_id")
|
+ pl.col("acheteur_id")
|
||||||
@@ -74,7 +74,7 @@ def add_annuaire_link(lff: pl.LazyFrame):
|
|||||||
+ "</a>"
|
+ "</a>"
|
||||||
).alias("acheteur_id")
|
).alias("acheteur_id")
|
||||||
)
|
)
|
||||||
return lff
|
return dff
|
||||||
|
|
||||||
|
|
||||||
def booleans_to_strings(lff: pl.LazyFrame) -> pl.LazyFrame:
|
def booleans_to_strings(lff: pl.LazyFrame) -> pl.LazyFrame:
|
||||||
|
|||||||
Reference in New Issue
Block a user