'''Module to create a Dash app that displays visualizations of YNAB data.''' import dash from dash import dcc, html from dash.dependencies import Input, Output, State import dash_bootstrap_components as dbc from visuals.layout import create_layout from visuals.components import data_components from datetime import date, timedelta import datetime today = date.today() one_year_ago = today - timedelta(days=365) master_data = data_components.update_dates(start_date=one_year_ago, end_date=today) data = data_components.update_data(master_data) app = dash.Dash(__name__, external_stylesheets=[dbc.themes.DARKLY]) @app.callback( Output("spend_per_day","figure"), Output("spend_per_category","figure"), Output("spend_per_payee","figure"), Output("total_spend","children"), Input('date-picker-range', 'start_date'), Input('date-picker-range', 'end_date') ) def update_layout(start_date,end_date): actual_start_date = datetime.date.fromisoformat(start_date) actual_end_date = datetime.date.fromisoformat(end_date) master_data = data_components.update_dates(actual_start_date,actual_end_date) # spend_per_day_line,spend_per_category_bar,spend_per_payee_bar,total_spend = data_components.update_data(master_data,callback=1) return data_components.update_data(master_data,callback=1) app.layout = create_layout(data)