diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2023-04-01 08:22:48 -0400 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2023-04-01 08:59:23 -0400 |
commit | b8498bf9c144344fd70cbb6e72c13e65c13b5e48 (patch) | |
tree | fef335e9687c21d22ae0b42d336eea2be241254d /coverage/htmlfiles/coverage_html.js | |
parent | 80b4794479d723e3596a644481de30cce7dbf7b8 (diff) | |
download | python-coveragepy-git-b8498bf9c144344fd70cbb6e72c13e65c13b5e48.tar.gz |
perf: make the context shortcodes even shorter
On the coverage.py metacov, this makes the HTML 5% smaller.
Diffstat (limited to 'coverage/htmlfiles/coverage_html.js')
-rw-r--r-- | coverage/htmlfiles/coverage_html.js | 34 |
1 files changed, 17 insertions, 17 deletions
diff --git a/coverage/htmlfiles/coverage_html.js b/coverage/htmlfiles/coverage_html.js index 691a56c3..4c321182 100644 --- a/coverage/htmlfiles/coverage_html.js +++ b/coverage/htmlfiles/coverage_html.js @@ -212,11 +212,6 @@ coverage.index_ready = function () { coverage.LINE_FILTERS_STORAGE = "COVERAGE_LINE_FILTERS"; coverage.pyfile_ready = function () { - cboxes = document.querySelectorAll('[id^=ctxs]') - cboxes.forEach(function(cbox) { - cbox.addEventListener("click", coverage.showContexts) - }); - // If we're directed to a particular line number, highlight the line. var frag = location.hash; if (frag.length > 2 && frag[1] === "t") { @@ -262,6 +257,10 @@ coverage.pyfile_ready = function () { coverage.init_scroll_markers(); coverage.wire_up_sticky_header(); + document.querySelectorAll("[id^=ctxs]").forEach( + cbox => cbox.addEventListener("click", coverage.expand_contexts) + ); + // Rebuild scroll markers when the window height changes. window.addEventListener("resize", coverage.build_scroll_markers); }; @@ -600,17 +599,19 @@ coverage.wire_up_sticky_header = function () { updateHeader(); }; -coverage.showContexts = function (e) { - span = e.target.nextElementSibling.nextElementSibling; - span_text = span.textContent; - - if (/^[0-9,]+$/.test(span_text)) { - span.textContent = ""; - span_text.split(",").forEach(function(s) { - ctx = contexts[s]; - span.appendChild(document.createTextNode(ctx)); - span.appendChild(document.createElement("br")); - }) +coverage.expand_contexts = function (e) { + var ctxs = e.target.parentNode.querySelector(".ctxs"); + + if (!ctxs.classList.contains("expanded")) { + var ctxs_text = ctxs.textContent; + var width = Number(ctxs_text[0]); + ctxs.textContent = ""; + for (var i = 1; i < ctxs_text.length; i += width) { + key = ctxs_text.substring(i, i + width).trim(); + ctxs.appendChild(document.createTextNode(contexts[key])); + ctxs.appendChild(document.createElement("br")); + } + ctxs.classList.add("expanded"); } }; @@ -620,5 +621,4 @@ document.addEventListener("DOMContentLoaded", () => { } else { coverage.pyfile_ready(); } - }); |