From a1ffb20d6e1a8104dc6de9413cc942674c503625 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=AC=E6=98=8E?= <83812544+Ed1s0nZ@users.noreply.github.com> Date: Thu, 2 Jul 2026 17:58:06 +0800 Subject: [PATCH] Add files via upload --- web/static/js/dashboard.js | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/web/static/js/dashboard.js b/web/static/js/dashboard.js index 766af19f..6ad2ee14 100644 --- a/web/static/js/dashboard.js +++ b/web/static/js/dashboard.js @@ -1763,6 +1763,22 @@ function isDashboardDarkTheme() { return document.documentElement.getAttribute('data-theme') === 'dark'; } +function ensureSeverityDonutThemeObserver() { + if (severityDonutState.themeObserver) return; + severityDonutState.themeObserver = new MutationObserver(function (mutations) { + for (var i = 0; i < mutations.length; i++) { + if (mutations[i].attributeName === 'data-theme') { + renderSeverityDonut(severityDonutState.bySeverity, severityDonutState.total); + break; + } + } + }); + severityDonutState.themeObserver.observe(document.documentElement, { + attributes: true, + attributeFilter: ['data-theme'] + }); +} + function ensureSeverityDonutDefs() { var defsEl = document.getElementById('dashboard-severity-donut-defs'); if (!defsEl) return; @@ -1830,6 +1846,8 @@ function renderSeverityDonut(bySeverity, total) { severityDonutState.total = total || 0; severityDonutState.hoverId = null; + ensureSeverityDonutThemeObserver(); + var cfg = SEVERITY_DONUT_CFG; ensureSeverityDonutDefs(); @@ -2125,20 +2143,6 @@ function attachSeverityDonutInteractivity() { legend.addEventListener('click', severityLegendClick); legend.addEventListener('keydown', severityLegendKeydown); } - if (!severityDonutState.themeObserver) { - severityDonutState.themeObserver = new MutationObserver(function (mutations) { - for (var i = 0; i < mutations.length; i++) { - if (mutations[i].attributeName === 'data-theme') { - renderSeverityDonut(severityDonutState.bySeverity, severityDonutState.total); - break; - } - } - }); - severityDonutState.themeObserver.observe(document.documentElement, { - attributes: true, - attributeFilter: ['data-theme'] - }); - } } legend && legend.querySelectorAll('.dashboard-severity-legend-item').forEach(function (item) {