updated help and advanced table

This commit is contained in:
Tobias Brunner 2025-07-23 11:42:22 +02:00
parent 4746cfac25
commit 4f8fb0a448
Signed by: tobru
SSH key fingerprint: SHA256:kOXg1R6c11XW3/Pt9dbLdQvOJGFAy+B2K6v6PtRWBGQ
5 changed files with 238 additions and 36 deletions

View file

@ -131,12 +131,21 @@ class UIManager {
tbody.innerHTML = '';
// Get filter settings
const filters = this.getMonthlyBreakdownFilters();
// Combine all monthly data and sort by month, then scenario, then model
const allData = [];
Object.keys(this.calculator.monthlyData).forEach(resultKey => {
this.calculator.monthlyData[resultKey].forEach(monthData => {
const model = resultKey.includes('_loan') ? 'loan' : 'direct';
const scenario = resultKey.replace('_direct', '').replace('_loan', '');
// Apply filters
if (!filters.models[model] || !filters.scenarios[scenario.toLowerCase()]) {
return; // Skip this entry if filtered out
}
allData.push({
...monthData,
model: model,
@ -176,6 +185,7 @@ class UIManager {
<td class="text-end">${data.totalInstances ? data.totalInstances.toLocaleString() : '0'}</td>
<td class="text-end">${this.formatCurrencyDetailed(data.monthlyRevenue || 0)}</td>
<td class="text-end fw-bold">${this.formatCurrencyDetailed(data.cspRevenue || 0)}</td>
<td class="text-end text-muted">${this.formatCurrencyDetailed(data.servalaRevenue || 0)}</td>
<td class="text-end fw-bold ${netPositionClass}">${this.formatCurrencyDetailed(data.netPosition || 0)}</td>
`;
});
@ -253,4 +263,27 @@ class UIManager {
default: return '#6c757d';
}
}
getMonthlyBreakdownFilters() {
try {
return {
models: {
direct: document.getElementById('breakdown-direct-enabled')?.checked ?? true,
loan: document.getElementById('breakdown-loan-enabled')?.checked ?? true
},
scenarios: {
conservative: document.getElementById('breakdown-conservative-enabled')?.checked ?? true,
moderate: document.getElementById('breakdown-moderate-enabled')?.checked ?? true,
aggressive: document.getElementById('breakdown-aggressive-enabled')?.checked ?? true
}
};
} catch (error) {
console.error('Error getting monthly breakdown filters:', error);
// Return default filters if there's an error
return {
models: { direct: true, loan: true },
scenarios: { conservative: true, moderate: true, aggressive: true }
};
}
}
}