Fossil SCM

Adapted pixchrshow raw SVG preview to account for pixchr output containing an outer DIV. Resolves (for me, anyway) Inkscape import problem reported in the forum.

stephan 2020-09-12 23:26 trunk
Commit 2ffd9dd1bfd9d02696ede03f1968ceb9a0eab2355f60d4e1af045801de312255
1 file changed +11 -2
--- src/fossil.page.pikchrshow.js
+++ src/fossil.page.pikchrshow.js
@@ -273,11 +273,11 @@
273273
let label;
274274
switch(this.previewMode){
275275
case 0:
276276
label = "SVG";
277277
f.showMarkupAlignment(false);
278
- D.append(D.clearElement(preTgt), D.parseHtml(P.response.raw));
278
+ D.parseHtml(D.clearElement(preTgt), P.response.raw);
279279
this.e.taPreviewText.value =
280280
this.response.raw.replace(f.rxNonce, '')/*for copy button*/;
281281
break;
282282
case 1:
283283
label = "Markdown";
@@ -299,11 +299,20 @@
299299
D.append(D.clearElement(preTgt), this.e.taPreviewText);
300300
break;
301301
case 3:
302302
label = "Raw SVG";
303303
f.showMarkupAlignment(false);
304
- this.e.taPreviewText.value = this.response.raw.replace(f.rxNonce, '');
304
+ const childs = D.parseHtml(this.response.raw);
305
+ const wrapper = childs.filter((e)=>'DIV'===e.tagName)[0];
306
+ const svg = wrapper ? wrapper.querySelector('svg.pikchr') : undefined;
307
+ if(svg){
308
+ this.e.taPreviewText.value = svg.outerHTML;
309
+ }else{
310
+ this.e.taPreviewText.value = "ERROR parsing response HTML:\n"+
311
+ this.response.raw;
312
+ console.error("svg parsed HTML nodes:",childs);
313
+ }
305314
D.append(D.clearElement(preTgt), this.e.taPreviewText);
306315
break;
307316
}
308317
this.e.previewModeLabel.innerText = label;
309318
};
310319
--- src/fossil.page.pikchrshow.js
+++ src/fossil.page.pikchrshow.js
@@ -273,11 +273,11 @@
273 let label;
274 switch(this.previewMode){
275 case 0:
276 label = "SVG";
277 f.showMarkupAlignment(false);
278 D.append(D.clearElement(preTgt), D.parseHtml(P.response.raw));
279 this.e.taPreviewText.value =
280 this.response.raw.replace(f.rxNonce, '')/*for copy button*/;
281 break;
282 case 1:
283 label = "Markdown";
@@ -299,11 +299,20 @@
299 D.append(D.clearElement(preTgt), this.e.taPreviewText);
300 break;
301 case 3:
302 label = "Raw SVG";
303 f.showMarkupAlignment(false);
304 this.e.taPreviewText.value = this.response.raw.replace(f.rxNonce, '');
 
 
 
 
 
 
 
 
 
305 D.append(D.clearElement(preTgt), this.e.taPreviewText);
306 break;
307 }
308 this.e.previewModeLabel.innerText = label;
309 };
310
--- src/fossil.page.pikchrshow.js
+++ src/fossil.page.pikchrshow.js
@@ -273,11 +273,11 @@
273 let label;
274 switch(this.previewMode){
275 case 0:
276 label = "SVG";
277 f.showMarkupAlignment(false);
278 D.parseHtml(D.clearElement(preTgt), P.response.raw);
279 this.e.taPreviewText.value =
280 this.response.raw.replace(f.rxNonce, '')/*for copy button*/;
281 break;
282 case 1:
283 label = "Markdown";
@@ -299,11 +299,20 @@
299 D.append(D.clearElement(preTgt), this.e.taPreviewText);
300 break;
301 case 3:
302 label = "Raw SVG";
303 f.showMarkupAlignment(false);
304 const childs = D.parseHtml(this.response.raw);
305 const wrapper = childs.filter((e)=>'DIV'===e.tagName)[0];
306 const svg = wrapper ? wrapper.querySelector('svg.pikchr') : undefined;
307 if(svg){
308 this.e.taPreviewText.value = svg.outerHTML;
309 }else{
310 this.e.taPreviewText.value = "ERROR parsing response HTML:\n"+
311 this.response.raw;
312 console.error("svg parsed HTML nodes:",childs);
313 }
314 D.append(D.clearElement(preTgt), this.e.taPreviewText);
315 break;
316 }
317 this.e.previewModeLabel.innerText = label;
318 };
319

Keyboard Shortcuts

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