From ba30ba2cc53710a1d1d71d49440dd7cde58b1bb8 Mon Sep 17 00:00:00 2001 From: KM-R <129882581+KM-R@users.noreply.github.com> Date: Mon, 21 Aug 2023 21:30:19 +0200 Subject: [PATCH] Viz: Company stats (#64) First connection to Postgres database and creating dashboard with dropdown and table --------- Co-authored-by: Tim Co-authored-by: Philipp Horstenkamp Co-authored-by: Sebastian <94404394+SeZett@users.noreply.github.com> --- .../ui/company_stats_dash.py | 29 +++++++++++++++---- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/src/aki_prj23_transparenzregister/ui/company_stats_dash.py b/src/aki_prj23_transparenzregister/ui/company_stats_dash.py index e069c2f..2a46147 100644 --- a/src/aki_prj23_transparenzregister/ui/company_stats_dash.py +++ b/src/aki_prj23_transparenzregister/ui/company_stats_dash.py @@ -1,9 +1,8 @@ """Dash.""" import pandas as pd -from dash import Dash, dash_table +from dash import Dash, Input, Output, callback, dash_table, dcc, html -# from ..utils.postgres.connector import get_engine, init_db from aki_prj23_transparenzregister.utils.postgres import entities from aki_prj23_transparenzregister.utils.postgres.connector import ( get_session, @@ -16,9 +15,29 @@ if __name__ == "__main__": companies_df: pd.DataFrame = pd.read_sql(str(query), session.bind) # type: ignore app = Dash(__name__) - app.layout = dash_table.DataTable( - companies_df.to_dict("records"), - [{"name": i, "id": i} for i in companies_df.columns], + app.layout = html.Div( + [ + html.H1(children="Company Data", style={"textAlign": "center"}), + html.Div( + [ + dcc.Dropdown( + companies_df.company_name.unique(), + "Firma 1", + id="dropdown-selection", + ), + ] + ), + html.Div(id="data_table"), + ] ) + @callback(Output("data_table", "children"), Input("dropdown-selection", "value")) + def display_table(value: str) -> dash_table: + """Output table with company stats based on dropdown value.""" + dff = companies_df[companies_df.company_name == value] + return dash_table.DataTable( + data=dff.to_dict("records"), + columns=[{"id": c, "name": c} for c in companies_df.columns], + ) + app.run(debug=True)