Fossil SCM
Rearrange the JavaScript code as a handler of the 'load' event; this keeps the global scope clean from the supplementary variables.
Commit
ec55e51c44b8e23deff36a319d45b49ae6fa0fa87fca9dc6d598693e6882a541
Parent
0e31c8d25896220…
1 file changed
+30
-28
+30
-28
| --- src/fossil.page.whistory.js | ||
| +++ src/fossil.page.whistory.js | ||
| @@ -7,10 +7,12 @@ | ||
| 7 | 7 | * |
| 8 | 8 | * For the sake of compatibility with ascetic browsers the code tries |
| 9 | 9 | * to avoid modern API and ECMAScript constructs. This makes it less |
| 10 | 10 | * readable and may be reconsidered in the future. |
| 11 | 11 | */ |
| 12 | +window.addEventListener( 'load', function() { | |
| 13 | + | |
| 12 | 14 | document.getElementById("wh-form").method = "GET"; |
| 13 | 15 | |
| 14 | 16 | var wh_id = document.getElementById("wh-id" ); |
| 15 | 17 | var wh_pid = document.getElementById("wh-pid"); |
| 16 | 18 | var wh_cleaner = document.getElementById("wh-cleaner"); |
| @@ -18,21 +20,21 @@ | ||
| 18 | 20 | |
| 19 | 21 | var wh_radios = []; // user-visible controls for baseline selection |
| 20 | 22 | var wh_hidden = 0; // current number of hidden (collapsed) rows |
| 21 | 23 | var wh_selected = -1; // index of the currently selected radio-button |
| 22 | 24 | |
| 23 | -function wh_onRadio( event ){ | |
| 25 | +var wh_onRadio = function( event ){ | |
| 24 | 26 | |
| 25 | 27 | var indx = event.target.indx; |
| 26 | 28 | if( wh_selected == indx ){ |
| 27 | 29 | |
| 28 | 30 | wh_selected = -1; |
| 29 | 31 | event.target.checked = false; |
| 30 | 32 | } |
| 31 | 33 | else wh_selected = indx; |
| 32 | 34 | } |
| 33 | -function wh_onDifflink( event ){ | |
| 35 | +var wh_onDifflink = function( event ){ | |
| 34 | 36 | |
| 35 | 37 | event.preventDefault(); |
| 36 | 38 | var indx = event.target.indx; |
| 37 | 39 | wh_id.value = wh_radios[indx].value; |
| 38 | 40 | |
| @@ -72,19 +74,19 @@ | ||
| 72 | 74 | } |
| 73 | 75 | else wh_pid.checked = false; |
| 74 | 76 | |
| 75 | 77 | document.getElementById("wh-form").submit(); |
| 76 | 78 | } |
| 77 | -function wh_onCleaner() { | |
| 79 | +var wh_onCleaner = function() { | |
| 78 | 80 | |
| 79 | 81 | if( wh_selected >= 0 ) { |
| 80 | 82 | |
| 81 | 83 | wh_radios[wh_selected].checked = false; |
| 82 | 84 | wh_selected = -1; |
| 83 | 85 | } |
| 84 | 86 | } |
| 85 | -function wh_onCollapser( event ) { | |
| 87 | +var wh_onCollapser = function( event ){ | |
| 86 | 88 | |
| 87 | 89 | var collapsing = ( wh_hidden == 0 ); |
| 88 | 90 | for( var k = 0; k < wh_radios.length; k++ ){ |
| 89 | 91 | |
| 90 | 92 | var radio = wh_radios[k]; |
| @@ -108,52 +110,52 @@ | ||
| 108 | 110 | |
| 109 | 111 | wh_collapser.title="Hide intermediate edits"; |
| 110 | 112 | wh_collapser.innerHTML = " ♲" |
| 111 | 113 | } |
| 112 | 114 | } |
| 113 | -(function wh_Init(){ | |
| 114 | 115 | |
| 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++ ) { | |
| 117 | 118 | |
| 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" ) { | |
| 120 | 121 | |
| 121 | 122 | wh_radios.push( r ); |
| 122 | 123 | r.indx = indx++; |
| 123 | 124 | r.addEventListener( "click", wh_onRadio ); |
| 124 | 125 | r.disabled = false; |
| 125 | 126 | var td = r.parentElement.nextElementSibling; |
| 126 | 127 | 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-- ) { | |
| 130 | 131 | |
| 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" ) | |
| 133 | 134 | |
| 134 | 135 | edits++; |
| 135 | 136 | |
| 136 | - else if( edits > 0 ){ | |
| 137 | + else if( edits > 0 ){ | |
| 137 | 138 | |
| 138 | 139 | var span = td.getElementsByTagName("span")[0]; |
| 139 | 140 | span.innerHTML = " ♲" + edits; |
| 140 | 141 | wh_radios[k].iterspan = span; |
| 141 | 142 | edits = 0; |
| 142 | 143 | // also: ∪ (union) Σ (sigma) × (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++ ) { | |
| 147 | 148 | |
| 148 | - var l = links[i]; | |
| 149 | - if( l.className == "wh-difflink" ){ | |
| 149 | + var l = links[i]; | |
| 150 | + if( l.className == "wh-difflink" ){ | |
| 150 | 151 | |
| 151 | 152 | l.indx = indx++; |
| 152 | 153 | 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' ... | |
| 160 | 162 |
| --- 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 = " ♲" |
| 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 = " ♲" + edits; |
| 140 | wh_radios[k].iterspan = span; |
| 141 | edits = 0; |
| 142 | // also: ∪ (union) Σ (sigma) × (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 = " ♲" |
| 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 = " ♲" + edits; |
| 141 | wh_radios[k].iterspan = span; |
| 142 | edits = 0; |
| 143 | // also: ∪ (union) Σ (sigma) × (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 |