Sat, 20 Nov 2021 16:47:38 +0100
Upgraded coverage to 6.1.2.
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 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28 | // Helpers for table sorting |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
29 | function getCellValue(row, column = 0) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
30 | const cell = row.cells[column] |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
31 | if (cell.childElementCount == 1) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32 | const child = cell.firstElementChild |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33 | if (child instanceof HTMLTimeElement && child.dateTime) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
34 | return child.dateTime |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35 | } else if (child instanceof HTMLDataElement && child.value) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
36 | return child.value |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
38 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
39 | return cell.innerText || cell.textContent; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
41 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42 | function rowComparator(rowA, rowB, column = 0) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
43 | let valueA = getCellValue(rowA, column); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44 | let valueB = getCellValue(rowB, column); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
45 | if (!isNaN(valueA) && !isNaN(valueB)) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46 | return valueA - valueB |
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 | return valueA.localeCompare(valueB, undefined, {numeric: true}); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
49 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
50 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
51 | function sortColumn(th) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
52 | // 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
|
53 | // 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
|
54 | const currentSortOrder = th.getAttribute("aria-sort"); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
55 | [...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
|
56 | if (currentSortOrder === "none") { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
57 | th.setAttribute("aria-sort", th.dataset.defaultSortOrder || "ascending"); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
58 | } else { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
59 | th.setAttribute("aria-sort", currentSortOrder === "ascending" ? "descending" : "ascending"); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
62 | const column = [...th.parentElement.cells].indexOf(th) |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
63 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
64 | // 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
|
65 | Array.from(th.closest("table").querySelectorAll("tbody tr")) |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
66 | .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
|
67 | .forEach(tr => tr.parentElement.appendChild(tr) ); |
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 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
70 | // 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
|
71 | coverage.assign_shortkeys = function () { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
72 | document.querySelectorAll("[data-shortcut]").forEach(element => { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
73 | document.addEventListener("keypress", event => { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
74 | if (event.target.tagName.toLowerCase() === "input") { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
75 | return; // ignore keypress from search filter |
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 | if (event.key === element.dataset.shortcut) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
78 | element.click(); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
79 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
80 | }); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
81 | }); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
82 | }; |
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 | // Create the events for the filter box. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
85 | coverage.wire_up_filter = function () { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
86 | // Cache elements. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
87 | const table = document.querySelector("table.index"); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
88 | const table_body_rows = table.querySelectorAll("tbody tr"); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
89 | const no_rows = document.getElementById("no_rows"); |
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 | // Observe filter keyevents. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
92 | document.getElementById("filter").addEventListener("input", debounce(event => { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
93 | // 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
|
94 | 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
|
95 | // Accumulate the percentage as fraction |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
96 | totals[totals.length - 1] = { "numer": 0, "denom": 0 }; |
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 | // Hide / show elements. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
99 | table_body_rows.forEach(row => { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
100 | 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
|
101 | // hide |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
102 | row.classList.add("hidden"); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
103 | return; |
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 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
106 | // show |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
107 | row.classList.remove("hidden"); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
108 | totals[0]++; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
109 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
110 | for (let column = 1; column < totals.length; column++) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
111 | // Accumulate dynamic totals |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
112 | cell = row.cells[column] |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
113 | if (column === totals.length - 1) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
114 | // Last column contains percentage |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
115 | const [numer, denom] = cell.dataset.ratio.split(" "); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
116 | totals[column]["numer"] += parseInt(numer, 10); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
117 | totals[column]["denom"] += parseInt(denom, 10); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
118 | } else { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
119 | totals[column] += parseInt(cell.textContent, 10); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
120 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
121 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
122 | }); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
123 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
124 | // Show placeholder if no rows will be displayed. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
125 | if (!totals[0]) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
126 | // Show placeholder, hide table. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
127 | no_rows.style.display = "block"; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
128 | table.style.display = "none"; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
129 | return; |
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 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
132 | // Hide placeholder, show table. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
133 | no_rows.style.display = null; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
134 | table.style.display = null; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
135 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
136 | const footer = table.tFoot.rows[0]; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
137 | // 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
|
138 | for (let column = 1; column < totals.length; column++) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
139 | // Get footer cell element. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
140 | const cell = footer.cells[column]; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
141 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
142 | // Set value into dynamic footer cell element. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
143 | if (column === totals.length - 1) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
144 | // Percentage column uses the numerator and denominator, |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
145 | // and adapts to the number of decimal places. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
146 | const match = /\.([0-9]+)/.exec(cell.textContent); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
147 | const places = match ? match[1].length : 0; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
148 | const { numer, denom } = totals[column]; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
149 | cell.dataset.ratio = `${numer} ${denom}`; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
150 | // 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
|
151 | cell.textContent = denom |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
152 | ? `${(numer * 100 / denom).toFixed(places)}%` |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
153 | : `${(100).toFixed(places)}%`; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
154 | } else { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
155 | cell.textContent = totals[column]; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
156 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
157 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
158 | })); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
159 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
160 | // 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
|
161 | // (filter value may still be present). |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
162 | document.getElementById("filter").dispatchEvent(new Event("change")); |
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 | coverage.INDEX_SORT_STORAGE = "COVERAGE_INDEX_SORT_2"; |
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 | // Loaded on index.html |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
168 | coverage.index_ready = function () { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
169 | coverage.assign_shortkeys(); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
170 | coverage.wire_up_filter(); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
171 | document.querySelectorAll("[data-sortable] th[aria-sort]").forEach( |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
172 | th => th.addEventListener("click", e => sortColumn(e.target)) |
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 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
175 | // 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
|
176 | 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
|
177 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
178 | if (stored_list) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
179 | const {column, direction} = JSON.parse(stored_list); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
180 | 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
|
181 | th.setAttribute("aria-sort", direction === "ascending" ? "descending" : "ascending"); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
182 | th.click() |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
183 | } |
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 | // 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
|
186 | window.addEventListener("unload", function () { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
187 | 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
|
188 | if (!th) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
189 | return; |
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 | localStorage.setItem(coverage.INDEX_SORT_STORAGE, JSON.stringify({ |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
192 | column: [...th.parentElement.cells].indexOf(th), |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
193 | direction: th.getAttribute("aria-sort"), |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
194 | })); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
195 | }); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
196 | }; |
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 | // -- pyfile stuff -- |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
199 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
200 | coverage.LINE_FILTERS_STORAGE = "COVERAGE_LINE_FILTERS"; |
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 | coverage.pyfile_ready = function () { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
203 | // 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
|
204 | var frag = location.hash; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
205 | if (frag.length > 2 && frag[1] === 't') { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
206 | document.querySelector(frag).closest(".n").classList.add("highlight"); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
207 | coverage.set_sel(parseInt(frag.substr(2), 10)); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
208 | } else { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
209 | coverage.set_sel(0); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
210 | } |
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 | const on_click = function(sel, fn) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
213 | const elt = document.querySelector(sel); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
214 | if (elt) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
215 | elt.addEventListener("click", fn); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
216 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
217 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
218 | on_click(".button_toggle_run", coverage.toggle_lines); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
219 | on_click(".button_toggle_mis", coverage.toggle_lines); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
220 | on_click(".button_toggle_exc", coverage.toggle_lines); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
221 | on_click(".button_toggle_par", coverage.toggle_lines); |
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 | 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
|
224 | 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
|
225 | 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
|
226 | 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
|
227 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
228 | coverage.filters = undefined; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
229 | try { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
230 | coverage.filters = localStorage.getItem(coverage.LINE_FILTERS_STORAGE); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
231 | } catch(err) {} |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
232 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
233 | if (coverage.filters) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
234 | coverage.filters = JSON.parse(coverage.filters); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
235 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
236 | else { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
237 | 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
|
238 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
239 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
240 | for (cls in coverage.filters) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
241 | coverage.set_line_visibilty(cls, coverage.filters[cls]); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
242 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
243 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
244 | coverage.assign_shortkeys(); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
245 | coverage.init_scroll_markers(); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
246 | coverage.wire_up_sticky_header(); |
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 | // Rebuild scroll markers when the window height changes. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
249 | window.addEventListener("resize", coverage.build_scroll_markers); |
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 | coverage.toggle_lines = function (event) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
253 | const btn = event.target.closest("button"); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
254 | const category = btn.value |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
255 | const show = !btn.classList.contains("show_" + category); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
256 | coverage.set_line_visibilty(category, show); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
257 | coverage.build_scroll_markers(); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
258 | coverage.filters[category] = show; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
259 | try { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
260 | 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
|
261 | } catch(err) {} |
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.set_line_visibilty = function (category, should_show) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
265 | const cls = "show_" + category; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
266 | const btn = document.querySelector(".button_toggle_" + category); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
267 | if (btn) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
268 | if (should_show) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
269 | 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
|
270 | btn.classList.add(cls); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
271 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
272 | else { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
273 | 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
|
274 | btn.classList.remove(cls); |
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 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
277 | }; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
278 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
279 | // Return the nth line div. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
280 | coverage.line_elt = function (n) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
281 | return document.getElementById("t" + n)?.closest("p"); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
282 | }; |
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 | // 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
|
285 | coverage.set_sel = function (b, e) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
286 | // The first line selected. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
287 | coverage.sel_begin = b; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
288 | // The next line not selected. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
289 | coverage.sel_end = (e === undefined) ? b+1 : e; |
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 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
292 | coverage.to_top = function () { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
293 | coverage.set_sel(0, 1); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
294 | coverage.scroll_window(0); |
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 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
297 | coverage.to_first_chunk = function () { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
298 | coverage.set_sel(0, 1); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
299 | coverage.to_next_chunk(); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
300 | }; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
301 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
302 | // 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
|
303 | // or null if not a chunk. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
304 | coverage.chunk_indicator = function (line_elt) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
305 | const classes = line_elt?.className; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
306 | if (!classes) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
307 | return null; |
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 | const match = classes.match(/\bshow_\w+\b/); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
310 | if (!match) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
311 | return null; |
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 | return match[0]; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
314 | }; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
315 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
316 | coverage.to_next_chunk = function () { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
317 | const c = coverage; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
318 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
319 | // Find the start of the next colored chunk. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
320 | var probe = c.sel_end; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
321 | var chunk_indicator, probe_line; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
322 | while (true) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
323 | probe_line = c.line_elt(probe); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
324 | if (!probe_line) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
325 | return; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
326 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
327 | chunk_indicator = c.chunk_indicator(probe_line); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
328 | if (chunk_indicator) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
329 | break; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
330 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
331 | probe++; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
332 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
333 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
334 | // 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
|
335 | var begin = probe; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
336 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
337 | // Find the end of this chunk. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
338 | var next_indicator = chunk_indicator; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
339 | while (next_indicator === chunk_indicator) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
340 | probe++; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
341 | probe_line = c.line_elt(probe); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
342 | next_indicator = c.chunk_indicator(probe_line); |
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 | c.set_sel(begin, probe); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
345 | c.show_selection(); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
346 | }; |
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 | coverage.to_prev_chunk = function () { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
349 | const c = coverage; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
350 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
351 | // Find the end of the prev colored chunk. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
352 | var probe = c.sel_begin-1; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
353 | var probe_line = c.line_elt(probe); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
354 | if (!probe_line) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
355 | return; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
356 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
357 | var chunk_indicator = c.chunk_indicator(probe_line); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
358 | while (probe > 1 && !chunk_indicator) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
359 | probe--; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
360 | probe_line = c.line_elt(probe); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
361 | if (!probe_line) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
362 | return; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
363 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
364 | chunk_indicator = c.chunk_indicator(probe_line); |
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 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
367 | // 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
|
368 | var end = probe+1; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
369 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
370 | // Find the beginning of this chunk. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
371 | var prev_indicator = chunk_indicator; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
372 | while (prev_indicator === chunk_indicator) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
373 | probe--; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
374 | if (probe <= 0) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
375 | return; |
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 | probe_line = c.line_elt(probe); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
378 | prev_indicator = c.chunk_indicator(probe_line); |
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 | c.set_sel(probe+1, end); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
381 | c.show_selection(); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
382 | }; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
383 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
384 | // 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
|
385 | // the screen right now? |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
386 | coverage.selection_ends_on_screen = function () { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
387 | if (coverage.sel_begin === 0) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
388 | return 0; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
389 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
390 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
391 | const begin = coverage.line_elt(coverage.sel_begin); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
392 | 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
|
393 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
394 | return ( |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
395 | (checkVisible(begin) ? 1 : 0) |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
396 | + (checkVisible(end) ? 1 : 0) |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
397 | ); |
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 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
400 | coverage.to_next_chunk_nicely = function () { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
401 | if (coverage.selection_ends_on_screen() === 0) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
402 | // The selection is entirely off the screen: |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
403 | // 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
|
404 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
405 | // 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
|
406 | // 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
|
407 | const line = document.elementFromPoint(0, 0).parentElement; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
408 | if (line.parentElement !== document.getElementById("source")) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
409 | // 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
|
410 | coverage.select_line_or_chunk(1); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
411 | } else { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
412 | // We extract the line number from the id |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
413 | 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
|
414 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
415 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
416 | coverage.to_next_chunk(); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
417 | }; |
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 | coverage.to_prev_chunk_nicely = function () { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
420 | if (coverage.selection_ends_on_screen() === 0) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
421 | // The selection is entirely off the screen: |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
422 | // 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
|
423 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
424 | // 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
|
425 | // 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
|
426 | 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
|
427 | if (line.parentElement !== document.getElementById("source")) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
428 | // 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
|
429 | coverage.select_line_or_chunk(coverage.lines_len); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
430 | } else { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
431 | // We extract the line number from the id |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
432 | 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
|
433 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
434 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
435 | coverage.to_prev_chunk(); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
436 | }; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
437 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
438 | // 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
|
439 | // entire chunk |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
440 | coverage.select_line_or_chunk = function (lineno) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
441 | var c = coverage; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
442 | var probe_line = c.line_elt(lineno); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
443 | if (!probe_line) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
444 | return; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
445 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
446 | var the_indicator = c.chunk_indicator(probe_line); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
447 | if (the_indicator) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
448 | // The line is in a highlighted chunk. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
449 | // Search backward for the first line. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
450 | var probe = lineno; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
451 | var indicator = the_indicator; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
452 | while (probe > 0 && indicator === the_indicator) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
453 | probe--; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
454 | probe_line = c.line_elt(probe); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
455 | if (!probe_line) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
456 | break; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
457 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
458 | indicator = c.chunk_indicator(probe_line); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
459 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
460 | var begin = probe + 1; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
461 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
462 | // Search forward for the last line. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
463 | probe = lineno; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
464 | indicator = the_indicator; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
465 | while (indicator === the_indicator) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
466 | probe++; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
467 | probe_line = c.line_elt(probe); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
468 | indicator = c.chunk_indicator(probe_line); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
469 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
470 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
471 | coverage.set_sel(begin, probe); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
472 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
473 | else { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
474 | coverage.set_sel(lineno); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
475 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
476 | }; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
477 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
478 | coverage.show_selection = function () { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
479 | // Highlight the lines in the chunk |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
480 | 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
|
481 | 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
|
482 | 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
|
483 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
484 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
485 | coverage.scroll_to_selection(); |
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 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
488 | coverage.scroll_to_selection = function () { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
489 | // 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
|
490 | if (coverage.selection_ends_on_screen() < 2) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
491 | const element = coverage.line_elt(coverage.sel_begin); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
492 | coverage.scroll_window(element.offsetTop - 60); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
493 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
494 | }; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
495 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
496 | coverage.scroll_window = function (to_pos) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
497 | window.scroll({top: to_pos, behavior: "smooth"}); |
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.init_scroll_markers = function () { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
501 | // Init some variables |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
502 | coverage.lines_len = document.querySelectorAll('#source > p').length; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
503 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
504 | // Build html |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
505 | coverage.build_scroll_markers(); |
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 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
508 | coverage.build_scroll_markers = function () { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
509 | const temp_scroll_marker = document.getElementById('scroll_marker') |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
510 | if (temp_scroll_marker) temp_scroll_marker.remove(); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
511 | // 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
|
512 | if (document.body.scrollHeight <= window.innerHeight) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
513 | return; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
514 | } |
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 | const marker_scale = window.innerHeight / document.body.scrollHeight; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
517 | 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
|
518 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
519 | let previous_line = -99, last_mark, last_top; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
520 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
521 | const scroll_marker = document.createElement("div"); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
522 | scroll_marker.id = "scroll_marker"; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
523 | document.getElementById('source').querySelectorAll( |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
524 | '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
|
525 | ).forEach(element => { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
526 | 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
|
527 | const line_number = parseInt(element.id.substr(1)); |
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 | if (line_number === previous_line + 1) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
530 | // 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
|
531 | 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
|
532 | } else { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
533 | // Add colored line in scroll_marker block. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
534 | last_mark = document.createElement("div"); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
535 | last_mark.id = `m${line_number}`; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
536 | last_mark.classList.add("marker"); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
537 | last_mark.style.height = `${line_height}px`; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
538 | last_mark.style.top = `${line_top}px`; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
539 | scroll_marker.append(last_mark); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
540 | last_top = line_top; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
541 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
542 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
543 | previous_line = line_number; |
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 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
546 | // Append last to prevent layout calculation |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
547 | document.body.append(scroll_marker); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
548 | }; |
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 | coverage.wire_up_sticky_header = function () { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
551 | const header = document.querySelector('header'); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
552 | const header_bottom = ( |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
553 | header.querySelector('.content h2').getBoundingClientRect().top - |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
554 | header.getBoundingClientRect().top |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
555 | ); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
556 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
557 | function updateHeader() { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
558 | if (window.scrollY > header_bottom) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
559 | header.classList.add('sticky'); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
560 | } else { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
561 | header.classList.remove('sticky'); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
562 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
563 | } |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
564 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
565 | window.addEventListener('scroll', updateHeader); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
566 | updateHeader(); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
567 | }; |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
568 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
569 | document.addEventListener("DOMContentLoaded", () => { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
570 | if (document.body.classList.contains("indexfile")) { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
571 | coverage.index_ready(); |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
572 | } else { |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
573 | coverage.pyfile_ready(); |
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 | }); |