Files
data_pipeline_for_YNAB/visuals/dash_app.py
T

37 lines
1.3 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_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)