34 lines
1.0 KiB
Python
34 lines
1.0 KiB
Python
'''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 update_data, update_dates
|
|
from datetime import date, timedelta
|
|
|
|
today = date.today()
|
|
one_year_ago = today - timedelta(days=365)
|
|
|
|
master_data = update_dates(start_date=one_year_ago, end_date=today)
|
|
data = 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):
|
|
master_data = update_dates(start_date, end_date)
|
|
data = update_data(master_data)
|
|
return create_layout(data)
|
|
|
|
app.layout = create_layout(data)
|