diff --git a/src/assets/style.css b/src/assets/style.css index b007d9a..e754bcf 100644 --- a/src/assets/style.css +++ b/src/assets/style.css @@ -143,6 +143,25 @@ td[data-dash-column="objet"],td[data-dash-column="titulaire_nom"],td[data-dash-c 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 */ .navbar { diff --git a/src/pages/recherche.py b/src/pages/recherche.py new file mode 100644 index 0000000..834dcd5 --- /dev/null +++ b/src/pages/recherche.py @@ -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") diff --git a/src/pages/tableau.py b/src/pages/tableau.py index 4b3d380..83bfffe 100644 --- a/src/pages/tableau.py +++ b/src/pages/tableau.py @@ -25,7 +25,7 @@ schema = df.collect_schema() name = "Tableau" register_page( __name__, - path="/", + path="/tableau", title=meta_content["title"], name=name, description=meta_content["description"], diff --git a/src/utils.py b/src/utils.py index 23ad4fe..fd8816a 100644 --- a/src/utils.py +++ b/src/utils.py @@ -208,6 +208,17 @@ def get_decp_data() -> pl.DataFrame: 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: with open("data/departements.json", "rb") as f: data = json.load(f) @@ -365,6 +376,8 @@ def get_data_schema() -> dict: df: pl.DataFrame = get_decp_data() +df_acheteurs = get_org_data(df, "acheteur") +df_titulaires = get_org_data(df, "titulaire") departements = get_departements() domain_name = ( "test.decp.info" if os.getenv("DEVELOPMENT").lower() == "true" else "decp.info"