add year 0 row and Nebenkosten mitfinanzieren toggle

This commit is contained in:
Johannes
2026-03-20 02:33:17 +01:00
parent 9d735fb10f
commit 183e69f0b7
4 changed files with 106 additions and 11 deletions

27
ui.js
View File

@@ -24,7 +24,8 @@ const get_params = () => ({
monthly_rent: +document.getElementById('monthly_rent').value,
rent_increase: +document.getElementById('rent_increase').value,
renters_ins: +document.getElementById('renters_ins').value,
start_capital: +document.getElementById('start_capital').value,
start_capital: +document.getElementById('start_capital').value,
finance_nebenkosten: document.getElementById('finance_nebenkosten').checked,
});
// ===== Charts =====
@@ -206,12 +207,22 @@ const build_table = (result) => {
const td_buy_cost = document.createElement('td');
td_buy_cost.textContent = fmt_eur(result.cum_buy_arr[i]);
td_buy_cost.classList.add('has-tip');
td_buy_cost.addEventListener('mouseenter', (e) => show_tooltip(e, [
`<span style="color:#8b949e;font-size:0.72rem;text-transform:uppercase;letter-spacing:.05em">dieses Jahr</span>`,
tip_row('Zinsen', d.yr_interest, '#f59e0b'),
tip_row('Tilgung', d.yr_principal, '#f59e0b'),
tip_row('Nebenkosten', d.yr_upkeep, '#f59e0b'),
].join('<br>')));
td_buy_cost.addEventListener('mouseenter', (e) => {
const rows = i === 0
? [
`<span style="color:#8b949e;font-size:0.72rem;text-transform:uppercase;letter-spacing:.05em">Kauftag</span>`,
tip_row('Eigenkapital', result.cum_buy_arr[0] - (d.finance_nebenkosten ? 0 : d.kaufnebenkosten), '#f59e0b'),
tip_row('Kaufnebenkosten', d.kaufnebenkosten, d.finance_nebenkosten ? '#8b949e' : '#f59e0b'),
d.finance_nebenkosten ? `<span style="color:#6e7681;font-size:0.75rem">↳ mitfinanziert</span>` : null,
].filter(Boolean)
: [
`<span style="color:#8b949e;font-size:0.72rem;text-transform:uppercase;letter-spacing:.05em">dieses Jahr</span>`,
tip_row('Zinsen', d.yr_interest, '#f59e0b'),
tip_row('Tilgung', d.yr_principal, '#f59e0b'),
tip_row('Nebenkosten', d.yr_upkeep, '#f59e0b'),
];
show_tooltip(e, rows.join('<br>'));
});
const td_rent_cost = document.createElement('td');
td_rent_cost.textContent = fmt_eur(result.cum_rent_arr[i]);
@@ -304,6 +315,8 @@ const SLIDER_IDS = [
SLIDER_IDS.forEach(wire_slider);
// wire plain number inputs (no slider)
document.getElementById('finance_nebenkosten').addEventListener('change', recalc);
['home_price', 'insurance', 'monthly_rent', 'renters_ins', 'start_capital'].forEach((id) => {
document.getElementById(id).addEventListener('input', recalc);
});