diff --git a/htmlreport/cppcheck-htmlreport b/htmlreport/cppcheck-htmlreport index f0749de80..51b0cd5ad 100755 --- a/htmlreport/cppcheck-htmlreport +++ b/htmlreport/cppcheck-htmlreport @@ -30,78 +30,80 @@ body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif; font-size: 13px; line-height: 1.5; + height: 100%; margin: 0; - width: auto; +} + +#wrapper { + position: fixed; + height: 100vh; + width: 100vw; + display: grid; + grid-template-rows: fit-content(8rem) auto fit-content(8rem); + grid-template-columns: fit-content(25%) 1fr; + grid-template-areas: + "header header" + "menu content" + "footer footer"; } h1 { - margin: 10px; + margin: 0 0 8px -2px; + font-size: 175%; } .header { + padding: 0 0 5px 15px; + grid-area: header; border-bottom: thin solid #aaa; } .footer { + grid-area: footer; border-top: thin solid #aaa; - font-size: 90%; - margin-top: 5px; -} + font-size: 85%; -.footer ul { - list-style-type: none; - padding-left: 0; } .footer > p { margin: 4px; } -.wrapper { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; -} - #menu, #menu_index { + grid-area: menu; text-align: left; - width: 350px; - height: 90vh; - min-height: 200px; overflow: auto; - position: -webkit-sticky; - position: sticky; - top: 0; padding: 0 15px 15px 15px; + border-right: thin solid #aaa; + min-width: 200px; } #menu > a { display: block; margin-left: 10px; font-size: 12px; - z-index: 1; } #content, #content_index { - background-color: #fff; - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; - padding: 0 15px 15px 15px; - width: calc(100% - 350px); - height: 100%; - overflow-x: auto; + grid-area: content; + padding: 0px 5px 15px 15px; + overflow: auto; } -#filename { - margin-left: 10px; - font-size: 12px; - z-index: 1; +.summaryTable { + width: 100%; +} + +table.summaryTable td { padding: 0 5px 0 5px; } + +.statHeader, .severityHeader { + font-weight: bold; +} + +.warning { + background-color: #ffffa7; } .error { @@ -148,7 +150,6 @@ h1 { .highlighttable { background-color: #fff; - z-index: 10; position: relative; margin: -10px; } @@ -159,8 +160,8 @@ h1 { padding-right: 6px; } -.d-none { - display: none; +.id-filtered, .severity-filtered, .file-filtered, .tool-filtered { + visibility: collapse; } """ @@ -216,58 +217,109 @@ HTML_HEAD = """ } } - function toggleDisplay(id) { - var elements = document.querySelectorAll("." + id); + function toggleDisplay(cb) { + var elements = document.querySelectorAll("." + cb.id); for (var i = 0, len = elements.length; i < len; i++) { - elements[i].classList.toggle("d-none"); + elements[i].classList.toggle("id-filtered", !cb.checked); } + + updateFileRows(); + } + + function toggleSeverity(cb) { + var elements = document.querySelectorAll(".sev_" + cb.id); + + for (var i = 0, len = elements.length; i < len; i++) { + elements[i].classList.toggle("severity-filtered", !cb.checked); + } + + updateFileRows(); + } + + function toggleTool(cb) { + var elements; + if (cb.id == "clang-tidy") + elements = document.querySelectorAll("[class^=clang-tidy-]"); + else + elements = document.querySelectorAll(".issue:not([class^=clang-tidy-])"); + + for (var i = 0, len = elements.length; i < len; i++) { + elements[i].classList.toggle("tool-filtered", !cb.checked); + } + + updateFileRows(); } function toggleAll() { - var elements = document.querySelectorAll("input"); + var elements = document.querySelectorAll(".idToggle"); // starting from 1 since 0 is the "toggle all" input for (var i = 1, len = elements.length; i < len; i++) { - var el = elements[i]; - - if (el.checked) { - el.checked = false; - } else { - el.checked = true; + var changed = elements[i].checked != elements[0].checked; + if (changed) { + elements[i].checked = elements[0].checked; + toggleDisplay(elements[i]); } - - toggleDisplay(el.id); } } + + function updateFileRows(element) { + var elements = document.querySelectorAll(".fileEntry"); + + for (var i = 0, len = elements.length; i < len; i++) { + var issue_count = elements[i].querySelectorAll(".issue").length; + var invisible_count = elements[i].querySelectorAll(".id-filtered, .severity-filtered, .tool-filtered").length; + elements[i].classList.toggle("file-filtered", (invisible_count == issue_count)); + } + } + window.addEventListener("load", initExpandables);
+