Thu, 07 Jul 2022 11:23:56 +0200
Reorganized the project structure to use the source layout in order to support up-to-date build systems with "pyproject.toml".
8775
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1 | // Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0 |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2 | // For details: https://github.com/nedbat/coveragepy/blob/master/NOTICE.txt |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
3 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4 | // Coverage.py HTML report browser code. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5 | /*jslint browser: true, sloppy: true, vars: true, plusplus: true, maxerr: 50, indent: 4 */ |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | /*global coverage: true, document, window, $ */ |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8 | coverage = {}; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
10 | // General helpers |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
11 | function debounce(callback, wait) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
12 | let timeoutId = null; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
13 | return function(...args) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
14 | clearTimeout(timeoutId); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
15 | timeoutId = setTimeout(() => { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
16 | callback.apply(this, args); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
17 | }, wait); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
18 | }; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
19 | }; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
20 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
21 | function checkVisible(element) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22 | const rect = element.getBoundingClientRect(); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
23 | const viewBottom = Math.max(document.documentElement.clientHeight, window.innerHeight); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
24 | const viewTop = 30; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25 | return !(rect.bottom < viewTop || rect.top >= viewBottom); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
26 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
27 | |
9099
0e511e0e94a3
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8775
diff
changeset
|
28 | function on_click(sel, fn) { |
0e511e0e94a3
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8775
diff
changeset
|
29 | const elt = document.querySelector(sel); |
0e511e0e94a3
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8775
diff
changeset
|
30 | if (elt) { |
0e511e0e94a3
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8775
diff
changeset
|
31 | elt.addEventListener("click", fn); |
0e511e0e94a3
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8775
diff
changeset
|
32 | } |
0e511e0e94a3
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8775
diff
changeset
|
33 | } |
0e511e0e94a3
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8775
diff
changeset
|
34 | |
8775
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35 | // Helpers for table sorting |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
36 | function getCellValue(row, column = 0) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37 | const cell = row.cells[column] |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
38 | if (cell.childElementCount == 1) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
39 | const child = cell.firstElementChild |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40 | if (child instanceof HTMLTimeElement && child.dateTime) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
41 | return child.dateTime |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42 | } else if (child instanceof HTMLDataElement && child.value) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
43 | return child.value |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
45 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46 | return cell.innerText || cell.textContent; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
48 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
49 | function rowComparator(rowA, rowB, column = 0) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
50 | let valueA = getCellValue(rowA, column); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
51 | let valueB = getCellValue(rowB, column); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
52 | if (!isNaN(valueA) && !isNaN(valueB)) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
53 | return valueA - valueB |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
54 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
55 | return valueA.localeCompare(valueB, undefined, {numeric: true}); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
56 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
57 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
58 | function sortColumn(th) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
59 | // Get the current sorting direction of the selected header, |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60 | // clear state on other headers and then set the new sorting direction |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61 | const currentSortOrder = th.getAttribute("aria-sort"); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
62 | [...th.parentElement.cells].forEach(header => header.setAttribute("aria-sort", "none")); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
63 | if (currentSortOrder === "none") { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
64 | th.setAttribute("aria-sort", th.dataset.defaultSortOrder || "ascending"); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
65 | } else { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
66 | th.setAttribute("aria-sort", currentSortOrder === "ascending" ? "descending" : "ascending"); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
67 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
68 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
69 | const column = [...th.parentElement.cells].indexOf(th) |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
70 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
71 | // Sort all rows and afterwards append them in order to move them in the DOM |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
72 | Array.from(th.closest("table").querySelectorAll("tbody tr")) |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
73 | .sort((rowA, rowB) => rowComparator(rowA, rowB, column) * (th.getAttribute("aria-sort") === "ascending" ? 1 : -1)) |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
74 | .forEach(tr => tr.parentElement.appendChild(tr) ); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
75 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
76 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
77 | // Find all the elements with data-shortcut attribute, and use them to assign a shortcut key. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
78 | coverage.assign_shortkeys = function () { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
79 | document.querySelectorAll("[data-shortcut]").forEach(element => { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
80 | document.addEventListener("keypress", event => { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
81 | if (event.target.tagName.toLowerCase() === "input") { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
82 | return; // ignore keypress from search filter |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
83 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
84 | if (event.key === element.dataset.shortcut) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
85 | element.click(); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
86 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
87 | }); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
88 | }); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
89 | }; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
90 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
91 | // Create the events for the filter box. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
92 | coverage.wire_up_filter = function () { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
93 | // Cache elements. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
94 | const table = document.querySelector("table.index"); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
95 | const table_body_rows = table.querySelectorAll("tbody tr"); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
96 | const no_rows = document.getElementById("no_rows"); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
97 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
98 | // Observe filter keyevents. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
99 | document.getElementById("filter").addEventListener("input", debounce(event => { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
100 | // Keep running total of each metric, first index contains number of shown rows |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
101 | const totals = new Array(table.rows[0].cells.length).fill(0); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
102 | // Accumulate the percentage as fraction |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
103 | totals[totals.length - 1] = { "numer": 0, "denom": 0 }; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
104 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
105 | // Hide / show elements. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
106 | table_body_rows.forEach(row => { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
107 | if (!row.cells[0].textContent.includes(event.target.value)) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
108 | // hide |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
109 | row.classList.add("hidden"); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
110 | return; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
111 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
112 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
113 | // show |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
114 | row.classList.remove("hidden"); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
115 | totals[0]++; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
116 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
117 | for (let column = 1; column < totals.length; column++) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
118 | // Accumulate dynamic totals |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
119 | cell = row.cells[column] |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
120 | if (column === totals.length - 1) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
121 | // Last column contains percentage |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
122 | const [numer, denom] = cell.dataset.ratio.split(" "); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
123 | totals[column]["numer"] += parseInt(numer, 10); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
124 | totals[column]["denom"] += parseInt(denom, 10); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
125 | } else { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
126 | totals[column] += parseInt(cell.textContent, 10); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
127 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
128 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
129 | }); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
130 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
131 | // Show placeholder if no rows will be displayed. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
132 | if (!totals[0]) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
133 | // Show placeholder, hide table. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
134 | no_rows.style.display = "block"; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
135 | table.style.display = "none"; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
136 | return; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
137 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
138 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
139 | // Hide placeholder, show table. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
140 | no_rows.style.display = null; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
141 | table.style.display = null; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
142 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
143 | const footer = table.tFoot.rows[0]; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
144 | // Calculate new dynamic sum values based on visible rows. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
145 | for (let column = 1; column < totals.length; column++) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
146 | // Get footer cell element. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
147 | const cell = footer.cells[column]; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
148 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
149 | // Set value into dynamic footer cell element. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
150 | if (column === totals.length - 1) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
151 | // Percentage column uses the numerator and denominator, |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
152 | // and adapts to the number of decimal places. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
153 | const match = /\.([0-9]+)/.exec(cell.textContent); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
154 | const places = match ? match[1].length : 0; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
155 | const { numer, denom } = totals[column]; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
156 | cell.dataset.ratio = `${numer} ${denom}`; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
157 | // Check denom to prevent NaN if filtered files contain no statements |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
158 | cell.textContent = denom |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
159 | ? `${(numer * 100 / denom).toFixed(places)}%` |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
160 | : `${(100).toFixed(places)}%`; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
161 | } else { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
162 | cell.textContent = totals[column]; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
163 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
164 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
165 | })); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
166 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
167 | // Trigger change event on setup, to force filter on page refresh |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
168 | // (filter value may still be present). |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
169 | document.getElementById("filter").dispatchEvent(new Event("change")); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
170 | }; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
171 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
172 | coverage.INDEX_SORT_STORAGE = "COVERAGE_INDEX_SORT_2"; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
173 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
174 | // Loaded on index.html |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
175 | coverage.index_ready = function () { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
176 | coverage.assign_shortkeys(); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
177 | coverage.wire_up_filter(); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
178 | document.querySelectorAll("[data-sortable] th[aria-sort]").forEach( |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
179 | th => th.addEventListener("click", e => sortColumn(e.target)) |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
180 | ); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
181 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
182 | // Look for a localStorage item containing previous sort settings: |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
183 | const stored_list = localStorage.getItem(coverage.INDEX_SORT_STORAGE); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
184 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
185 | if (stored_list) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
186 | const {column, direction} = JSON.parse(stored_list); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
187 | const th = document.querySelector("[data-sortable]").tHead.rows[0].cells[column]; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
188 | th.setAttribute("aria-sort", direction === "ascending" ? "descending" : "ascending"); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
189 | th.click() |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
190 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
191 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
192 | // Watch for page unload events so we can save the final sort settings: |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
193 | window.addEventListener("unload", function () { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
194 | const th = document.querySelector('[data-sortable] th[aria-sort="ascending"], [data-sortable] [aria-sort="descending"]'); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
195 | if (!th) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
196 | return; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
197 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
198 | localStorage.setItem(coverage.INDEX_SORT_STORAGE, JSON.stringify({ |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
199 | column: [...th.parentElement.cells].indexOf(th), |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
200 | direction: th.getAttribute("aria-sort"), |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
201 | })); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
202 | }); |
9099
0e511e0e94a3
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8775
diff
changeset
|
203 | |
0e511e0e94a3
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8775
diff
changeset
|
204 | on_click(".button_prev_file", coverage.to_prev_file); |
0e511e0e94a3
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8775
diff
changeset
|
205 | on_click(".button_next_file", coverage.to_next_file); |
0e511e0e94a3
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8775
diff
changeset
|
206 | |
0e511e0e94a3
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8775
diff
changeset
|
207 | on_click(".button_show_hide_help", coverage.show_hide_help); |
8775
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
208 | }; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
209 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
210 | // -- pyfile stuff -- |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
211 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
212 | coverage.LINE_FILTERS_STORAGE = "COVERAGE_LINE_FILTERS"; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
213 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
214 | coverage.pyfile_ready = function () { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
215 | // If we're directed to a particular line number, highlight the line. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
216 | var frag = location.hash; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
217 | if (frag.length > 2 && frag[1] === 't') { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
218 | document.querySelector(frag).closest(".n").classList.add("highlight"); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
219 | coverage.set_sel(parseInt(frag.substr(2), 10)); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
220 | } else { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
221 | coverage.set_sel(0); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
222 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
223 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
224 | on_click(".button_toggle_run", coverage.toggle_lines); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
225 | on_click(".button_toggle_mis", coverage.toggle_lines); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
226 | on_click(".button_toggle_exc", coverage.toggle_lines); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
227 | on_click(".button_toggle_par", coverage.toggle_lines); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
228 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
229 | on_click(".button_next_chunk", coverage.to_next_chunk_nicely); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
230 | on_click(".button_prev_chunk", coverage.to_prev_chunk_nicely); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
231 | on_click(".button_top_of_page", coverage.to_top); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
232 | on_click(".button_first_chunk", coverage.to_first_chunk); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
233 | |
9099
0e511e0e94a3
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8775
diff
changeset
|
234 | on_click(".button_prev_file", coverage.to_prev_file); |
0e511e0e94a3
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8775
diff
changeset
|
235 | on_click(".button_next_file", coverage.to_next_file); |
0e511e0e94a3
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8775
diff
changeset
|
236 | on_click(".button_to_index", coverage.to_index); |
0e511e0e94a3
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8775
diff
changeset
|
237 | |
0e511e0e94a3
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8775
diff
changeset
|
238 | on_click(".button_show_hide_help", coverage.show_hide_help); |
0e511e0e94a3
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8775
diff
changeset
|
239 | |
8775
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
240 | coverage.filters = undefined; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
241 | try { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
242 | coverage.filters = localStorage.getItem(coverage.LINE_FILTERS_STORAGE); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
243 | } catch(err) {} |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
244 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
245 | if (coverage.filters) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
246 | coverage.filters = JSON.parse(coverage.filters); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
247 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
248 | else { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
249 | coverage.filters = {run: false, exc: true, mis: true, par: true}; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
250 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
251 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
252 | for (cls in coverage.filters) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
253 | coverage.set_line_visibilty(cls, coverage.filters[cls]); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
254 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
255 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
256 | coverage.assign_shortkeys(); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
257 | coverage.init_scroll_markers(); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
258 | coverage.wire_up_sticky_header(); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
259 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
260 | // Rebuild scroll markers when the window height changes. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
261 | window.addEventListener("resize", coverage.build_scroll_markers); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
262 | }; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
263 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
264 | coverage.toggle_lines = function (event) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
265 | const btn = event.target.closest("button"); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
266 | const category = btn.value |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
267 | const show = !btn.classList.contains("show_" + category); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
268 | coverage.set_line_visibilty(category, show); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
269 | coverage.build_scroll_markers(); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
270 | coverage.filters[category] = show; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
271 | try { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
272 | localStorage.setItem(coverage.LINE_FILTERS_STORAGE, JSON.stringify(coverage.filters)); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
273 | } catch(err) {} |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
274 | }; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
275 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
276 | coverage.set_line_visibilty = function (category, should_show) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
277 | const cls = "show_" + category; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
278 | const btn = document.querySelector(".button_toggle_" + category); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
279 | if (btn) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
280 | if (should_show) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
281 | document.querySelectorAll("#source ." + category).forEach(e => e.classList.add(cls)); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
282 | btn.classList.add(cls); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
283 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
284 | else { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
285 | document.querySelectorAll("#source ." + category).forEach(e => e.classList.remove(cls)); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
286 | btn.classList.remove(cls); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
287 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
288 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
289 | }; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
290 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
291 | // Return the nth line div. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
292 | coverage.line_elt = function (n) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
293 | return document.getElementById("t" + n)?.closest("p"); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
294 | }; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
295 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
296 | // Set the selection. b and e are line numbers. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
297 | coverage.set_sel = function (b, e) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
298 | // The first line selected. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
299 | coverage.sel_begin = b; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
300 | // The next line not selected. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
301 | coverage.sel_end = (e === undefined) ? b+1 : e; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
302 | }; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
303 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
304 | coverage.to_top = function () { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
305 | coverage.set_sel(0, 1); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
306 | coverage.scroll_window(0); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
307 | }; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
308 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
309 | coverage.to_first_chunk = function () { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
310 | coverage.set_sel(0, 1); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
311 | coverage.to_next_chunk(); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
312 | }; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
313 | |
9099
0e511e0e94a3
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8775
diff
changeset
|
314 | coverage.to_prev_file = function () { |
0e511e0e94a3
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8775
diff
changeset
|
315 | window.location = document.getElementById("prevFileLink").href; |
0e511e0e94a3
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8775
diff
changeset
|
316 | } |
0e511e0e94a3
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8775
diff
changeset
|
317 | |
0e511e0e94a3
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8775
diff
changeset
|
318 | coverage.to_next_file = function () { |
0e511e0e94a3
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8775
diff
changeset
|
319 | window.location = document.getElementById("nextFileLink").href; |
0e511e0e94a3
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8775
diff
changeset
|
320 | } |
0e511e0e94a3
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8775
diff
changeset
|
321 | |
0e511e0e94a3
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8775
diff
changeset
|
322 | coverage.to_index = function () { |
0e511e0e94a3
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8775
diff
changeset
|
323 | location.href = document.getElementById("indexLink").href; |
0e511e0e94a3
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8775
diff
changeset
|
324 | } |
0e511e0e94a3
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8775
diff
changeset
|
325 | |
0e511e0e94a3
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8775
diff
changeset
|
326 | coverage.show_hide_help = function () { |
0e511e0e94a3
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8775
diff
changeset
|
327 | const helpCheck = document.getElementById("help_panel_state") |
0e511e0e94a3
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8775
diff
changeset
|
328 | helpCheck.checked = !helpCheck.checked; |
0e511e0e94a3
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8775
diff
changeset
|
329 | } |
0e511e0e94a3
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8775
diff
changeset
|
330 | |
8775
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
331 | // Return a string indicating what kind of chunk this line belongs to, |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
332 | // or null if not a chunk. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
333 | coverage.chunk_indicator = function (line_elt) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
334 | const classes = line_elt?.className; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
335 | if (!classes) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
336 | return null; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
337 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
338 | const match = classes.match(/\bshow_\w+\b/); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
339 | if (!match) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
340 | return null; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
341 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
342 | return match[0]; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
343 | }; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
344 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
345 | coverage.to_next_chunk = function () { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
346 | const c = coverage; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
347 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
348 | // Find the start of the next colored chunk. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
349 | var probe = c.sel_end; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
350 | var chunk_indicator, probe_line; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
351 | while (true) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
352 | probe_line = c.line_elt(probe); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
353 | if (!probe_line) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
354 | return; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
355 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
356 | chunk_indicator = c.chunk_indicator(probe_line); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
357 | if (chunk_indicator) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
358 | break; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
359 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
360 | probe++; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
361 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
362 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
363 | // There's a next chunk, `probe` points to it. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
364 | var begin = probe; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
365 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
366 | // Find the end of this chunk. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
367 | var next_indicator = chunk_indicator; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
368 | while (next_indicator === chunk_indicator) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
369 | probe++; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
370 | probe_line = c.line_elt(probe); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
371 | next_indicator = c.chunk_indicator(probe_line); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
372 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
373 | c.set_sel(begin, probe); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
374 | c.show_selection(); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
375 | }; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
376 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
377 | coverage.to_prev_chunk = function () { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
378 | const c = coverage; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
379 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
380 | // Find the end of the prev colored chunk. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
381 | var probe = c.sel_begin-1; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
382 | var probe_line = c.line_elt(probe); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
383 | if (!probe_line) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
384 | return; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
385 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
386 | var chunk_indicator = c.chunk_indicator(probe_line); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
387 | while (probe > 1 && !chunk_indicator) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
388 | probe--; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
389 | probe_line = c.line_elt(probe); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
390 | if (!probe_line) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
391 | return; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
392 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
393 | chunk_indicator = c.chunk_indicator(probe_line); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
394 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
395 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
396 | // There's a prev chunk, `probe` points to its last line. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
397 | var end = probe+1; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
398 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
399 | // Find the beginning of this chunk. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
400 | var prev_indicator = chunk_indicator; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
401 | while (prev_indicator === chunk_indicator) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
402 | probe--; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
403 | if (probe <= 0) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
404 | return; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
405 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
406 | probe_line = c.line_elt(probe); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
407 | prev_indicator = c.chunk_indicator(probe_line); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
408 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
409 | c.set_sel(probe+1, end); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
410 | c.show_selection(); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
411 | }; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
412 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
413 | // Returns 0, 1, or 2: how many of the two ends of the selection are on |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
414 | // the screen right now? |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
415 | coverage.selection_ends_on_screen = function () { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
416 | if (coverage.sel_begin === 0) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
417 | return 0; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
418 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
419 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
420 | const begin = coverage.line_elt(coverage.sel_begin); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
421 | const end = coverage.line_elt(coverage.sel_end-1); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
422 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
423 | return ( |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
424 | (checkVisible(begin) ? 1 : 0) |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
425 | + (checkVisible(end) ? 1 : 0) |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
426 | ); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
427 | }; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
428 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
429 | coverage.to_next_chunk_nicely = function () { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
430 | if (coverage.selection_ends_on_screen() === 0) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
431 | // The selection is entirely off the screen: |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
432 | // Set the top line on the screen as selection. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
433 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
434 | // This will select the top-left of the viewport |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
435 | // As this is most likely the span with the line number we take the parent |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
436 | const line = document.elementFromPoint(0, 0).parentElement; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
437 | if (line.parentElement !== document.getElementById("source")) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
438 | // The element is not a source line but the header or similar |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
439 | coverage.select_line_or_chunk(1); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
440 | } else { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
441 | // We extract the line number from the id |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
442 | coverage.select_line_or_chunk(parseInt(line.id.substring(1), 10)); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
443 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
444 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
445 | coverage.to_next_chunk(); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
446 | }; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
447 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
448 | coverage.to_prev_chunk_nicely = function () { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
449 | if (coverage.selection_ends_on_screen() === 0) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
450 | // The selection is entirely off the screen: |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
451 | // Set the lowest line on the screen as selection. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
452 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
453 | // This will select the bottom-left of the viewport |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
454 | // As this is most likely the span with the line number we take the parent |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
455 | const line = document.elementFromPoint(document.documentElement.clientHeight-1, 0).parentElement; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
456 | if (line.parentElement !== document.getElementById("source")) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
457 | // The element is not a source line but the header or similar |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
458 | coverage.select_line_or_chunk(coverage.lines_len); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
459 | } else { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
460 | // We extract the line number from the id |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
461 | coverage.select_line_or_chunk(parseInt(line.id.substring(1), 10)); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
462 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
463 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
464 | coverage.to_prev_chunk(); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
465 | }; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
466 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
467 | // Select line number lineno, or if it is in a colored chunk, select the |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
468 | // entire chunk |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
469 | coverage.select_line_or_chunk = function (lineno) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
470 | var c = coverage; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
471 | var probe_line = c.line_elt(lineno); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
472 | if (!probe_line) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
473 | return; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
474 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
475 | var the_indicator = c.chunk_indicator(probe_line); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
476 | if (the_indicator) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
477 | // The line is in a highlighted chunk. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
478 | // Search backward for the first line. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
479 | var probe = lineno; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
480 | var indicator = the_indicator; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
481 | while (probe > 0 && indicator === the_indicator) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
482 | probe--; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
483 | probe_line = c.line_elt(probe); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
484 | if (!probe_line) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
485 | break; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
486 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
487 | indicator = c.chunk_indicator(probe_line); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
488 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
489 | var begin = probe + 1; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
490 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
491 | // Search forward for the last line. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
492 | probe = lineno; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
493 | indicator = the_indicator; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
494 | while (indicator === the_indicator) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
495 | probe++; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
496 | probe_line = c.line_elt(probe); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
497 | indicator = c.chunk_indicator(probe_line); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
498 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
499 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
500 | coverage.set_sel(begin, probe); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
501 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
502 | else { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
503 | coverage.set_sel(lineno); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
504 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
505 | }; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
506 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
507 | coverage.show_selection = function () { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
508 | // Highlight the lines in the chunk |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
509 | document.querySelectorAll("#source .highlight").forEach(e => e.classList.remove("highlight")); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
510 | for (let probe = coverage.sel_begin; probe < coverage.sel_end; probe++) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
511 | coverage.line_elt(probe).querySelector(".n").classList.add("highlight"); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
512 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
513 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
514 | coverage.scroll_to_selection(); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
515 | }; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
516 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
517 | coverage.scroll_to_selection = function () { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
518 | // Scroll the page if the chunk isn't fully visible. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
519 | if (coverage.selection_ends_on_screen() < 2) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
520 | const element = coverage.line_elt(coverage.sel_begin); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
521 | coverage.scroll_window(element.offsetTop - 60); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
522 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
523 | }; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
524 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
525 | coverage.scroll_window = function (to_pos) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
526 | window.scroll({top: to_pos, behavior: "smooth"}); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
527 | }; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
528 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
529 | coverage.init_scroll_markers = function () { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
530 | // Init some variables |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
531 | coverage.lines_len = document.querySelectorAll('#source > p').length; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
532 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
533 | // Build html |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
534 | coverage.build_scroll_markers(); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
535 | }; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
536 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
537 | coverage.build_scroll_markers = function () { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
538 | const temp_scroll_marker = document.getElementById('scroll_marker') |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
539 | if (temp_scroll_marker) temp_scroll_marker.remove(); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
540 | // Don't build markers if the window has no scroll bar. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
541 | if (document.body.scrollHeight <= window.innerHeight) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
542 | return; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
543 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
544 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
545 | const marker_scale = window.innerHeight / document.body.scrollHeight; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
546 | const line_height = Math.min(Math.max(3, window.innerHeight / coverage.lines_len), 10); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
547 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
548 | let previous_line = -99, last_mark, last_top; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
549 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
550 | const scroll_marker = document.createElement("div"); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
551 | scroll_marker.id = "scroll_marker"; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
552 | document.getElementById('source').querySelectorAll( |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
553 | 'p.show_run, p.show_mis, p.show_exc, p.show_exc, p.show_par' |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
554 | ).forEach(element => { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
555 | const line_top = Math.floor(element.offsetTop * marker_scale); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
556 | const line_number = parseInt(element.id.substr(1)); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
557 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
558 | if (line_number === previous_line + 1) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
559 | // If this solid missed block just make previous mark higher. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
560 | last_mark.style.height = `${line_top + line_height - last_top}px`; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
561 | } else { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
562 | // Add colored line in scroll_marker block. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
563 | last_mark = document.createElement("div"); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
564 | last_mark.id = `m${line_number}`; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
565 | last_mark.classList.add("marker"); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
566 | last_mark.style.height = `${line_height}px`; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
567 | last_mark.style.top = `${line_top}px`; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
568 | scroll_marker.append(last_mark); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
569 | last_top = line_top; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
570 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
571 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
572 | previous_line = line_number; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
573 | }); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
574 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
575 | // Append last to prevent layout calculation |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
576 | document.body.append(scroll_marker); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
577 | }; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
578 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
579 | coverage.wire_up_sticky_header = function () { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
580 | const header = document.querySelector('header'); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
581 | const header_bottom = ( |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
582 | header.querySelector('.content h2').getBoundingClientRect().top - |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
583 | header.getBoundingClientRect().top |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
584 | ); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
585 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
586 | function updateHeader() { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
587 | if (window.scrollY > header_bottom) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
588 | header.classList.add('sticky'); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
589 | } else { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
590 | header.classList.remove('sticky'); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
591 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
592 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
593 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
594 | window.addEventListener('scroll', updateHeader); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
595 | updateHeader(); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
596 | }; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
597 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
598 | document.addEventListener("DOMContentLoaded", () => { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
599 | if (document.body.classList.contains("indexfile")) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
600 | coverage.index_ready(); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
601 | } else { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
602 | coverage.pyfile_ready(); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
603 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
604 | }); |