Files
2025-05-30 11:43:47 +01:00

35 lines
1.2 KiB
Python

'''Module to create a Dash app that displays visualizations of YNAB data.'''
import dash
from dash.dependencies import Input, Output
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_date_range(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)
return data_components.update_data(master_data,callback=1)
app.layout = create_layout(data)