.
This commit is contained in:
+12
-16
@@ -22,27 +22,17 @@ try:
|
||||
master_transactions = transactions.join(categories, left_on='category_id', right_on='category_id', suffix='_category')\
|
||||
.join(accounts, left_on='account_id', right_on='account_id', suffix='_account')\
|
||||
.join(payees, left_on='payee_id', right_on='payee_id', suffix='_payee')\
|
||||
.join(dates, left_on='transaction_date', right_on='date_id', suffix='_date')\
|
||||
# date filter for callback date range
|
||||
#.filter(pl.col('transaction_date'))
|
||||
|
||||
.join(dates, left_on='transaction_date', right_on='date_id', suffix='_date')
|
||||
|
||||
except Exception as e:
|
||||
logging.error(f'Error joining DataFrames: {e}')
|
||||
sys.exit(ec.BAD_JOIN)
|
||||
|
||||
def update_dates(start_date, end_date):
|
||||
start_year = int(start_date[:4])
|
||||
start_month = int(start_date[5:7])
|
||||
start_day = int(start_date[8:10])
|
||||
|
||||
end_year = int(end_date[:4])
|
||||
end_month = int(end_date[5:7])
|
||||
end_day = int(end_date[8:10])
|
||||
|
||||
master_data = master_transactions.filter(
|
||||
(pl.col('year_date') >= start_year ) & (pl.col('year_date') <= end_year) &
|
||||
(pl.col('month_date') >= start_month ) & (pl.col('month_date') <= end_month) &
|
||||
(pl.col('day_date') >= start_day ) & (pl.col('day_date') <= end_day)
|
||||
(pl.col('year') >= start_date.year ) & (pl.col('year') <= end_date.year) &
|
||||
(pl.col('month') >= start_date.month ) & (pl.col('month') <= end_date.month) &
|
||||
(pl.col('day') >= start_date.day ) & (pl.col('day') <= end_date.day)
|
||||
)
|
||||
return master_data
|
||||
|
||||
@@ -124,4 +114,10 @@ def update_data(master_data):
|
||||
paper_bgcolor='black',
|
||||
font_color='white'
|
||||
)
|
||||
return spend_per_day_line, spend_per_category_bar, spend_per_payee_bar, total_spend
|
||||
|
||||
data = {"spend_per_day_line": spend_per_day_line,
|
||||
"spend_per_category_bar": spend_per_category_bar,
|
||||
"spend_per_payee_bar": spend_per_payee_bar,
|
||||
"total_spend": total_spend}
|
||||
print(data)
|
||||
return data
|
||||
|
||||
+18
-17
@@ -1,26 +1,27 @@
|
||||
'''Module to create a Dash app that displays visualizations of YNAB data.'''
|
||||
import dash
|
||||
import dash_bootstrap_components as dbc
|
||||
from dash import dcc, html
|
||||
from dash.dependencies import Input, Output
|
||||
import dash_bootstrap_components as dbc
|
||||
from visuals.layout import create_layout
|
||||
from visuals.components import update_data, update_dates
|
||||
from datetime import date
|
||||
|
||||
import visuals.layout as layout
|
||||
import visuals.components as charts
|
||||
|
||||
def update_visuals(start_date, end_date):
|
||||
# Update the data based on the selected date range
|
||||
master = charts.update_dates(start_date, end_date)
|
||||
data = charts.update_data(master)
|
||||
return layout.create_layout(data)
|
||||
master_data = update_dates(start_date=date(2024, 1, 1), end_date=date(2026, 1, 1))
|
||||
data = update_data(master_data)
|
||||
|
||||
# Initialize the app with a dark theme
|
||||
app = dash.Dash(external_stylesheets=[dbc.themes.DARKLY])
|
||||
|
||||
# App layout
|
||||
app.layout = update_visuals()
|
||||
app = dash.Dash(__name__, external_stylesheets=[dbc.themes.DARKLY])
|
||||
|
||||
@app.callback(
|
||||
[
|
||||
Input('date-picker-range', 'start_date'),
|
||||
Input('date-picker-range', 'end_date')
|
||||
]
|
||||
)
|
||||
Output("layout-container", "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)
|
||||
|
||||
Reference in New Issue
Block a user