diff --git a/public/admin/audit-analytics.html b/public/admin/audit-analytics.html index 896509a0..0d17393f 100644 --- a/public/admin/audit-analytics.html +++ b/public/admin/audit-analytics.html @@ -167,7 +167,16 @@
-

Cost Avoidance This Period

+
+

Cost Avoidance

+ +
diff --git a/public/js/admin/audit-analytics.js b/public/js/admin/audit-analytics.js index 06f12992..eb18eaf8 100644 --- a/public/js/admin/audit-analytics.js +++ b/public/js/admin/audit-analytics.js @@ -182,8 +182,18 @@ async function renderBusinessIntelligence() { }); } - // Cost Avoidance - load from API - const blockedDecisions = auditData.filter(d => !d.allowed); + // Cost Avoidance - filter by selected period + const period = document.getElementById('cost-period-selector')?.value || '30'; + let filteredData = auditData; + + if (period !== 'all') { + const days = parseInt(period); + const cutoffDate = new Date(); + cutoffDate.setDate(cutoffDate.getDate() - days); + filteredData = auditData.filter(d => new Date(d.timestamp) >= cutoffDate); + } + + const blockedDecisions = filteredData.filter(d => !d.allowed); let totalCost = 0; const costByLevel = { CRITICAL: 0, HIGH: 0, MEDIUM: 0, LOW: 0 }; @@ -1144,6 +1154,16 @@ function init() { configCostsBtn.addEventListener('click', showCostConfigModal); } + // Setup cost period selector + const periodSelector = document.getElementById('cost-period-selector'); + if (periodSelector) { + console.log('[Audit Analytics] Cost period selector found, attaching event listener'); + periodSelector.addEventListener('change', () => { + console.log('[Audit Analytics] Period changed, recalculating cost avoidance...'); + renderBusinessIntelligence(); + }); + } + // Load initial data loadAuditData(); }