From d3c14355275f9a68429d027e9b32c9d0c2c682ef Mon Sep 17 00:00:00 2001 From: Mojtaba Samimi Date: Tue, 4 Oct 2022 11:53:38 -0400 Subject: [PATCH 1/5] hide pie text on empty slices --- src/traces/pie/plot.js | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/traces/pie/plot.js b/src/traces/pie/plot.js index d58b8cc6540..48be9224e2c 100644 --- a/src/traces/pie/plot.js +++ b/src/traces/pie/plot.js @@ -239,10 +239,16 @@ function plot(gd, cdModule) { transform = positionTitleOutside(cd0, gs); } - titleText.attr('transform', - strTranslate(transform.x, transform.y) + - strScale(Math.min(1, transform.scale)) + - strTranslate(transform.tx, transform.ty)); + var scale = Math.min(1, transform.scale); + + if(scale) { + titleText.attr('transform', + strTranslate(transform.x, transform.y) + + strScale(scale) + + strTranslate(transform.tx, transform.ty)); + } else { + titleText.style('display', 'none'); + } }); // now make sure no labels overlap (at least within one pie) From e225529d965dbe816f22d73aff142267aefc2703 Mon Sep 17 00:00:00 2001 From: Mojtaba Samimi Date: Wed, 5 Oct 2022 14:01:39 -0400 Subject: [PATCH 2/5] ensure reset display when the element is reused --- draftlogs/6335_fix.md | 1 + src/traces/pie/plot.js | 2 ++ 2 files changed, 3 insertions(+) create mode 100644 draftlogs/6335_fix.md diff --git a/draftlogs/6335_fix.md b/draftlogs/6335_fix.md new file mode 100644 index 00000000000..d813a03bbc8 --- /dev/null +++ b/draftlogs/6335_fix.md @@ -0,0 +1 @@ + - Hide pie text on empty slices to avoid PDF exports in MS Word from SVG imports [[#6335](https://github.com/plotly/plotly.js/pull/6335)] diff --git a/src/traces/pie/plot.js b/src/traces/pie/plot.js index 48be9224e2c..fbfc54e1d8a 100644 --- a/src/traces/pie/plot.js +++ b/src/traces/pie/plot.js @@ -246,6 +246,8 @@ function plot(gd, cdModule) { strTranslate(transform.x, transform.y) + strScale(scale) + strTranslate(transform.tx, transform.ty)); + + titleText.style('display', null); } else { titleText.style('display', 'none'); } From 856353b449b44d1af1de3deeaaa4677f848700d7 Mon Sep 17 00:00:00 2001 From: Mojtaba Samimi Date: Thu, 6 Oct 2022 09:09:06 -0400 Subject: [PATCH 3/5] revert pie titleText changes --- src/traces/pie/plot.js | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/src/traces/pie/plot.js b/src/traces/pie/plot.js index fbfc54e1d8a..d58b8cc6540 100644 --- a/src/traces/pie/plot.js +++ b/src/traces/pie/plot.js @@ -239,18 +239,10 @@ function plot(gd, cdModule) { transform = positionTitleOutside(cd0, gs); } - var scale = Math.min(1, transform.scale); - - if(scale) { - titleText.attr('transform', - strTranslate(transform.x, transform.y) + - strScale(scale) + - strTranslate(transform.tx, transform.ty)); - - titleText.style('display', null); - } else { - titleText.style('display', 'none'); - } + titleText.attr('transform', + strTranslate(transform.x, transform.y) + + strScale(Math.min(1, transform.scale)) + + strTranslate(transform.tx, transform.ty)); }); // now make sure no labels overlap (at least within one pie) From 035d8dd29383dd48c1fdd507a4335f557c9b011c Mon Sep 17 00:00:00 2001 From: Mojtaba Samimi Date: Thu, 6 Oct 2022 09:14:59 -0400 Subject: [PATCH 4/5] hide text of empty slices --- src/traces/pie/plot.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/traces/pie/plot.js b/src/traces/pie/plot.js index d58b8cc6540..fa48c0d0441 100644 --- a/src/traces/pie/plot.js +++ b/src/traces/pie/plot.js @@ -200,6 +200,9 @@ function plot(gd, cdModule) { cd[i].transform = transform; sliceText.attr('transform', Lib.getTextTransform(transform)); + + // hide text for empty slices + sliceText.style('display', transform.scale ? null : 'none'); }); }); From e8eef1cb107fc560df698ef2987f1e423faa43bf Mon Sep 17 00:00:00 2001 From: Mojtaba Samimi Date: Thu, 6 Oct 2022 09:45:53 -0400 Subject: [PATCH 5/5] centralize & reuse hide logic in bars & funnelarea --- draftlogs/6335_fix.md | 2 +- src/lib/index.js | 5 +++++ src/traces/bar/plot.js | 4 ++-- src/traces/bar/uniform_text.js | 2 +- src/traces/funnelarea/plot.js | 2 +- src/traces/pie/plot.js | 7 ++----- 6 files changed, 12 insertions(+), 10 deletions(-) diff --git a/draftlogs/6335_fix.md b/draftlogs/6335_fix.md index d813a03bbc8..1177ad7f8de 100644 --- a/draftlogs/6335_fix.md +++ b/draftlogs/6335_fix.md @@ -1 +1 @@ - - Hide pie text on empty slices to avoid PDF exports in MS Word from SVG imports [[#6335](https://github.com/plotly/plotly.js/pull/6335)] + - Hide text on empty slices to avoid PDF exports in MS Word from SVG imports [[#6335](https://github.com/plotly/plotly.js/pull/6335)] diff --git a/src/lib/index.js b/src/lib/index.js index 5d97f2cfc89..b3badf83e25 100644 --- a/src/lib/index.js +++ b/src/lib/index.js @@ -1331,6 +1331,11 @@ lib.getTextTransform = function(transform) { ); }; +lib.setTransormAndDisplay = function(s, transform) { + s.attr('transform', lib.getTextTransform(transform)); + s.style('display', transform.scale ? null : 'none'); +}; + lib.ensureUniformFontSize = function(gd, baseFont) { var out = lib.extendFlat({}, baseFont); out.size = Math.max( diff --git a/src/traces/bar/plot.js b/src/traces/bar/plot.js index 9866bd57156..8876dc3db21 100644 --- a/src/traces/bar/plot.js +++ b/src/traces/bar/plot.js @@ -431,8 +431,8 @@ function appendBarText(gd, plotinfo, bar, cd, i, x0, x1, y0, y1, opts, makeOnCom recordMinTextSize(trace.type === 'histogram' ? 'bar' : trace.type, transform, fullLayout); calcBar.transform = transform; - transition(textSelection, fullLayout, opts, makeOnCompleteCallback) - .attr('transform', Lib.getTextTransform(transform)); + var s = transition(textSelection, fullLayout, opts, makeOnCompleteCallback); + Lib.setTransormAndDisplay(s, transform); } function getRotateFromAngle(angle) { diff --git a/src/traces/bar/uniform_text.js b/src/traces/bar/uniform_text.js index b7b2390d8b5..825018e44d0 100644 --- a/src/traces/bar/uniform_text.js +++ b/src/traces/bar/uniform_text.js @@ -30,7 +30,7 @@ function resizeText(gd, gTrace, traceType) { transform.scale = (shouldHide && transform.hide) ? 0 : minSize / transform.fontSize; var el = d3.select(this).select('text'); - el.attr('transform', Lib.getTextTransform(transform)); + Lib.setTransormAndDisplay(el, transform); } }); } diff --git a/src/traces/funnelarea/plot.js b/src/traces/funnelarea/plot.js index e728b51c2cd..b0ea10ec638 100644 --- a/src/traces/funnelarea/plot.js +++ b/src/traces/funnelarea/plot.js @@ -128,7 +128,7 @@ module.exports = function plot(gd, cdModule) { recordMinTextSize(trace.type, transform, fullLayout); cd[i].transform = transform; - sliceText.attr('transform', Lib.getTextTransform(transform)); + Lib.setTransormAndDisplay(sliceText, transform); }); }); diff --git a/src/traces/pie/plot.js b/src/traces/pie/plot.js index fa48c0d0441..a6b803aed35 100644 --- a/src/traces/pie/plot.js +++ b/src/traces/pie/plot.js @@ -199,10 +199,7 @@ function plot(gd, cdModule) { recordMinTextSize(trace.type, transform, fullLayout); cd[i].transform = transform; - sliceText.attr('transform', Lib.getTextTransform(transform)); - - // hide text for empty slices - sliceText.style('display', transform.scale ? null : 'none'); + Lib.setTransormAndDisplay(sliceText, transform); }); }); @@ -310,7 +307,7 @@ function plotTextLines(slices, trace) { pt.transform.targetX += pt.labelExtraX; pt.transform.targetY += pt.labelExtraY; - sliceText.attr('transform', Lib.getTextTransform(pt.transform)); + Lib.setTransormAndDisplay(sliceText, pt.transform); // then add a line to the new location var lineStartX = pt.cxFinal + pt.pxmid[0];