Major change: I have added finance_history
* pulled old values of data via restic backups
* inserted them into a new finance_history table
* added a finplan user, use of sudo & better ENV (container/production) & wrapper.sh into Dockerfile (like I do for other projects)
* recalculate the bills / Living Expenses now we have real bills for a year
* remove tax back for now (need to handle quit date vs. end of financial year better)
* hard-coded / hacked in 2026 for pay cycle dates / should be dynamic, but not sure I'll work in 2027+
* refactor front-end to handle 2026 as the current year / its more or less dynamic (via hard-coded FIRST_YEAR) variable - could not use datetime, as it was in late Dec. when I noticed the issue ('next pay' was in 2026, current year was 2025)
* also added history to graphs, changed formatting to make the history /
* savings projections to be orannge with circles, but historical is a solid line, future is a dash, also made all lines have lineWidth: 1 for aesthetics
This commit is contained in:
@@ -16,7 +16,7 @@
|
||||
<script src="https://code.highcharts.com/themes/adaptive.js"></script>
|
||||
<style>
|
||||
.col-form-label { width:140px; }
|
||||
html { font-size: 80%; }
|
||||
html { font-size: 75% !important; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
@@ -222,6 +222,8 @@
|
||||
// make these global so we can also use them in the /save route (via modal)
|
||||
const savingsData = JSON.parse('{{ savings | tojson }}');
|
||||
const vars = JSON.parse('{{ finance | tojson }}');
|
||||
const rawHistData = JSON.parse('{{ hist | tojson }}');
|
||||
const histData = rawHistData.map(entry => [ new Date(entry.snapshot_date).getTime(), parseFloat(entry.Savings || 0) ]);
|
||||
|
||||
$(function() { $('[data-bs-toggle="popover"]').popover(); });
|
||||
window.onload = function() {
|
||||
@@ -259,6 +261,7 @@
|
||||
$('#tab-but-findata').click()
|
||||
// Parse the savings_data from Flask
|
||||
const chartData = savingsData.map(entry => [new Date(entry[0]).getTime(), parseFloat(entry[1])]);
|
||||
const histChartData = histData.map(entry => [new Date(entry[0]).getTime(), parseFloat(entry[1])]);
|
||||
{% if COMP %}
|
||||
const compSavingsData = JSON.parse('{{ COMP['savings_data'] | tojson }}');
|
||||
const compChartData = compSavingsData.map(entry => [new Date(entry[0]).getTime(), parseFloat(entry[1])]);
|
||||
@@ -348,7 +351,10 @@
|
||||
}, shared:true
|
||||
},
|
||||
annotations: annotations, // Add annotations
|
||||
series: [ { name: "Savings", data: chartData, marker: { radius: 2 } } ]
|
||||
series: [
|
||||
{ name: "Savings", data: chartData, marker: { enabled: true, symbol: 'circle', radius: 2}, lineWidth:1, dashStyle: 'ShortDash', color: 'orange' },
|
||||
{ name: "Historical", data: histChartData, marker: { enabled: true, symbol: 'circle', radius: 2 }, lineWidth:1 }
|
||||
]
|
||||
});
|
||||
|
||||
{% if COMP %}
|
||||
@@ -374,8 +380,9 @@
|
||||
}, shared:true
|
||||
},
|
||||
series: [
|
||||
{ name: "Savings", data: chartData, marker: { radius: 2 } }
|
||||
,{ name: "{{COMP['vars']['name']}}", data: compChartData, marker: { radius: 2 } }
|
||||
{ name: "Savings", data: chartData, marker: { enabled: true, symbol: 'circle', radius: 2}, lineWidth:1, dashStyle: 'ShortDash', color: 'orange' }
|
||||
,{ name: "{{COMP['vars']['name']}}", data: compChartData, marker: { enabled: true, symbol: 'diamond', radius: 2 }, lineWidth:1, color: 'cyan' },
|
||||
{ name: "Historical", data: histChartData, marker: { enabled: true, symbol: 'circle', radius: 2 }, lineWidth:1 }
|
||||
]
|
||||
});
|
||||
{% endif %}
|
||||
|
||||
Reference in New Issue
Block a user