Fossil SCM

pikchrshow: corrected clipboard copy contents for raw SVG mode (it was including containing DIV element).

stephan 2020-09-14 21:40 trunk
Commit bb56d3d5a2e39f508998062c4f40a0b8f1cb4d318b8f1b0e23f6724fb843bd8e
1 file changed +11 -6
--- src/fossil.page.pikchrshow.js
+++ src/fossil.page.pikchrshow.js
@@ -293,10 +293,15 @@
293293
f.getMarkupAlignmentClass = function(){
294294
if(P.e.markupAlignCenter.checked) return ' center';
295295
else if(P.e.markupAlignIndent.checked) return ' indent';
296296
return '';
297297
};
298
+ f.getSvgNode = function(txt){
299
+ const childs = D.parseHtml(txt);
300
+ const wrapper = childs.filter((e)=>'DIV'===e.tagName)[0];
301
+ return wrapper ? wrapper.querySelector('svg.pikchr') : undefined;
302
+ };
298303
}
299304
const preTgt = this.e.previewTarget;
300305
if(this.response.isError){
301306
D.append(D.clearElement(preTgt), D.parseHtml(P.response.raw));
302307
D.addClass(preTgt, 'error');
@@ -305,18 +310,20 @@
305310
}
306311
D.removeClass(preTgt, 'error');
307312
D.removeClass(this.e.previewCopyButton, 'disabled');
308313
D.removeClass(this.e.markupAlignWrapper, 'hidden');
309314
D.enable(this.e.previewModeToggle, this.e.markupAlignRadios);
310
- let label;
315
+ let label, svg;
311316
switch(this.previewMode){
312317
case 0:
313318
label = "SVG";
314319
f.showMarkupAlignment(false);
315320
D.parseHtml(D.clearElement(preTgt), P.response.raw);
316
- this.e.taPreviewText.value =
317
- this.response.raw.replace(f.rxNonce, '')/*for copy button*/;
321
+ svg = f.getSvgNode(this.response.raw);
322
+ if(svg){ /*for copy button*/
323
+ this.e.taPreviewText.value = svg.outerHTML;
324
+ }
318325
if(F.pikchr){
319326
F.pikchr.addSrcView(preTgt.querySelector('svg'));
320327
}
321328
break;
322329
case 1:
@@ -339,13 +346,11 @@
339346
D.append(D.clearElement(preTgt), this.e.taPreviewText);
340347
break;
341348
case 3:
342349
label = "Raw SVG";
343350
f.showMarkupAlignment(false);
344
- const childs = D.parseHtml(this.response.raw);
345
- const wrapper = childs.filter((e)=>'DIV'===e.tagName)[0];
346
- const svg = wrapper ? wrapper.querySelector('svg.pikchr') : undefined;
351
+ svg = f.getSvgNode(this.response.raw);
347352
if(svg){
348353
this.e.taPreviewText.value = svg.outerHTML;
349354
}else{
350355
this.e.taPreviewText.value = "ERROR parsing response HTML:\n"+
351356
this.response.raw;
352357
--- src/fossil.page.pikchrshow.js
+++ src/fossil.page.pikchrshow.js
@@ -293,10 +293,15 @@
293 f.getMarkupAlignmentClass = function(){
294 if(P.e.markupAlignCenter.checked) return ' center';
295 else if(P.e.markupAlignIndent.checked) return ' indent';
296 return '';
297 };
 
 
 
 
 
298 }
299 const preTgt = this.e.previewTarget;
300 if(this.response.isError){
301 D.append(D.clearElement(preTgt), D.parseHtml(P.response.raw));
302 D.addClass(preTgt, 'error');
@@ -305,18 +310,20 @@
305 }
306 D.removeClass(preTgt, 'error');
307 D.removeClass(this.e.previewCopyButton, 'disabled');
308 D.removeClass(this.e.markupAlignWrapper, 'hidden');
309 D.enable(this.e.previewModeToggle, this.e.markupAlignRadios);
310 let label;
311 switch(this.previewMode){
312 case 0:
313 label = "SVG";
314 f.showMarkupAlignment(false);
315 D.parseHtml(D.clearElement(preTgt), P.response.raw);
316 this.e.taPreviewText.value =
317 this.response.raw.replace(f.rxNonce, '')/*for copy button*/;
 
 
318 if(F.pikchr){
319 F.pikchr.addSrcView(preTgt.querySelector('svg'));
320 }
321 break;
322 case 1:
@@ -339,13 +346,11 @@
339 D.append(D.clearElement(preTgt), this.e.taPreviewText);
340 break;
341 case 3:
342 label = "Raw SVG";
343 f.showMarkupAlignment(false);
344 const childs = D.parseHtml(this.response.raw);
345 const wrapper = childs.filter((e)=>'DIV'===e.tagName)[0];
346 const svg = wrapper ? wrapper.querySelector('svg.pikchr') : undefined;
347 if(svg){
348 this.e.taPreviewText.value = svg.outerHTML;
349 }else{
350 this.e.taPreviewText.value = "ERROR parsing response HTML:\n"+
351 this.response.raw;
352
--- src/fossil.page.pikchrshow.js
+++ src/fossil.page.pikchrshow.js
@@ -293,10 +293,15 @@
293 f.getMarkupAlignmentClass = function(){
294 if(P.e.markupAlignCenter.checked) return ' center';
295 else if(P.e.markupAlignIndent.checked) return ' indent';
296 return '';
297 };
298 f.getSvgNode = function(txt){
299 const childs = D.parseHtml(txt);
300 const wrapper = childs.filter((e)=>'DIV'===e.tagName)[0];
301 return wrapper ? wrapper.querySelector('svg.pikchr') : undefined;
302 };
303 }
304 const preTgt = this.e.previewTarget;
305 if(this.response.isError){
306 D.append(D.clearElement(preTgt), D.parseHtml(P.response.raw));
307 D.addClass(preTgt, 'error');
@@ -305,18 +310,20 @@
310 }
311 D.removeClass(preTgt, 'error');
312 D.removeClass(this.e.previewCopyButton, 'disabled');
313 D.removeClass(this.e.markupAlignWrapper, 'hidden');
314 D.enable(this.e.previewModeToggle, this.e.markupAlignRadios);
315 let label, svg;
316 switch(this.previewMode){
317 case 0:
318 label = "SVG";
319 f.showMarkupAlignment(false);
320 D.parseHtml(D.clearElement(preTgt), P.response.raw);
321 svg = f.getSvgNode(this.response.raw);
322 if(svg){ /*for copy button*/
323 this.e.taPreviewText.value = svg.outerHTML;
324 }
325 if(F.pikchr){
326 F.pikchr.addSrcView(preTgt.querySelector('svg'));
327 }
328 break;
329 case 1:
@@ -339,13 +346,11 @@
346 D.append(D.clearElement(preTgt), this.e.taPreviewText);
347 break;
348 case 3:
349 label = "Raw SVG";
350 f.showMarkupAlignment(false);
351 svg = f.getSvgNode(this.response.raw);
 
 
352 if(svg){
353 this.e.taPreviewText.value = svg.outerHTML;
354 }else{
355 this.e.taPreviewText.value = "ERROR parsing response HTML:\n"+
356 this.response.raw;
357

Keyboard Shortcuts

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