Début de configuration de colonnes partagée
This commit is contained in:
@@ -40,6 +40,7 @@ td[data-dash-column="objet"] {
|
||||
background-color: #b33821;
|
||||
color: white;
|
||||
font-family: sans-serif;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.dash-table-container
|
||||
|
||||
+10
-15
@@ -12,6 +12,7 @@ from src.utils import (
|
||||
get_departement_region,
|
||||
lf,
|
||||
meta_content,
|
||||
setup_table_columns,
|
||||
)
|
||||
|
||||
register_page(
|
||||
@@ -24,8 +25,6 @@ register_page(
|
||||
order=5,
|
||||
)
|
||||
|
||||
# 21690123100011
|
||||
|
||||
layout = [
|
||||
dcc.Store(id="acheteur_data", storage_type="memory"),
|
||||
dcc.Location(id="url", refresh="callback-nav"),
|
||||
@@ -214,30 +213,26 @@ def get_last_marches_table(data) -> html.Div:
|
||||
|
||||
dff = pl.DataFrame(data)
|
||||
dff = format_montant(dff)
|
||||
columns, tooltip = setup_table_columns(
|
||||
dff, hideable=False, exclude=["titulaire_id", "titulaire_typeIdentifiant"]
|
||||
)
|
||||
data = dff.to_dicts()
|
||||
data = add_org_links_in_dict(data, "titulaire")
|
||||
|
||||
table = html.Div(
|
||||
className="marches_table",
|
||||
id="marches_datatable",
|
||||
id="acheteur_datatable",
|
||||
children=dash_table.DataTable(
|
||||
data=data,
|
||||
markdown_options={"html": True},
|
||||
page_action="native",
|
||||
filter_action="native",
|
||||
filter_options={"case": "insensitive", "placeholder_text": "Filtrer..."},
|
||||
columns=[
|
||||
{
|
||||
"name": i,
|
||||
"id": i,
|
||||
"presentation": "markdown",
|
||||
"type": "text",
|
||||
"format": {"nully": "N/A"},
|
||||
"hideable": False,
|
||||
}
|
||||
for i in columns
|
||||
if i not in ["titulaire_id", "titulaire_typeIdentifiant"]
|
||||
],
|
||||
columns=columns,
|
||||
tooltip_header=tooltip,
|
||||
tooltip_duration=8000,
|
||||
tooltip_delay=350,
|
||||
cell_selectable=False,
|
||||
page_size=10,
|
||||
style_cell_conditional=[
|
||||
{
|
||||
|
||||
+2
-29
@@ -7,12 +7,12 @@ from dash import Input, Output, State, callback, dash_table, dcc, html, register
|
||||
from src.utils import (
|
||||
add_org_links,
|
||||
add_resource_link,
|
||||
data_schema,
|
||||
filter_table_data,
|
||||
format_montant,
|
||||
format_number,
|
||||
lf,
|
||||
meta_content,
|
||||
setup_table_columns,
|
||||
sort_table_data,
|
||||
)
|
||||
|
||||
@@ -205,34 +205,7 @@ def update_table(page_current, page_size, filter_query, sort_by, data_timestamp)
|
||||
# Formatage des montants
|
||||
dff = format_montant(dff)
|
||||
|
||||
# Liste finale de colonnes
|
||||
columns = []
|
||||
tooltip = {}
|
||||
for column_id in dff.columns:
|
||||
column_object = data_schema.get(column_id)
|
||||
if column_object:
|
||||
column_name = column_object.get("friendly_name", column_id)
|
||||
else:
|
||||
column_name = column_id
|
||||
|
||||
column = {
|
||||
"name": column_name,
|
||||
"id": column_id,
|
||||
"presentation": "markdown",
|
||||
"type": "text",
|
||||
"format": {"nully": "N/A"},
|
||||
"hideable": True,
|
||||
}
|
||||
columns.append(column)
|
||||
|
||||
if column_object:
|
||||
tooltip[column_id] = {
|
||||
"value": f"""**{column_object.get("friendly_name", column_id)}**
|
||||
|
||||
"""
|
||||
+ column_object["description"],
|
||||
"type": "markdown",
|
||||
}
|
||||
columns, tooltip = setup_table_columns(dff)
|
||||
|
||||
dicts = dff.to_dicts()
|
||||
|
||||
|
||||
+8
-13
@@ -12,6 +12,7 @@ from src.utils import (
|
||||
get_departement_region,
|
||||
lf,
|
||||
meta_content,
|
||||
setup_table_columns,
|
||||
)
|
||||
|
||||
register_page(
|
||||
@@ -216,6 +217,7 @@ def get_last_marches_table(data) -> html.Div:
|
||||
|
||||
dff = pl.DataFrame(data)
|
||||
dff = format_montant(dff)
|
||||
columns, tooltip = setup_table_columns(dff, hideable=False, exclude=["acheteur_id"])
|
||||
data = dff.to_dicts()
|
||||
# Idéalement on utiliserait add_org_links(), mais le résultat attendu
|
||||
# est différent de home.py (Tableau)
|
||||
@@ -223,25 +225,18 @@ def get_last_marches_table(data) -> html.Div:
|
||||
|
||||
table = html.Div(
|
||||
className="marches_table",
|
||||
id="marches_datatable",
|
||||
id="titulaire_datatable",
|
||||
children=dash_table.DataTable(
|
||||
data=data,
|
||||
markdown_options={"html": True},
|
||||
page_action="native",
|
||||
filter_action="native",
|
||||
filter_options={"case": "insensitive", "placeholder_text": "Filtrer..."},
|
||||
columns=[
|
||||
{
|
||||
"name": i,
|
||||
"id": i,
|
||||
"presentation": "markdown",
|
||||
"type": "text",
|
||||
"format": {"nully": "N/A"},
|
||||
"hideable": False,
|
||||
}
|
||||
for i in columns
|
||||
if i not in ["titulaire_id"]
|
||||
],
|
||||
columns=columns,
|
||||
tooltip_header=tooltip,
|
||||
tooltip_duration=8000,
|
||||
tooltip_delay=350,
|
||||
cell_selectable=False,
|
||||
page_size=10,
|
||||
style_cell_conditional=[
|
||||
{
|
||||
|
||||
@@ -255,6 +255,40 @@ def sort_table_data(lff: pl.LazyFrame, sort_by: list) -> pl.LazyFrame:
|
||||
return lff
|
||||
|
||||
|
||||
def setup_table_columns(dff, hideable: bool = True, exclude: list = None) -> tuple:
|
||||
# Liste finale de colonnes
|
||||
columns = []
|
||||
tooltip = {}
|
||||
for column_id in dff.columns:
|
||||
if exclude and column_id in exclude:
|
||||
continue
|
||||
column_object = data_schema.get(column_id)
|
||||
if column_object:
|
||||
column_name = column_object.get("friendly_name", column_id)
|
||||
else:
|
||||
column_name = column_id
|
||||
|
||||
column = {
|
||||
"name": column_name,
|
||||
"id": column_id,
|
||||
"presentation": "markdown",
|
||||
"type": "text",
|
||||
"format": {"nully": "N/A"},
|
||||
"hideable": hideable,
|
||||
}
|
||||
columns.append(column)
|
||||
|
||||
if column_object:
|
||||
tooltip[column_id] = {
|
||||
"value": f"""**{column_object.get("friendly_name", column_id)}**
|
||||
|
||||
"""
|
||||
+ column_object["description"],
|
||||
"type": "markdown",
|
||||
}
|
||||
return columns, tooltip
|
||||
|
||||
|
||||
lf = get_decp_data()
|
||||
departements = get_departements()
|
||||
domain_name = (
|
||||
|
||||
Reference in New Issue
Block a user