Sat, 12 Apr 2014 16:57:18 +0200
Modified the Python2 coverage files to include the Python2 eflags line and fixed an issue in both variants.
31
744cd0b4b8cd
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1 | // Coverage.py HTML report browser code. |
3497
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
2 | /*jslint browser: true, sloppy: true, vars: true, plusplus: true, maxerr: 50, indent: 4 */ |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
3 | /*global coverage: true, document, window, $ */ |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
4 | |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
5 | coverage = {}; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
6 | |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
7 | // Find all the elements with shortkey_* class, and use them to assign a shotrtcut key. |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
8 | coverage.assign_shortkeys = function () { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
9 | $("*[class*='shortkey_']").each(function (i, e) { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
10 | $.each($(e).attr("class").split(" "), function (i, c) { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
11 | if (/^shortkey_/.test(c)) { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
12 | $(document).bind('keydown', c.substr(9), function () { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
13 | $(e).click(); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
14 | }); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
15 | } |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
16 | }); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
17 | }); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
18 | }; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
19 | |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
20 | // Create the events for the help panel. |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
21 | coverage.wire_up_help_panel = function () { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
22 | $("#keyboard_icon").click(function () { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
23 | // Show the help panel, and position it so the keyboard icon in the |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
24 | // panel is in the same place as the keyboard icon in the header. |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
25 | $(".help_panel").show(); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
26 | var koff = $("#keyboard_icon").offset(); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
27 | var poff = $("#panel_icon").position(); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
28 | $(".help_panel").offset({ |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
29 | top: koff.top-poff.top, |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
30 | left: koff.left-poff.left |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
31 | }); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
32 | }); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
33 | $("#panel_icon").click(function () { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
34 | $(".help_panel").hide(); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
35 | }); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
36 | }; |
31
744cd0b4b8cd
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37 | |
744cd0b4b8cd
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
38 | // Loaded on index.html |
3497
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
39 | coverage.index_ready = function ($) { |
31
744cd0b4b8cd
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40 | // Look for a cookie containing previous sort settings: |
3497
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
41 | var sort_list = []; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
42 | var cookie_name = "COVERAGE_INDEX_SORT"; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
43 | var i; |
31
744cd0b4b8cd
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44 | |
744cd0b4b8cd
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
45 | // This almost makes it worth installing the jQuery cookie plugin: |
744cd0b4b8cd
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46 | if (document.cookie.indexOf(cookie_name) > -1) { |
3497
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
47 | var cookies = document.cookie.split(";"); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
48 | for (i = 0; i < cookies.length; i++) { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
49 | var parts = cookies[i].split("="); |
31
744cd0b4b8cd
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
50 | |
3497
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
51 | if ($.trim(parts[0]) === cookie_name && parts[1]) { |
31
744cd0b4b8cd
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
52 | sort_list = eval("[[" + parts[1] + "]]"); |
744cd0b4b8cd
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
53 | break; |
744cd0b4b8cd
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
54 | } |
744cd0b4b8cd
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
55 | } |
744cd0b4b8cd
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
56 | } |
744cd0b4b8cd
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
57 | |
744cd0b4b8cd
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
58 | // Create a new widget which exists only to save and restore |
744cd0b4b8cd
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
59 | // the sort order: |
744cd0b4b8cd
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60 | $.tablesorter.addWidget({ |
744cd0b4b8cd
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61 | id: "persistentSort", |
744cd0b4b8cd
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
62 | |
744cd0b4b8cd
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
63 | // Format is called by the widget before displaying: |
3497
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
64 | format: function (table) { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
65 | if (table.config.sortList.length === 0 && sort_list.length > 0) { |
31
744cd0b4b8cd
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
66 | // This table hasn't been sorted before - we'll use |
744cd0b4b8cd
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
67 | // our stored settings: |
3497
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
68 | $(table).trigger('sorton', [sort_list]); |
31
744cd0b4b8cd
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
69 | } |
744cd0b4b8cd
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
70 | else { |
744cd0b4b8cd
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
71 | // This is not the first load - something has |
3497
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
72 | // already defined sorting so we'll just update |
31
744cd0b4b8cd
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
73 | // our stored value to match: |
744cd0b4b8cd
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
74 | sort_list = table.config.sortList; |
744cd0b4b8cd
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
75 | } |
744cd0b4b8cd
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
76 | } |
744cd0b4b8cd
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
77 | }); |
744cd0b4b8cd
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
78 | |
744cd0b4b8cd
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
79 | // Configure our tablesorter to handle the variable number of |
744cd0b4b8cd
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
80 | // columns produced depending on report options: |
3497
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
81 | var headers = []; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
82 | var col_count = $("table.index > thead > tr > th").length; |
31
744cd0b4b8cd
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
83 | |
744cd0b4b8cd
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
84 | headers[0] = { sorter: 'text' }; |
3497
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
85 | for (i = 1; i < col_count-1; i++) { |
31
744cd0b4b8cd
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
86 | headers[i] = { sorter: 'digit' }; |
744cd0b4b8cd
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
87 | } |
744cd0b4b8cd
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
88 | headers[col_count-1] = { sorter: 'percent' }; |
744cd0b4b8cd
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
89 | |
744cd0b4b8cd
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
90 | // Enable the table sorter: |
744cd0b4b8cd
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
91 | $("table.index").tablesorter({ |
744cd0b4b8cd
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
92 | widgets: ['persistentSort'], |
744cd0b4b8cd
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
93 | headers: headers |
744cd0b4b8cd
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
94 | }); |
744cd0b4b8cd
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
95 | |
3497
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
96 | coverage.assign_shortkeys(); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
97 | coverage.wire_up_help_panel(); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
98 | |
31
744cd0b4b8cd
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
99 | // Watch for page unload events so we can save the final sort settings: |
3497
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
100 | $(window).unload(function () { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
101 | document.cookie = cookie_name + "=" + sort_list.toString() + "; path=/"; |
31
744cd0b4b8cd
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
102 | }); |
3497
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
103 | }; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
104 | |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
105 | // -- pyfile stuff -- |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
106 | |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
107 | coverage.pyfile_ready = function ($) { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
108 | // If we're directed to a particular line number, highlight the line. |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
109 | var frag = location.hash; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
110 | if (frag.length > 2 && frag[1] === 'n') { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
111 | $(frag).addClass('highlight'); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
112 | coverage.set_sel(parseInt(frag.substr(2), 10)); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
113 | } |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
114 | else { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
115 | coverage.set_sel(0); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
116 | } |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
117 | |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
118 | $(document) |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
119 | .bind('keydown', 'j', coverage.to_next_chunk_nicely) |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
120 | .bind('keydown', 'k', coverage.to_prev_chunk_nicely) |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
121 | .bind('keydown', '0', coverage.to_top) |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
122 | .bind('keydown', '1', coverage.to_first_chunk) |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
123 | ; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
124 | |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
125 | $(".button_toggle_run").click(function (evt) {coverage.toggle_lines(evt.target, "run");}); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
126 | $(".button_toggle_exc").click(function (evt) {coverage.toggle_lines(evt.target, "exc");}); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
127 | $(".button_toggle_mis").click(function (evt) {coverage.toggle_lines(evt.target, "mis");}); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
128 | $(".button_toggle_par").click(function (evt) {coverage.toggle_lines(evt.target, "par");}); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
129 | |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
130 | coverage.assign_shortkeys(); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
131 | coverage.wire_up_help_panel(); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
132 | }; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
133 | |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
134 | coverage.toggle_lines = function (btn, cls) { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
135 | btn = $(btn); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
136 | var hide = "hide_"+cls; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
137 | if (btn.hasClass(hide)) { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
138 | $("#source ."+cls).removeClass(hide); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
139 | btn.removeClass(hide); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
140 | } |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
141 | else { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
142 | $("#source ."+cls).addClass(hide); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
143 | btn.addClass(hide); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
144 | } |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
145 | }; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
146 | |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
147 | // Return the nth line div. |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
148 | coverage.line_elt = function (n) { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
149 | return $("#t" + n); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
150 | }; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
151 | |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
152 | // Return the nth line number div. |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
153 | coverage.num_elt = function (n) { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
154 | return $("#n" + n); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
155 | }; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
156 | |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
157 | // Return the container of all the code. |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
158 | coverage.code_container = function () { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
159 | return $(".linenos"); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
160 | }; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
161 | |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
162 | // Set the selection. b and e are line numbers. |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
163 | coverage.set_sel = function (b, e) { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
164 | // The first line selected. |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
165 | coverage.sel_begin = b; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
166 | // The next line not selected. |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
167 | coverage.sel_end = (e === undefined) ? b+1 : e; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
168 | }; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
169 | |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
170 | coverage.to_top = function () { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
171 | coverage.set_sel(0, 1); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
172 | coverage.scroll_window(0); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
173 | }; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
174 | |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
175 | coverage.to_first_chunk = function () { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
176 | coverage.set_sel(0, 1); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
177 | coverage.to_next_chunk(); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
178 | }; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
179 | |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
180 | coverage.is_transparent = function (color) { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
181 | // Different browsers return different colors for "none". |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
182 | return color === "transparent" || color === "rgba(0, 0, 0, 0)"; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
183 | }; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
184 | |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
185 | coverage.to_next_chunk = function () { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
186 | var c = coverage; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
187 | |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
188 | // Find the start of the next colored chunk. |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
189 | var probe = c.sel_end; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
190 | while (true) { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
191 | var probe_line = c.line_elt(probe); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
192 | if (probe_line.length === 0) { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
193 | return; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
194 | } |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
195 | var color = probe_line.css("background-color"); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
196 | if (!c.is_transparent(color)) { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
197 | break; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
198 | } |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
199 | probe++; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
200 | } |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
201 | |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
202 | // There's a next chunk, `probe` points to it. |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
203 | var begin = probe; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
204 | |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
205 | // Find the end of this chunk. |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
206 | var next_color = color; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
207 | while (next_color === color) { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
208 | probe++; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
209 | probe_line = c.line_elt(probe); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
210 | next_color = probe_line.css("background-color"); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
211 | } |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
212 | c.set_sel(begin, probe); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
213 | c.show_selection(); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
214 | }; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
215 | |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
216 | coverage.to_prev_chunk = function () { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
217 | var c = coverage; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
218 | |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
219 | // Find the end of the prev colored chunk. |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
220 | var probe = c.sel_begin-1; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
221 | var probe_line = c.line_elt(probe); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
222 | if (probe_line.length === 0) { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
223 | return; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
224 | } |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
225 | var color = probe_line.css("background-color"); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
226 | while (probe > 0 && c.is_transparent(color)) { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
227 | probe--; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
228 | probe_line = c.line_elt(probe); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
229 | if (probe_line.length === 0) { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
230 | return; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
231 | } |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
232 | color = probe_line.css("background-color"); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
233 | } |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
234 | |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
235 | // There's a prev chunk, `probe` points to its last line. |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
236 | var end = probe+1; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
237 | |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
238 | // Find the beginning of this chunk. |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
239 | var prev_color = color; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
240 | while (prev_color === color) { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
241 | probe--; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
242 | probe_line = c.line_elt(probe); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
243 | prev_color = probe_line.css("background-color"); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
244 | } |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
245 | c.set_sel(probe+1, end); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
246 | c.show_selection(); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
247 | }; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
248 | |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
249 | // Return the line number of the line nearest pixel position pos |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
250 | coverage.line_at_pos = function (pos) { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
251 | var l1 = coverage.line_elt(1), |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
252 | l2 = coverage.line_elt(2), |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
253 | result; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
254 | if (l1.length && l2.length) { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
255 | var l1_top = l1.offset().top, |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
256 | line_height = l2.offset().top - l1_top, |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
257 | nlines = (pos - l1_top) / line_height; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
258 | if (nlines < 1) { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
259 | result = 1; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
260 | } |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
261 | else { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
262 | result = Math.ceil(nlines); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
263 | } |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
264 | } |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
265 | else { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
266 | result = 1; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
267 | } |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
268 | return result; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
269 | }; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
270 | |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
271 | // Returns 0, 1, or 2: how many of the two ends of the selection are on |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
272 | // the screen right now? |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
273 | coverage.selection_ends_on_screen = function () { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
274 | if (coverage.sel_begin === 0) { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
275 | return 0; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
276 | } |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
277 | |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
278 | var top = coverage.line_elt(coverage.sel_begin); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
279 | var next = coverage.line_elt(coverage.sel_end-1); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
280 | |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
281 | return ( |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
282 | (top.isOnScreen() ? 1 : 0) + |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
283 | (next.isOnScreen() ? 1 : 0) |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
284 | ); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
285 | }; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
286 | |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
287 | coverage.to_next_chunk_nicely = function () { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
288 | coverage.finish_scrolling(); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
289 | if (coverage.selection_ends_on_screen() === 0) { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
290 | // The selection is entirely off the screen: select the top line on |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
291 | // the screen. |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
292 | var win = $(window); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
293 | coverage.select_line_or_chunk(coverage.line_at_pos(win.scrollTop())); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
294 | } |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
295 | coverage.to_next_chunk(); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
296 | }; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
297 | |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
298 | coverage.to_prev_chunk_nicely = function () { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
299 | coverage.finish_scrolling(); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
300 | if (coverage.selection_ends_on_screen() === 0) { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
301 | var win = $(window); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
302 | coverage.select_line_or_chunk(coverage.line_at_pos(win.scrollTop() + win.height())); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
303 | } |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
304 | coverage.to_prev_chunk(); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
305 | }; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
306 | |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
307 | // Select line number lineno, or if it is in a colored chunk, select the |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
308 | // entire chunk |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
309 | coverage.select_line_or_chunk = function (lineno) { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
310 | var c = coverage; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
311 | var probe_line = c.line_elt(lineno); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
312 | if (probe_line.length === 0) { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
313 | return; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
314 | } |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
315 | var the_color = probe_line.css("background-color"); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
316 | if (!c.is_transparent(the_color)) { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
317 | // The line is in a highlighted chunk. |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
318 | // Search backward for the first line. |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
319 | var probe = lineno; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
320 | var color = the_color; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
321 | while (probe > 0 && color === the_color) { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
322 | probe--; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
323 | probe_line = c.line_elt(probe); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
324 | if (probe_line.length === 0) { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
325 | break; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
326 | } |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
327 | color = probe_line.css("background-color"); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
328 | } |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
329 | var begin = probe + 1; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
330 | |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
331 | // Search forward for the last line. |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
332 | probe = lineno; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
333 | color = the_color; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
334 | while (color === the_color) { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
335 | probe++; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
336 | probe_line = c.line_elt(probe); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
337 | color = probe_line.css("background-color"); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
338 | } |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
339 | |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
340 | coverage.set_sel(begin, probe); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
341 | } |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
342 | else { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
343 | coverage.set_sel(lineno); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
344 | } |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
345 | }; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
346 | |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
347 | coverage.show_selection = function () { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
348 | var c = coverage; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
349 | |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
350 | // Highlight the lines in the chunk |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
351 | c.code_container().find(".highlight").removeClass("highlight"); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
352 | for (var probe = c.sel_begin; probe > 0 && probe < c.sel_end; probe++) { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
353 | c.num_elt(probe).addClass("highlight"); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
354 | } |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
355 | |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
356 | c.scroll_to_selection(); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
357 | }; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
358 | |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
359 | coverage.scroll_to_selection = function () { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
360 | // Scroll the page if the chunk isn't fully visible. |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
361 | if (coverage.selection_ends_on_screen() < 2) { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
362 | // Need to move the page. The html,body trick makes it scroll in all |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
363 | // browsers, got it from http://stackoverflow.com/questions/3042651 |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
364 | var top = coverage.line_elt(coverage.sel_begin); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
365 | var top_pos = parseInt(top.offset().top, 10); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
366 | coverage.scroll_window(top_pos - 30); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
367 | } |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
368 | }; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
369 | |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
370 | coverage.scroll_window = function (to_pos) { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
371 | $("html,body").animate({scrollTop: to_pos}, 200); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
372 | }; |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
373 | |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
374 | coverage.finish_scrolling = function () { |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
375 | $("html,body").stop(true, true); |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
31
diff
changeset
|
376 | }; |