Champ de recherche, récup de données dédiée #58

This commit is contained in:
Colin Maudry
2025-11-11 07:47:00 +01:00
parent 6835f328b6
commit 1e85dbe562
4 changed files with 74 additions and 1 deletions
+19
View File
@@ -143,6 +143,25 @@ td[data-dash-column="objet"],td[data-dash-column="titulaire_nom"],td[data-dash-c
margin: 0 0 20px 20px; margin: 0 0 20px 20px;
} }
/* Page de recherche */
#search {
margin: auto;
width: 450px;
font-size: 18px;
height: 30px;
display: block;
}
.search_options {
margin: 16px auto;
width: 450px;
}
.search_options input {
margin-right: 12px;
}
/* Menu de navigation */ /* Menu de navigation */
.navbar { .navbar {
+41
View File
@@ -0,0 +1,41 @@
from dash import Input, Output, callback, dcc, html, register_page
from src.utils import meta_content
name = "Recherche"
register_page(
__name__,
path="/",
title=meta_content["title"],
name=name,
description=meta_content["description"],
image_url=meta_content["image_url"],
order=0,
)
layout = html.Div(
className="container",
children=[
dcc.Input(
id="search",
type="text",
placeholder="Nom d'acheteur, d'entreprise, mot de clé de marché...",
),
html.Div(
className="search_options",
children=[dcc.RadioItems(options=["Acheteur(s)"])],
),
html.Div(id="search_results"),
],
)
@callback(Output("search_results", "children"), Input("search", "value"))
def search_results(query):
if len(query) >= 3:
# results = []
# dff = dff.select("acheteur_id", "acheteur_nom")
return html.Div([])
else:
return html.P("Tapez au moins 3 caractères")
+1 -1
View File
@@ -25,7 +25,7 @@ schema = df.collect_schema()
name = "Tableau" name = "Tableau"
register_page( register_page(
__name__, __name__,
path="/", path="/tableau",
title=meta_content["title"], title=meta_content["title"],
name=name, name=name,
description=meta_content["description"], description=meta_content["description"],
+13
View File
@@ -208,6 +208,17 @@ def get_decp_data() -> pl.DataFrame:
return lff.collect() return lff.collect()
def get_org_data(dff: pl.DataFrame, org_type: str) -> pl.DataFrame:
lff = dff.lazy()
lff = lff.select(
cs.starts_with(org_type).exclude(
f"{org_type}_latitude", f"{org_type}_longitude"
)
)
lff = lff.unique(f"{org_type}_id")
return lff.collect()
def get_departements() -> dict: def get_departements() -> dict:
with open("data/departements.json", "rb") as f: with open("data/departements.json", "rb") as f:
data = json.load(f) data = json.load(f)
@@ -365,6 +376,8 @@ def get_data_schema() -> dict:
df: pl.DataFrame = get_decp_data() df: pl.DataFrame = get_decp_data()
df_acheteurs = get_org_data(df, "acheteur")
df_titulaires = get_org_data(df, "titulaire")
departements = get_departements() departements = get_departements()
domain_name = ( domain_name = (
"test.decp.info" if os.getenv("DEVELOPMENT").lower() == "true" else "decp.info" "test.decp.info" if os.getenv("DEVELOPMENT").lower() == "true" else "decp.info"