.
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')\
|
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(accounts, left_on='account_id', right_on='account_id', suffix='_account')\
|
||||||
.join(payees, left_on='payee_id', right_on='payee_id', suffix='_payee')\
|
.join(payees, left_on='payee_id', right_on='payee_id', suffix='_payee')\
|
||||||
.join(dates, left_on='transaction_date', right_on='date_id', suffix='_date')\
|
.join(dates, left_on='transaction_date', right_on='date_id', suffix='_date')
|
||||||
# date filter for callback date range
|
|
||||||
#.filter(pl.col('transaction_date'))
|
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logging.error(f'Error joining DataFrames: {e}')
|
logging.error(f'Error joining DataFrames: {e}')
|
||||||
sys.exit(ec.BAD_JOIN)
|
sys.exit(ec.BAD_JOIN)
|
||||||
|
|
||||||
def update_dates(start_date, end_date):
|
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(
|
master_data = master_transactions.filter(
|
||||||
(pl.col('year_date') >= start_year ) & (pl.col('year_date') <= end_year) &
|
(pl.col('year') >= start_date.year ) & (pl.col('year') <= end_date.year) &
|
||||||
(pl.col('month_date') >= start_month ) & (pl.col('month_date') <= end_month) &
|
(pl.col('month') >= start_date.month ) & (pl.col('month') <= end_date.month) &
|
||||||
(pl.col('day_date') >= start_day ) & (pl.col('day_date') <= end_day)
|
(pl.col('day') >= start_date.day ) & (pl.col('day') <= end_date.day)
|
||||||
)
|
)
|
||||||
return master_data
|
return master_data
|
||||||
|
|
||||||
@@ -124,4 +114,10 @@ def update_data(master_data):
|
|||||||
paper_bgcolor='black',
|
paper_bgcolor='black',
|
||||||
font_color='white'
|
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.'''
|
'''Module to create a Dash app that displays visualizations of YNAB data.'''
|
||||||
import dash
|
import dash
|
||||||
import dash_bootstrap_components as dbc
|
from dash import dcc, html
|
||||||
from dash.dependencies import Input, Output
|
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):
|
master_data = update_dates(start_date=date(2024, 1, 1), end_date=date(2026, 1, 1))
|
||||||
# Update the data based on the selected date range
|
data = update_data(master_data)
|
||||||
master = charts.update_dates(start_date, end_date)
|
|
||||||
data = charts.update_data(master)
|
|
||||||
return layout.create_layout(data)
|
|
||||||
|
|
||||||
# Initialize the app with a dark theme
|
|
||||||
app = dash.Dash(external_stylesheets=[dbc.themes.DARKLY])
|
|
||||||
|
|
||||||
# App layout
|
app = dash.Dash(__name__, external_stylesheets=[dbc.themes.DARKLY])
|
||||||
app.layout = update_visuals()
|
|
||||||
|
|
||||||
@app.callback(
|
@app.callback(
|
||||||
[
|
Output("layout-container", "children"),
|
||||||
Input('date-picker-range', 'start_date'),
|
[Input('date-picker-range', 'start_date'),
|
||||||
Input('date-picker-range', 'end_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