36 lines
1.2 KiB
Python
36 lines
1.2 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 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)
|