Merge branch 'main' into dev
This commit is contained in:
+2
-1
@@ -1,7 +1,8 @@
|
|||||||
#### 2.3.0 (24 décembre 2025)
|
#### 2.3.0 (24 décembre 2025)
|
||||||
|
|
||||||
- Possibilité de filtrer, trier etc. dans les vues acheteur et titulaire
|
- Possibilité de filtrer, trier etc. dans les vues acheteur et titulaire
|
||||||
- Possibilité de partager les filtres, tris et choix de colonnes via une adresse Web
|
- Possibilité de partager les filtres, tris et choix de colonnes via une adresse Web ([exemple](https://decp.info/tableau?filtres=%7Bobjet%7D+icontains+%22d%C3%A9corations+de+no%C3%ABl%22+%26%26+%7BdateNotification%7D+icontains+2025+%26%26+%7Bmontant%7D+i%3C+1000000&colonnes=%5B%22uid%22%2C+%22acheteur_id%22%2C+%22acheteur_nom%22%2C+%22titulaire_id%22%2C+%22titulaire_nom%22%2C+%22objet%22%2C+%22montant%22%2C+%22dureeMois%22%2C+%22dateNotification%22%2C+%22acheteur_departement_code%22%2C+%22sourceDataset%22%5D))
|
||||||
|
- Possibilité de filtrer une colonne avec plusieurs mots
|
||||||
|
|
||||||
##### 2.2.3 (4 décembre 2025)
|
##### 2.2.3 (4 décembre 2025)
|
||||||
|
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ from src.utils import (
|
|||||||
df,
|
df,
|
||||||
filter_table_data,
|
filter_table_data,
|
||||||
get_default_hidden_columns,
|
get_default_hidden_columns,
|
||||||
|
invert_columns,
|
||||||
meta_content,
|
meta_content,
|
||||||
sort_table_data,
|
sort_table_data,
|
||||||
)
|
)
|
||||||
@@ -213,7 +214,8 @@ def restore_view_from_url(search):
|
|||||||
|
|
||||||
if "colonnes" in params:
|
if "colonnes" in params:
|
||||||
try:
|
try:
|
||||||
hidden_columns = json.loads(params["colonnes"][0])
|
columns = json.loads(params["colonnes"][0])
|
||||||
|
hidden_columns = invert_columns(columns)
|
||||||
except json.JSONDecodeError:
|
except json.JSONDecodeError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@@ -243,7 +245,8 @@ def sync_url_and_reset_button(filter_query, sort_by, hidden_columns, href):
|
|||||||
params["tris"] = json.dumps(sort_by)
|
params["tris"] = json.dumps(sort_by)
|
||||||
|
|
||||||
if hidden_columns:
|
if hidden_columns:
|
||||||
params["colonnes"] = json.dumps(hidden_columns)
|
columns = invert_columns(hidden_columns)
|
||||||
|
params["colonnes"] = json.dumps(columns)
|
||||||
|
|
||||||
query_string = urllib.parse.urlencode(params)
|
query_string = urllib.parse.urlencode(params)
|
||||||
full_url = f"{base_url}?{query_string}" if query_string else base_url
|
full_url = f"{base_url}?{query_string}" if query_string else base_url
|
||||||
|
|||||||
@@ -296,6 +296,7 @@ def filter_table_data(lff: pl.LazyFrame, filter_query: str) -> pl.LazyFrame:
|
|||||||
lff = lff.filter(pl.col(col_name) <= filter_value)
|
lff = lff.filter(pl.col(col_name) <= filter_value)
|
||||||
elif operator == "contains":
|
elif operator == "contains":
|
||||||
if col_type in ["String", "Date"]:
|
if col_type in ["String", "Date"]:
|
||||||
|
filter_value = filter_value.strip('"')
|
||||||
lff = lff.filter(
|
lff = lff.filter(
|
||||||
pl.col(col_name).str.contains("(?i)" + filter_value)
|
pl.col(col_name).str.contains("(?i)" + filter_value)
|
||||||
)
|
)
|
||||||
@@ -650,6 +651,20 @@ def get_button_properties(height):
|
|||||||
return download_disabled, download_text, download_title
|
return download_disabled, download_text, download_title
|
||||||
|
|
||||||
|
|
||||||
|
def invert_columns(columns):
|
||||||
|
"""
|
||||||
|
Renvoie les colonnes du schéma non spécifiées en paramètre. Utile pour passer d'une colonnes masquées à une liste de colonnes affichées, et vice versa.
|
||||||
|
|
||||||
|
:param columns:
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
inverted_columns = []
|
||||||
|
for column in schema.names():
|
||||||
|
if column not in columns:
|
||||||
|
inverted_columns.append(column)
|
||||||
|
return inverted_columns
|
||||||
|
|
||||||
|
|
||||||
df: pl.DataFrame = get_decp_data()
|
df: pl.DataFrame = get_decp_data()
|
||||||
schema = df.collect_schema()
|
schema = df.collect_schema()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user