diff --git a/src/components/.data_table.py.swp b/src/components/.data_table.py.swp deleted file mode 100644 index 3fed9a2..0000000 Binary files a/src/components/.data_table.py.swp and /dev/null differ diff --git a/src/components/data_table.py b/src/components/data_table.py index 271c013..eeea71f 100644 --- a/src/components/data_table.py +++ b/src/components/data_table.py @@ -1,6 +1,5 @@ import pandas as pd -import plotly.express as px -from dash import Dash, dcc, html +from dash import Dash, dcc, html, dash_table from dash.dependencies import Input, Output from ..data.loader import DataSchema @@ -9,7 +8,7 @@ from . import ids def render(app: Dash, data: pd.DataFrame) -> html.Div: @app.callback( - Output(ids.BAR_CHART, "children"), + Output(ids.DATA_TABLE, "children"), [ Input(ids.YEAR_DROPDOWN, "value"), Input(ids.MONTH_DROPDOWN, "value"), @@ -24,7 +23,8 @@ def render(app: Dash, data: pd.DataFrame) -> html.Div: ) if filtered_data.shape[0] == 0: - return html.Div("No data selected.", id=ids.DATA_TABLE) + return html.Div("No data selected.") + def create_pivot_table() -> pd.DataFrame: pt = filtered_data.pivot_table( values=DataSchema.AMOUNT, @@ -35,6 +35,11 @@ def render(app: Dash, data: pd.DataFrame) -> html.Div: ) return pt.reset_index().sort_values(DataSchema.AMOUNT, ascending=False) - return html.Div(dcc.Data_table(data=create_pivot_table(data), id=ids.DATA_TABLE) + pt = create_pivot_table() - return html.Div(id=ids.DATA_TABLE) + return dash_table.DataTable( + data=pt.to_dict("records"), + columns=[{"name": i, "id": i} for i in pt.columns], + ) + + return html.Div(id=ids.DATA_TABLE) \ No newline at end of file diff --git a/src/components/layout.py b/src/components/layout.py index 92f1512..1a39fa9 100644 --- a/src/components/layout.py +++ b/src/components/layout.py @@ -1,14 +1,15 @@ import pandas as pd + from dash import Dash, html from src.components import ( bar_chart, - category_dropdown, - month_dropdown, data_table, + pie_chart, year_dropdown, + month_dropdown, + category_dropdown, ) - def create_layout(app: Dash, data: pd.DataFrame) -> html.Div: return html.Div( className="app-div", @@ -24,6 +25,7 @@ def create_layout(app: Dash, data: pd.DataFrame) -> html.Div: ], ), bar_chart.render(app, data), + pie_chart.render(app, data), data_table.render(app, data), ], )