Skip to content

Commit 514dc56

Browse files
authored
htmlreport: preserve filter state when navigating back/forward (danmar#7993)
Currently, using browser back/forward buttons resets filtered issue lists, even though checkbox states persist. This is confusing and makes it hard to see the filtered results consistently. Changes: - Added a `reapplyFilters()` function that reapplies ID, severity, classification, and tool filters based on the current checkbox states. - Hooked `reapplyFilters()` to the `pageshow` event to restore filtered classes when navigating with back/forward. Tested on Chrome (144.0.7534.0 (Official Build) dev (64-bit))
1 parent bdf2f42 commit 514dc56

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed

htmlreport/cppcheck-htmlreport

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -356,6 +356,57 @@ HTML_HEAD = """
356356
}
357357
}
358358
359+
function reapplyFilters() {
360+
// Reapply ID filters
361+
var idToggles = document.querySelectorAll(".idToggle");
362+
for (var i = 1; i < idToggles.length; i++) {
363+
var cb = idToggles[i];
364+
var elements = document.querySelectorAll("." + cb.id);
365+
for (var j = 0; j < elements.length; j++) {
366+
elements[j].classList.toggle("id-filtered", !cb.checked);
367+
}
368+
}
369+
370+
// Reapply severity filters
371+
var sevToggles = document.querySelectorAll(".sev_toggle");
372+
for (var i = 0; i < sevToggles.length; i++) {
373+
var cb = sevToggles[i];
374+
var elements = document.querySelectorAll(".sev_" + cb.id);
375+
for (var j = 0; j < elements.length; j++) {
376+
elements[j].classList.toggle("severity-filtered", !cb.checked);
377+
}
378+
}
379+
380+
// Reapply classification filters
381+
var classToggles = document.querySelectorAll(".class_toggle");
382+
for (var i = 0; i < classToggles.length; i++) {
383+
var cb = classToggles[i];
384+
var elements = document.querySelectorAll(".class_" + cb.id);
385+
for (var j = 0; j < elements.length; j++) {
386+
elements[j].classList.toggle("classification-filtered", !cb.checked);
387+
}
388+
}
389+
390+
// Reapply tool filters
391+
var toolToggles = document.querySelectorAll(".tool_toggle");
392+
for (var i = 0; i < toolToggles.length; i++) {
393+
var cb = toolToggles[i];
394+
var elements;
395+
if (cb.id == "clang-tidy")
396+
elements = document.querySelectorAll("[class^=clang-tidy-]");
397+
else
398+
elements = document.querySelectorAll(".issue:not([class^=clang-tidy-])");
399+
400+
for (var j = 0; j < elements.length; j++) {
401+
elements[j].classList.toggle("tool-filtered", !cb.checked);
402+
}
403+
}
404+
405+
// Update file rows
406+
updateFileRows();
407+
}
408+
409+
window.addEventListener("pageshow", reapplyFilters);
359410
window.addEventListener("load", initExpandables);
360411
</script>
361412
</head>

0 commit comments

Comments
 (0)