Fossil SCM
Minor code readability tweaks, nothing functional.
Commit
f73f1e36adc6685fb4413202939f8731bbb8139968dbf28a399c59d1a05bd8ef
Parent
7ddd2781a0b568d…
1 file changed
+21
-12
+21
-12
| --- src/fossil.page.pikchrshow.js | ||
| +++ src/fossil.page.pikchrshow.js | ||
| @@ -32,30 +32,34 @@ | ||
| 32 | 32 | btnTogglePreviewMode: D.button("Preview mode"), |
| 33 | 33 | selectMarkupAlignment: D.select() |
| 34 | 34 | }; |
| 35 | 35 | D.append(P.e.uiControls, P.e.btnTogglePreviewMode); |
| 36 | 36 | |
| 37 | + //////////////////////////////////////////////////////////// | |
| 37 | 38 | // Setup markup alignment selection... |
| 38 | 39 | D.append(P.e.uiControls, P.e.selectMarkupAlignment); |
| 39 | 40 | D.disable(D.option(P.e.selectMarkupAlignment, '', 'Markup Alignment')); |
| 40 | 41 | ['left', 'center'].forEach(function(val,ndx){ |
| 41 | 42 | D.option(P.e.selectMarkupAlignment, ndx ? val : '', val); |
| 42 | 43 | }); |
| 43 | 44 | |
| 45 | + //////////////////////////////////////////////////////////// | |
| 44 | 46 | // Setup clipboard-copy of markup/SVG... |
| 45 | 47 | F.copyButton(P.e.btnCopy, {copyFromElement: P.e.taPreviewText}); |
| 46 | 48 | P.e.btnCopy.addEventListener('text-copied',function(ev){ |
| 47 | 49 | D.flashOnce(ev.target); |
| 48 | 50 | },false); |
| 49 | 51 | |
| 52 | + //////////////////////////////////////////////////////////// | |
| 50 | 53 | // Set up dark mode simulator... |
| 51 | 54 | P.e.cbDarkMode.addEventListener('change', function(ev){ |
| 52 | 55 | if(ev.target.checked) D.addClass(P.e.previewTarget, 'dark-mode'); |
| 53 | 56 | else D.removeClass(P.e.previewTarget, 'dark-mode'); |
| 54 | 57 | }, false); |
| 55 | 58 | if(P.e.cbDarkMode.checked) D.addClass(P.e.previewTarget, 'dark-mode'); |
| 56 | 59 | |
| 60 | + //////////////////////////////////////////////////////////// | |
| 57 | 61 | // Set up preview update and preview mode toggle... |
| 58 | 62 | P.e.btnSubmit.addEventListener('click', ()=>P.preview(), false); |
| 59 | 63 | P.e.btnTogglePreviewMode.addEventListener('click', function(){ |
| 60 | 64 | /* Rotate through the 4 available preview modes */ |
| 61 | 65 | P.previewMode = ++P.previewMode % 4; |
| @@ -66,10 +70,11 @@ | ||
| 66 | 70 | if(P.previewMode==1 || P.previewMode==2){ |
| 67 | 71 | P.renderPreview(); |
| 68 | 72 | } |
| 69 | 73 | }, false); |
| 70 | 74 | |
| 75 | + //////////////////////////////////////////////////////////// | |
| 71 | 76 | // Set up selection list of predefined scripts... |
| 72 | 77 | if(true){ |
| 73 | 78 | const selectScript = P.e.selectScript = D.select(), |
| 74 | 79 | cbAutoPreview = P.e.cbAutoPreview = |
| 75 | 80 | D.attr(D.checkbox(),'id', 'cb-auto-preview','checked',true), |
| @@ -109,26 +114,27 @@ | ||
| 109 | 114 | P.e.taContent.value = val; |
| 110 | 115 | if(cbAutoPreview.checked) P.preview(); |
| 111 | 116 | }, false); |
| 112 | 117 | } |
| 113 | 118 | |
| 119 | + //////////////////////////////////////////////////////////// | |
| 114 | 120 | // Move dark mode checkbox to the end and add a help buttonlet |
| 115 | 121 | D.append( |
| 116 | 122 | P.e.uiControls, |
| 117 | 123 | D.append( |
| 118 | - P.e.cbDarkMode.parentNode, | |
| 124 | + P.e.cbDarkMode.parentNode/*the .input-with-label element*/, | |
| 119 | 125 | F.helpButtonlets.create( |
| 120 | 126 | D.span(), |
| 121 | 127 | 'Dark mode changes the colors of rendered SVG to ', |
| 122 | 128 | 'make them more visible in dark-themed skins. ', |
| 123 | 129 | 'This only changes (using CSS) how they are rendered, ', |
| 124 | 130 | 'not any actual colors written in the script.' |
| 125 | 131 | ) |
| 126 | 132 | ) |
| 127 | 133 | ); |
| 128 | - | |
| 129 | 134 | |
| 135 | + //////////////////////////////////////////////////////////// | |
| 130 | 136 | // File drag/drop pikchr scripts into P.e.taContent. |
| 131 | 137 | // Adapted from: https://stackoverflow.com/a/58677161 |
| 132 | 138 | const dropfile = function(file){ |
| 133 | 139 | const reader = new FileReader(); |
| 134 | 140 | reader.onload = function(e) {P.e.taContent.value = e.target.result}; |
| @@ -140,24 +146,25 @@ | ||
| 140 | 146 | ev.preventDefault(); |
| 141 | 147 | const file = ev.dataTransfer.files[0]; |
| 142 | 148 | if(file) dropfile(file); |
| 143 | 149 | }, false); |
| 144 | 150 | dropTarget.addEventListener('dragenter', function(ev){ |
| 145 | - //ev.stopPropagation(); | |
| 146 | - //ev.preventDefault(); | |
| 151 | + ev.stopPropagation(); | |
| 152 | + ev.preventDefault(); | |
| 147 | 153 | console.debug("dragenter"); |
| 148 | 154 | D.addClass(dropTarget, 'dragover'); |
| 149 | 155 | }, false); |
| 150 | 156 | dropTarget.addEventListener('dragleave', function(ev){ |
| 151 | - //ev.stopPropagation(); | |
| 152 | - //ev.preventDefault(); | |
| 157 | + ev.stopPropagation(); | |
| 158 | + ev.preventDefault(); | |
| 153 | 159 | console.debug("dragleave"); |
| 154 | 160 | D.removeClass(dropTarget, 'dragover'); |
| 155 | 161 | }, false); |
| 156 | 162 | |
| 157 | - // If we start with content, get it in sync with the state generated | |
| 158 | - // by P.preview(). | |
| 163 | + //////////////////////////////////////////////////////////// | |
| 164 | + // If we start with content, get it in sync with the state | |
| 165 | + // generated by P.preview(). | |
| 159 | 166 | if(P.e.taContent.value/*was pre-filled server-side*/){ |
| 160 | 167 | /* Fill our "response" state so that renderPreview() can work */ |
| 161 | 168 | P.response.inputText = P.e.taContent.value; |
| 162 | 169 | P.response.raw = P.e.previewTarget.innerHTML; |
| 163 | 170 | P.renderPreview()/*it's already rendered, but this gets all |
| @@ -169,11 +176,11 @@ | ||
| 169 | 176 | Updates the preview view based on the current preview mode and |
| 170 | 177 | error state. |
| 171 | 178 | */ |
| 172 | 179 | P.renderPreview = function f(){ |
| 173 | 180 | if(!f.hasOwnProperty('rxNonce')){ |
| 174 | - f.rxNonce = /<!--.+-->\r?\n?/g /*nonce comments*/; | |
| 181 | + f.rxNonce = /<!--.+-->\r?\n?/g /*pikchr nonce comments*/; | |
| 175 | 182 | } |
| 176 | 183 | const preTgt = this.e.previewTarget; |
| 177 | 184 | if(this.response.isError){ |
| 178 | 185 | preTgt.innerHTML = this.response.raw; |
| 179 | 186 | D.addClass(preTgt, 'error'); |
| @@ -215,19 +222,21 @@ | ||
| 215 | 222 | } |
| 216 | 223 | D.append(D.clearElement(this.e.previewModeLabel), |
| 217 | 224 | label, this.e.btnCopy); |
| 218 | 225 | }; |
| 219 | 226 | |
| 220 | - /** Fetches the preview from the server and updates the preview to | |
| 221 | - the rendered SVG content or error report. */ | |
| 227 | + /** | |
| 228 | + Fetches the preview from the server and updates the preview to | |
| 229 | + the rendered SVG content or error report. | |
| 230 | + */ | |
| 222 | 231 | P.preview = function fp(){ |
| 223 | 232 | if(!fp.hasOwnProperty('toDisable')){ |
| 224 | 233 | fp.toDisable = [ |
| 225 | 234 | /* input elements to disable during ajax operations */ |
| 226 | 235 | this.e.btnSubmit, this.e.taContent, |
| 227 | 236 | this.e.selectMarkupAlignment, |
| 228 | - this.e.cbAutoPreview, this.e.selectScript, | |
| 237 | + this.e.cbAutoPreview, this.e.selectScript | |
| 229 | 238 | /* this.e.btnTogglePreviewMode is handled separately */ |
| 230 | 239 | ]; |
| 231 | 240 | fp.target = this.e.previewTarget; |
| 232 | 241 | fp.updateView = function(c,isError){ |
| 233 | 242 | P.previewMode = 0; |
| 234 | 243 |
| --- src/fossil.page.pikchrshow.js | |
| +++ src/fossil.page.pikchrshow.js | |
| @@ -32,30 +32,34 @@ | |
| 32 | btnTogglePreviewMode: D.button("Preview mode"), |
| 33 | selectMarkupAlignment: D.select() |
| 34 | }; |
| 35 | D.append(P.e.uiControls, P.e.btnTogglePreviewMode); |
| 36 | |
| 37 | // Setup markup alignment selection... |
| 38 | D.append(P.e.uiControls, P.e.selectMarkupAlignment); |
| 39 | D.disable(D.option(P.e.selectMarkupAlignment, '', 'Markup Alignment')); |
| 40 | ['left', 'center'].forEach(function(val,ndx){ |
| 41 | D.option(P.e.selectMarkupAlignment, ndx ? val : '', val); |
| 42 | }); |
| 43 | |
| 44 | // Setup clipboard-copy of markup/SVG... |
| 45 | F.copyButton(P.e.btnCopy, {copyFromElement: P.e.taPreviewText}); |
| 46 | P.e.btnCopy.addEventListener('text-copied',function(ev){ |
| 47 | D.flashOnce(ev.target); |
| 48 | },false); |
| 49 | |
| 50 | // Set up dark mode simulator... |
| 51 | P.e.cbDarkMode.addEventListener('change', function(ev){ |
| 52 | if(ev.target.checked) D.addClass(P.e.previewTarget, 'dark-mode'); |
| 53 | else D.removeClass(P.e.previewTarget, 'dark-mode'); |
| 54 | }, false); |
| 55 | if(P.e.cbDarkMode.checked) D.addClass(P.e.previewTarget, 'dark-mode'); |
| 56 | |
| 57 | // Set up preview update and preview mode toggle... |
| 58 | P.e.btnSubmit.addEventListener('click', ()=>P.preview(), false); |
| 59 | P.e.btnTogglePreviewMode.addEventListener('click', function(){ |
| 60 | /* Rotate through the 4 available preview modes */ |
| 61 | P.previewMode = ++P.previewMode % 4; |
| @@ -66,10 +70,11 @@ | |
| 66 | if(P.previewMode==1 || P.previewMode==2){ |
| 67 | P.renderPreview(); |
| 68 | } |
| 69 | }, false); |
| 70 | |
| 71 | // Set up selection list of predefined scripts... |
| 72 | if(true){ |
| 73 | const selectScript = P.e.selectScript = D.select(), |
| 74 | cbAutoPreview = P.e.cbAutoPreview = |
| 75 | D.attr(D.checkbox(),'id', 'cb-auto-preview','checked',true), |
| @@ -109,26 +114,27 @@ | |
| 109 | P.e.taContent.value = val; |
| 110 | if(cbAutoPreview.checked) P.preview(); |
| 111 | }, false); |
| 112 | } |
| 113 | |
| 114 | // Move dark mode checkbox to the end and add a help buttonlet |
| 115 | D.append( |
| 116 | P.e.uiControls, |
| 117 | D.append( |
| 118 | P.e.cbDarkMode.parentNode, |
| 119 | F.helpButtonlets.create( |
| 120 | D.span(), |
| 121 | 'Dark mode changes the colors of rendered SVG to ', |
| 122 | 'make them more visible in dark-themed skins. ', |
| 123 | 'This only changes (using CSS) how they are rendered, ', |
| 124 | 'not any actual colors written in the script.' |
| 125 | ) |
| 126 | ) |
| 127 | ); |
| 128 | |
| 129 | |
| 130 | // File drag/drop pikchr scripts into P.e.taContent. |
| 131 | // Adapted from: https://stackoverflow.com/a/58677161 |
| 132 | const dropfile = function(file){ |
| 133 | const reader = new FileReader(); |
| 134 | reader.onload = function(e) {P.e.taContent.value = e.target.result}; |
| @@ -140,24 +146,25 @@ | |
| 140 | ev.preventDefault(); |
| 141 | const file = ev.dataTransfer.files[0]; |
| 142 | if(file) dropfile(file); |
| 143 | }, false); |
| 144 | dropTarget.addEventListener('dragenter', function(ev){ |
| 145 | //ev.stopPropagation(); |
| 146 | //ev.preventDefault(); |
| 147 | console.debug("dragenter"); |
| 148 | D.addClass(dropTarget, 'dragover'); |
| 149 | }, false); |
| 150 | dropTarget.addEventListener('dragleave', function(ev){ |
| 151 | //ev.stopPropagation(); |
| 152 | //ev.preventDefault(); |
| 153 | console.debug("dragleave"); |
| 154 | D.removeClass(dropTarget, 'dragover'); |
| 155 | }, false); |
| 156 | |
| 157 | // If we start with content, get it in sync with the state generated |
| 158 | // by P.preview(). |
| 159 | if(P.e.taContent.value/*was pre-filled server-side*/){ |
| 160 | /* Fill our "response" state so that renderPreview() can work */ |
| 161 | P.response.inputText = P.e.taContent.value; |
| 162 | P.response.raw = P.e.previewTarget.innerHTML; |
| 163 | P.renderPreview()/*it's already rendered, but this gets all |
| @@ -169,11 +176,11 @@ | |
| 169 | Updates the preview view based on the current preview mode and |
| 170 | error state. |
| 171 | */ |
| 172 | P.renderPreview = function f(){ |
| 173 | if(!f.hasOwnProperty('rxNonce')){ |
| 174 | f.rxNonce = /<!--.+-->\r?\n?/g /*nonce comments*/; |
| 175 | } |
| 176 | const preTgt = this.e.previewTarget; |
| 177 | if(this.response.isError){ |
| 178 | preTgt.innerHTML = this.response.raw; |
| 179 | D.addClass(preTgt, 'error'); |
| @@ -215,19 +222,21 @@ | |
| 215 | } |
| 216 | D.append(D.clearElement(this.e.previewModeLabel), |
| 217 | label, this.e.btnCopy); |
| 218 | }; |
| 219 | |
| 220 | /** Fetches the preview from the server and updates the preview to |
| 221 | the rendered SVG content or error report. */ |
| 222 | P.preview = function fp(){ |
| 223 | if(!fp.hasOwnProperty('toDisable')){ |
| 224 | fp.toDisable = [ |
| 225 | /* input elements to disable during ajax operations */ |
| 226 | this.e.btnSubmit, this.e.taContent, |
| 227 | this.e.selectMarkupAlignment, |
| 228 | this.e.cbAutoPreview, this.e.selectScript, |
| 229 | /* this.e.btnTogglePreviewMode is handled separately */ |
| 230 | ]; |
| 231 | fp.target = this.e.previewTarget; |
| 232 | fp.updateView = function(c,isError){ |
| 233 | P.previewMode = 0; |
| 234 |
| --- src/fossil.page.pikchrshow.js | |
| +++ src/fossil.page.pikchrshow.js | |
| @@ -32,30 +32,34 @@ | |
| 32 | btnTogglePreviewMode: D.button("Preview mode"), |
| 33 | selectMarkupAlignment: D.select() |
| 34 | }; |
| 35 | D.append(P.e.uiControls, P.e.btnTogglePreviewMode); |
| 36 | |
| 37 | //////////////////////////////////////////////////////////// |
| 38 | // Setup markup alignment selection... |
| 39 | D.append(P.e.uiControls, P.e.selectMarkupAlignment); |
| 40 | D.disable(D.option(P.e.selectMarkupAlignment, '', 'Markup Alignment')); |
| 41 | ['left', 'center'].forEach(function(val,ndx){ |
| 42 | D.option(P.e.selectMarkupAlignment, ndx ? val : '', val); |
| 43 | }); |
| 44 | |
| 45 | //////////////////////////////////////////////////////////// |
| 46 | // Setup clipboard-copy of markup/SVG... |
| 47 | F.copyButton(P.e.btnCopy, {copyFromElement: P.e.taPreviewText}); |
| 48 | P.e.btnCopy.addEventListener('text-copied',function(ev){ |
| 49 | D.flashOnce(ev.target); |
| 50 | },false); |
| 51 | |
| 52 | //////////////////////////////////////////////////////////// |
| 53 | // Set up dark mode simulator... |
| 54 | P.e.cbDarkMode.addEventListener('change', function(ev){ |
| 55 | if(ev.target.checked) D.addClass(P.e.previewTarget, 'dark-mode'); |
| 56 | else D.removeClass(P.e.previewTarget, 'dark-mode'); |
| 57 | }, false); |
| 58 | if(P.e.cbDarkMode.checked) D.addClass(P.e.previewTarget, 'dark-mode'); |
| 59 | |
| 60 | //////////////////////////////////////////////////////////// |
| 61 | // Set up preview update and preview mode toggle... |
| 62 | P.e.btnSubmit.addEventListener('click', ()=>P.preview(), false); |
| 63 | P.e.btnTogglePreviewMode.addEventListener('click', function(){ |
| 64 | /* Rotate through the 4 available preview modes */ |
| 65 | P.previewMode = ++P.previewMode % 4; |
| @@ -66,10 +70,11 @@ | |
| 70 | if(P.previewMode==1 || P.previewMode==2){ |
| 71 | P.renderPreview(); |
| 72 | } |
| 73 | }, false); |
| 74 | |
| 75 | //////////////////////////////////////////////////////////// |
| 76 | // Set up selection list of predefined scripts... |
| 77 | if(true){ |
| 78 | const selectScript = P.e.selectScript = D.select(), |
| 79 | cbAutoPreview = P.e.cbAutoPreview = |
| 80 | D.attr(D.checkbox(),'id', 'cb-auto-preview','checked',true), |
| @@ -109,26 +114,27 @@ | |
| 114 | P.e.taContent.value = val; |
| 115 | if(cbAutoPreview.checked) P.preview(); |
| 116 | }, false); |
| 117 | } |
| 118 | |
| 119 | //////////////////////////////////////////////////////////// |
| 120 | // Move dark mode checkbox to the end and add a help buttonlet |
| 121 | D.append( |
| 122 | P.e.uiControls, |
| 123 | D.append( |
| 124 | P.e.cbDarkMode.parentNode/*the .input-with-label element*/, |
| 125 | F.helpButtonlets.create( |
| 126 | D.span(), |
| 127 | 'Dark mode changes the colors of rendered SVG to ', |
| 128 | 'make them more visible in dark-themed skins. ', |
| 129 | 'This only changes (using CSS) how they are rendered, ', |
| 130 | 'not any actual colors written in the script.' |
| 131 | ) |
| 132 | ) |
| 133 | ); |
| 134 | |
| 135 | //////////////////////////////////////////////////////////// |
| 136 | // File drag/drop pikchr scripts into P.e.taContent. |
| 137 | // Adapted from: https://stackoverflow.com/a/58677161 |
| 138 | const dropfile = function(file){ |
| 139 | const reader = new FileReader(); |
| 140 | reader.onload = function(e) {P.e.taContent.value = e.target.result}; |
| @@ -140,24 +146,25 @@ | |
| 146 | ev.preventDefault(); |
| 147 | const file = ev.dataTransfer.files[0]; |
| 148 | if(file) dropfile(file); |
| 149 | }, false); |
| 150 | dropTarget.addEventListener('dragenter', function(ev){ |
| 151 | ev.stopPropagation(); |
| 152 | ev.preventDefault(); |
| 153 | console.debug("dragenter"); |
| 154 | D.addClass(dropTarget, 'dragover'); |
| 155 | }, false); |
| 156 | dropTarget.addEventListener('dragleave', function(ev){ |
| 157 | ev.stopPropagation(); |
| 158 | ev.preventDefault(); |
| 159 | console.debug("dragleave"); |
| 160 | D.removeClass(dropTarget, 'dragover'); |
| 161 | }, false); |
| 162 | |
| 163 | //////////////////////////////////////////////////////////// |
| 164 | // If we start with content, get it in sync with the state |
| 165 | // generated by P.preview(). |
| 166 | if(P.e.taContent.value/*was pre-filled server-side*/){ |
| 167 | /* Fill our "response" state so that renderPreview() can work */ |
| 168 | P.response.inputText = P.e.taContent.value; |
| 169 | P.response.raw = P.e.previewTarget.innerHTML; |
| 170 | P.renderPreview()/*it's already rendered, but this gets all |
| @@ -169,11 +176,11 @@ | |
| 176 | Updates the preview view based on the current preview mode and |
| 177 | error state. |
| 178 | */ |
| 179 | P.renderPreview = function f(){ |
| 180 | if(!f.hasOwnProperty('rxNonce')){ |
| 181 | f.rxNonce = /<!--.+-->\r?\n?/g /*pikchr nonce comments*/; |
| 182 | } |
| 183 | const preTgt = this.e.previewTarget; |
| 184 | if(this.response.isError){ |
| 185 | preTgt.innerHTML = this.response.raw; |
| 186 | D.addClass(preTgt, 'error'); |
| @@ -215,19 +222,21 @@ | |
| 222 | } |
| 223 | D.append(D.clearElement(this.e.previewModeLabel), |
| 224 | label, this.e.btnCopy); |
| 225 | }; |
| 226 | |
| 227 | /** |
| 228 | Fetches the preview from the server and updates the preview to |
| 229 | the rendered SVG content or error report. |
| 230 | */ |
| 231 | P.preview = function fp(){ |
| 232 | if(!fp.hasOwnProperty('toDisable')){ |
| 233 | fp.toDisable = [ |
| 234 | /* input elements to disable during ajax operations */ |
| 235 | this.e.btnSubmit, this.e.taContent, |
| 236 | this.e.selectMarkupAlignment, |
| 237 | this.e.cbAutoPreview, this.e.selectScript |
| 238 | /* this.e.btnTogglePreviewMode is handled separately */ |
| 239 | ]; |
| 240 | fp.target = this.e.previewTarget; |
| 241 | fp.updateView = function(c,isError){ |
| 242 | P.previewMode = 0; |
| 243 |