Fossil SCM

Rearrange the JavaScript code as a handler of the 'load' event; this keeps the global scope clean from the supplementary variables.

george 2021-02-25 14:15 wiki-history
Commit ec55e51c44b8e23deff36a319d45b49ae6fa0fa87fca9dc6d598693e6882a541
1 file changed +30 -28
--- src/fossil.page.whistory.js
+++ src/fossil.page.whistory.js
@@ -7,10 +7,12 @@
77
*
88
* For the sake of compatibility with ascetic browsers the code tries
99
* to avoid modern API and ECMAScript constructs. This makes it less
1010
* readable and may be reconsidered in the future.
1111
*/
12
+window.addEventListener( 'load', function() {
13
+
1214
document.getElementById("wh-form").method = "GET";
1315
1416
var wh_id = document.getElementById("wh-id" );
1517
var wh_pid = document.getElementById("wh-pid");
1618
var wh_cleaner = document.getElementById("wh-cleaner");
@@ -18,21 +20,21 @@
1820
1921
var wh_radios = []; // user-visible controls for baseline selection
2022
var wh_hidden = 0; // current number of hidden (collapsed) rows
2123
var wh_selected = -1; // index of the currently selected radio-button
2224
23
-function wh_onRadio( event ){
25
+var wh_onRadio = function( event ){
2426
2527
var indx = event.target.indx;
2628
if( wh_selected == indx ){
2729
2830
wh_selected = -1;
2931
event.target.checked = false;
3032
}
3133
else wh_selected = indx;
3234
}
33
-function wh_onDifflink( event ){
35
+var wh_onDifflink = function( event ){
3436
3537
event.preventDefault();
3638
var indx = event.target.indx;
3739
wh_id.value = wh_radios[indx].value;
3840
@@ -72,19 +74,19 @@
7274
}
7375
else wh_pid.checked = false;
7476
7577
document.getElementById("wh-form").submit();
7678
}
77
-function wh_onCleaner() {
79
+var wh_onCleaner = function() {
7880
7981
if( wh_selected >= 0 ) {
8082
8183
wh_radios[wh_selected].checked = false;
8284
wh_selected = -1;
8385
}
8486
}
85
-function wh_onCollapser( event ) {
87
+var wh_onCollapser = function( event ){
8688
8789
var collapsing = ( wh_hidden == 0 );
8890
for( var k = 0; k < wh_radios.length; k++ ){
8991
9092
var radio = wh_radios[k];
@@ -108,52 +110,52 @@
108110
109111
wh_collapser.title="Hide intermediate edits";
110112
wh_collapser.innerHTML = "&emsp;&#9842;"
111113
}
112114
}
113
-(function wh_Init(){
114115
115
- var inputs = document.getElementsByTagName("input");
116
- for( var k = 0, indx = 0; k < inputs.length; k++ ) {
116
+var inputs = document.getElementsByTagName("input");
117
+for( var k = 0, indx = 0; k < inputs.length; k++ ) {
117118
118
- var r = inputs[k];
119
- if( r.type == "radio" && r.name == "baseline" ) {
119
+ var r = inputs[k];
120
+ if( r.type == "radio" && r.name == "baseline" ) {
120121
121122
wh_radios.push( r );
122123
r.indx = indx++;
123124
r.addEventListener( "click", wh_onRadio );
124125
r.disabled = false;
125126
var td = r.parentElement.nextElementSibling;
126127
r.iterspan = td.getElementsByTagName("span")[0];
127
- }
128
- }
129
- for( var edits = 0, k = wh_radios.length - 1; k >= 0; k-- ) {
128
+ }
129
+}
130
+for( var edits = 0, k = wh_radios.length - 1; k >= 0; k-- ) {
130131
131
- var td = wh_radios[k].parentElement.nextElementSibling;
132
- if( td.parentElement.className == "wh-intermediate" )
132
+ var td = wh_radios[k].parentElement.nextElementSibling;
133
+ if( td.parentElement.className == "wh-intermediate" )
133134
134135
edits++;
135136
136
- else if( edits > 0 ){
137
+ else if( edits > 0 ){
137138
138139
var span = td.getElementsByTagName("span")[0];
139140
span.innerHTML = "&ensp;&#9842;" + edits;
140141
wh_radios[k].iterspan = span;
141142
edits = 0;
142143
// also: &#8746; (union) &#931; (sigma) &#215; (times)
143
- }
144
- }
145
- var links = document.getElementsByTagName("a");
146
- for( var i = 0, indx = 0; i < links.length; i++ ) {
144
+ }
145
+}
146
+var links = document.getElementsByTagName("a");
147
+for( var i = 0, indx = 0; i < links.length; i++ ) {
147148
148
- var l = links[i];
149
- if( l.className == "wh-difflink" ){
149
+ var l = links[i];
150
+ if( l.className == "wh-difflink" ){
150151
151152
l.indx = indx++;
152153
l.addEventListener( "click", wh_onDifflink );
153
- }
154
- }
155
- wh_cleaner.addEventListener( "click", wh_onCleaner );
156
- wh_collapser.addEventListener( "click", wh_onCollapser );
157
- wh_collapser.title="Hide intermediate edits";
158
- wh_collapser.hidden = false;
159
-})();
154
+ }
155
+}
156
+wh_cleaner.addEventListener( "click", wh_onCleaner );
157
+wh_collapser.addEventListener( "click", wh_onCollapser );
158
+wh_collapser.title="Hide intermediate edits";
159
+wh_collapser.hidden = false;
160
+
161
+}); // window.addEventListener( 'load' ...
160162
--- src/fossil.page.whistory.js
+++ src/fossil.page.whistory.js
@@ -7,10 +7,12 @@
7 *
8 * For the sake of compatibility with ascetic browsers the code tries
9 * to avoid modern API and ECMAScript constructs. This makes it less
10 * readable and may be reconsidered in the future.
11 */
 
 
12 document.getElementById("wh-form").method = "GET";
13
14 var wh_id = document.getElementById("wh-id" );
15 var wh_pid = document.getElementById("wh-pid");
16 var wh_cleaner = document.getElementById("wh-cleaner");
@@ -18,21 +20,21 @@
18
19 var wh_radios = []; // user-visible controls for baseline selection
20 var wh_hidden = 0; // current number of hidden (collapsed) rows
21 var wh_selected = -1; // index of the currently selected radio-button
22
23 function wh_onRadio( event ){
24
25 var indx = event.target.indx;
26 if( wh_selected == indx ){
27
28 wh_selected = -1;
29 event.target.checked = false;
30 }
31 else wh_selected = indx;
32 }
33 function wh_onDifflink( event ){
34
35 event.preventDefault();
36 var indx = event.target.indx;
37 wh_id.value = wh_radios[indx].value;
38
@@ -72,19 +74,19 @@
72 }
73 else wh_pid.checked = false;
74
75 document.getElementById("wh-form").submit();
76 }
77 function wh_onCleaner() {
78
79 if( wh_selected >= 0 ) {
80
81 wh_radios[wh_selected].checked = false;
82 wh_selected = -1;
83 }
84 }
85 function wh_onCollapser( event ) {
86
87 var collapsing = ( wh_hidden == 0 );
88 for( var k = 0; k < wh_radios.length; k++ ){
89
90 var radio = wh_radios[k];
@@ -108,52 +110,52 @@
108
109 wh_collapser.title="Hide intermediate edits";
110 wh_collapser.innerHTML = "&emsp;&#9842;"
111 }
112 }
113 (function wh_Init(){
114
115 var inputs = document.getElementsByTagName("input");
116 for( var k = 0, indx = 0; k < inputs.length; k++ ) {
117
118 var r = inputs[k];
119 if( r.type == "radio" && r.name == "baseline" ) {
120
121 wh_radios.push( r );
122 r.indx = indx++;
123 r.addEventListener( "click", wh_onRadio );
124 r.disabled = false;
125 var td = r.parentElement.nextElementSibling;
126 r.iterspan = td.getElementsByTagName("span")[0];
127 }
128 }
129 for( var edits = 0, k = wh_radios.length - 1; k >= 0; k-- ) {
130
131 var td = wh_radios[k].parentElement.nextElementSibling;
132 if( td.parentElement.className == "wh-intermediate" )
133
134 edits++;
135
136 else if( edits > 0 ){
137
138 var span = td.getElementsByTagName("span")[0];
139 span.innerHTML = "&ensp;&#9842;" + edits;
140 wh_radios[k].iterspan = span;
141 edits = 0;
142 // also: &#8746; (union) &#931; (sigma) &#215; (times)
143 }
144 }
145 var links = document.getElementsByTagName("a");
146 for( var i = 0, indx = 0; i < links.length; i++ ) {
147
148 var l = links[i];
149 if( l.className == "wh-difflink" ){
150
151 l.indx = indx++;
152 l.addEventListener( "click", wh_onDifflink );
153 }
154 }
155 wh_cleaner.addEventListener( "click", wh_onCleaner );
156 wh_collapser.addEventListener( "click", wh_onCollapser );
157 wh_collapser.title="Hide intermediate edits";
158 wh_collapser.hidden = false;
159 })();
 
160
--- src/fossil.page.whistory.js
+++ src/fossil.page.whistory.js
@@ -7,10 +7,12 @@
7 *
8 * For the sake of compatibility with ascetic browsers the code tries
9 * to avoid modern API and ECMAScript constructs. This makes it less
10 * readable and may be reconsidered in the future.
11 */
12 window.addEventListener( 'load', function() {
13
14 document.getElementById("wh-form").method = "GET";
15
16 var wh_id = document.getElementById("wh-id" );
17 var wh_pid = document.getElementById("wh-pid");
18 var wh_cleaner = document.getElementById("wh-cleaner");
@@ -18,21 +20,21 @@
20
21 var wh_radios = []; // user-visible controls for baseline selection
22 var wh_hidden = 0; // current number of hidden (collapsed) rows
23 var wh_selected = -1; // index of the currently selected radio-button
24
25 var wh_onRadio = function( event ){
26
27 var indx = event.target.indx;
28 if( wh_selected == indx ){
29
30 wh_selected = -1;
31 event.target.checked = false;
32 }
33 else wh_selected = indx;
34 }
35 var wh_onDifflink = function( event ){
36
37 event.preventDefault();
38 var indx = event.target.indx;
39 wh_id.value = wh_radios[indx].value;
40
@@ -72,19 +74,19 @@
74 }
75 else wh_pid.checked = false;
76
77 document.getElementById("wh-form").submit();
78 }
79 var wh_onCleaner = function() {
80
81 if( wh_selected >= 0 ) {
82
83 wh_radios[wh_selected].checked = false;
84 wh_selected = -1;
85 }
86 }
87 var wh_onCollapser = function( event ){
88
89 var collapsing = ( wh_hidden == 0 );
90 for( var k = 0; k < wh_radios.length; k++ ){
91
92 var radio = wh_radios[k];
@@ -108,52 +110,52 @@
110
111 wh_collapser.title="Hide intermediate edits";
112 wh_collapser.innerHTML = "&emsp;&#9842;"
113 }
114 }
 
115
116 var inputs = document.getElementsByTagName("input");
117 for( var k = 0, indx = 0; k < inputs.length; k++ ) {
118
119 var r = inputs[k];
120 if( r.type == "radio" && r.name == "baseline" ) {
121
122 wh_radios.push( r );
123 r.indx = indx++;
124 r.addEventListener( "click", wh_onRadio );
125 r.disabled = false;
126 var td = r.parentElement.nextElementSibling;
127 r.iterspan = td.getElementsByTagName("span")[0];
128 }
129 }
130 for( var edits = 0, k = wh_radios.length - 1; k >= 0; k-- ) {
131
132 var td = wh_radios[k].parentElement.nextElementSibling;
133 if( td.parentElement.className == "wh-intermediate" )
134
135 edits++;
136
137 else if( edits > 0 ){
138
139 var span = td.getElementsByTagName("span")[0];
140 span.innerHTML = "&ensp;&#9842;" + edits;
141 wh_radios[k].iterspan = span;
142 edits = 0;
143 // also: &#8746; (union) &#931; (sigma) &#215; (times)
144 }
145 }
146 var links = document.getElementsByTagName("a");
147 for( var i = 0, indx = 0; i < links.length; i++ ) {
148
149 var l = links[i];
150 if( l.className == "wh-difflink" ){
151
152 l.indx = indx++;
153 l.addEventListener( "click", wh_onDifflink );
154 }
155 }
156 wh_cleaner.addEventListener( "click", wh_onCleaner );
157 wh_collapser.addEventListener( "click", wh_onCollapser );
158 wh_collapser.title="Hide intermediate edits";
159 wh_collapser.hidden = false;
160
161 }); // window.addEventListener( 'load' ...
162

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button