From 4f789bdc12f927ea017dff539abc5290405d17f0 Mon Sep 17 00:00:00 2001 From: archmoj Date: Thu, 13 Feb 2020 00:22:00 -0500 Subject: [PATCH 1/3] refactor - moving variables --- src/traces/pie/plot.js | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/traces/pie/plot.js b/src/traces/pie/plot.js index b8505618ef9..2c5bba41081 100644 --- a/src/traces/pie/plot.js +++ b/src/traces/pie/plot.js @@ -559,18 +559,21 @@ function prerenderTitles(cdModule, gd) { } function transformInsideText(textBB, pt, cd0) { - var textDiameter = Math.sqrt(textBB.width * textBB.width + textBB.height * textBB.height); + var r = cd0.r || pt.rpx1; + var rInscribed = pt.rInscribed; + + var ring = pt.ring; + var isCircle = (ring === 1) && (Math.abs(pt.startangle - pt.stopangle) === Math.PI * 2); + var halfAngle = pt.halfangle; var midAngle = pt.midangle; - var ring = pt.ring; - var rInscribed = pt.rInscribed; - var r = cd0.r || pt.rpx1; + var orientation = cd0.trace.insidetextorientation; var isHorizontal = orientation === 'horizontal'; var isTangential = orientation === 'tangential'; var isRadial = orientation === 'radial'; var isAuto = orientation === 'auto'; - var isCircle = (ring === 1) && (Math.abs(pt.startangle - pt.stopangle) === Math.PI * 2); + var allTransforms = []; var newT; @@ -616,6 +619,8 @@ function transformInsideText(textBB, pt, cd0) { // this inscribes the text rectangle in a circle, which is then inscribed // in the slice, so it will be an underestimate, which some day we may want // to improve so this case can get more use + var textDiameter = Math.sqrt(textBB.width * textBB.width + textBB.height * textBB.height); + newT = { scale: rInscribed * r * 2 / textDiameter, From fd22c8122ed9bf6e04f24dfd96f86210384a3525 Mon Sep 17 00:00:00 2001 From: archmoj Date: Thu, 13 Feb 2020 00:36:37 -0500 Subject: [PATCH 2/3] add image test - baseline before fixing 4569 --- .../sunburst_zero_values_textfit.png | Bin 0 -> 17737 bytes .../mocks/sunburst_zero_values_textfit.json | 48 ++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 test/image/baselines/sunburst_zero_values_textfit.png create mode 100644 test/image/mocks/sunburst_zero_values_textfit.json diff --git a/test/image/baselines/sunburst_zero_values_textfit.png b/test/image/baselines/sunburst_zero_values_textfit.png new file mode 100644 index 0000000000000000000000000000000000000000..a046f0f7469fecc92f3149ed808d44c7b0b96b50 GIT binary patch literal 17737 zcmeHvRa6|o^DZpz9)i0&!F6#l?uC4(~a`Ym(mRGzYvbWAslwEfLLZI6M z*$qz2O~lJ*fBobDo{9@c7V)ubZHXXYmGb=VR=TQ_xJ}G0>EajTn^6&p=XUYs&uqbN zPJqL^8|&Q7t*qehSsFq3jZCNd{Woo66aFAZY5d0z!99_rgdYwyj2)c4mMJO0x=LLi2U_)p3`n0E3_mITYK1SXM4!&DOnH~G`sV%D((6z}dqyyP zH3<<}ODgo<^yug$qO1q~c!;$-XL?5{T_@JIefW2UQVrGiQRsk1kYWW@$OlLcEDjZ1 zunL27Qd8Oj-1g8rz#$7l7HdIEVOh4HJ3;PwyD*5biqmwRj ztSP9FFJ@^wJR-(F`YD1V0MD;H8cFtK!JWb($rneYW!C!zbo`T3%2+SP06zlzLT==q z+f5l=p?3&8LK;c6rn>CH$;@w!4txJ*%PN2*+A5vBbfDyq_xxAA=qc9rG`uFiCbRZ@ zqh4+|2l9vz7~IGycXeJg4qDS!IHbPB>y>2>%X0X7|37r4k<0gIQ%Ak$DJ~&+bl^na+@Kmfh4IR>>?6!@0<5g z-~U>*_~kB0A(J0M|1s7b0%*n79h@#V`)iO0kVW4lhufF#sEn_KQ@YuNuD3>;u zDsy-f1VoA$(k%_jv?aoLZvb^b2R3{{TgTPHSrchvJ^p}YXL1y^#8zP}_wcp409?n@ zDcmocu>_oTrJ^aE=b4~Q(7vsJ4R0FHCj;zPry|9>-1|?RsMk)EF+3Fb>{)ccij@Nz z*6`Kk$|E$v2O zWb>{F*4$!;*FfG0T74IfO9}U}BgWbG8L-2iViOwbKA8mS2b*3a2O4K012>+HIR=;h;V)VC7orw(5BL!Kf1 zb>F#z;{9gba#so($FxeeLYfvwv~k3*u;MqM+v`M0_8H}gFDQ$6q_6cVBpccUxs77I zNm?s$jVfJE{_K#WM!E`;ORV=gi$iE|cMkqwR(eK&pozDAG~DklICR%9oeym?-Nce7 za8W6__)CSNZfx!>1Nx4wR~B@w7A0Sc+>MHJUCsXbC_A{Y5F14`absoe?%SL&qO8V% z!XpFV2%&e?tsA4jqxGibkX8_wM$Z3EAtbr1`i`r(ammVPuvD%kMJ37$#ANQANtHyGPEM=zt-uvUjJ{CtP+H3s%t?twnvNc_tdTijr7;{`f(t$t(Qd67N#73TDd-X z!xBe%cn$Z*isQCP>w(yGv$uMX`=2o@ZE{O}++s6KBzmEVy8hg2HPBTN3Cy65%p!qg z>ce0N-b#ZK?W(K@z1+ELl0%c$QY0vMamHu?Qf<<)C(9yX>~sDzW}!zq+t)=LQ#npv ztBR}Sh7r)|f#_cgO+PFV=znA6L+5$a`cf5r-lB>%S2?2ayYm-7i`YI2__75Uyqf#f z(HXM$%06r$44dhEyNi&ooC=dm?R3mV$Pfur5ncm~Pk!?G?^!O)iG6u*KS!7nZC(M4 zA|}~Hve}E^H9sNYQeyoMUPCVR*tMoA_f_TSI9M)bvLn|19Y~cLcY81Nd!>qk7qpQ; zelNZPuulksKht~#&ubo=ZsS$zeZ&Ux_aZ?}+<|Xje;s&#K843x!-ORJ#pcUy!hFTk zE{^0XQ*K0x6#OKZ)GmgxY&DRy(|+^M4yj_{u1r(23T+F213FCRi&| zs@mvo{{X$MHd)(DJ5#yQ<)yj%7dw$(yEqH2t*RK3?5_m`bq({bD_4)a=d&p?R-EwD zRy26X;A5%GG~W8r4kMo3o44q&$SYRW)WEjrMzj*4P{$J=z^^

JW5<7J0o=2WzE@ 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 ZUmd%-4uc3AI3fj3NlsO^LfYi>{{dOv@{Irh literal 0 HcmV?d00001 diff --git a/test/image/mocks/sunburst_zero_values_textfit.json b/test/image/mocks/sunburst_zero_values_textfit.json new file mode 100644 index 00000000000..187c12231ec --- /dev/null +++ b/test/image/mocks/sunburst_zero_values_textfit.json @@ -0,0 +1,48 @@ +{ + "data": [ + { + "ids": [ + "A/a1", + "A/a0", + "B/b1", + "B/b0", + "A", + "B" + ], + "labels": [ + "a", + "!a?", + "b", + "!b?", + "A", + "B" + ], + "parents": [ + "A", + "A", + "B", + "B", + "", + "" + ], + "type": "sunburst", + "insidetextorientation": "horizontal", + "branchvalues": "total", + "values": [ + 2, + 0, + 1, + 0, + 2, + 1 + ] + } + ], + "layout": { + "width": 400, + "height": 400, + "font": { + "size": 20 + } + } +} From 6b86bfb4ec5db7035105ba433b881591ff7dc04a Mon Sep 17 00:00:00 2001 From: archmoj Date: Thu, 13 Feb 2020 00:39:27 -0500 Subject: [PATCH 3/3] fix issue 4569 - fit sunburst text inside sectors with zero values --- src/traces/pie/plot.js | 10 ++++++++++ .../sunburst_zero_values_textfit.png | Bin 17737 -> 16544 bytes 2 files changed, 10 insertions(+) diff --git a/src/traces/pie/plot.js b/src/traces/pie/plot.js index 2c5bba41081..624d0825d59 100644 --- a/src/traces/pie/plot.js +++ b/src/traces/pie/plot.js @@ -562,6 +562,16 @@ function transformInsideText(textBB, pt, cd0) { var r = cd0.r || pt.rpx1; var rInscribed = pt.rInscribed; + var isEmpty = pt.startangle === pt.stopangle; + if(isEmpty) { + return { + rCenter: 1 - rInscribed, + scale: 0, + rotate: 0, + textPosAngle: 0 + }; + } + var ring = pt.ring; var isCircle = (ring === 1) && (Math.abs(pt.startangle - pt.stopangle) === Math.PI * 2); diff --git a/test/image/baselines/sunburst_zero_values_textfit.png b/test/image/baselines/sunburst_zero_values_textfit.png index a046f0f7469fecc92f3149ed808d44c7b0b96b50..01f075a6967f4951606adca3d9d54ddc4895ed57 100644 GIT binary patch literal 16544 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 literal 17737 zcmeHvRa6|o^DZpz9)i0&!F6#l?uC4(~a`Ym(mRGzYvbWAslwEfLLZI6M z*$qz2O~lJ*fBobDo{9@c7V)ubZHXXYmGb=VR=TQ_xJ}G0>EajTn^6&p=XUYs&uqbN zPJqL^8|&Q7t*qehSsFq3jZCNd{Woo66aFAZY5d0z!99_rgdYwyj2)c4mMJO0x=LLi2U_)p3`n0E3_mITYK1SXM4!&DOnH~G`sV%D((6z}dqyyP zH3<<}ODgo<^yug$qO1q~c!;$-XL?5{T_@JIefW2UQVrGiQRsk1kYWW@$OlLcEDjZ1 zunL27Qd8Oj-1g8rz#$7l7HdIEVOh4HJ3;PwyD*5biqmwRj ztSP9FFJ@^wJR-(F`YD1V0MD;H8cFtK!JWb($rneYW!C!zbo`T3%2+SP06zlzLT==q z+f5l=p?3&8LK;c6rn>CH$;@w!4txJ*%PN2*+A5vBbfDyq_xxAA=qc9rG`uFiCbRZ@ zqh4+|2l9vz7~IGycXeJg4qDS!IHbPB>y>2>%X0X7|37r4k<0gIQ%Ak$DJ~&+bl^na+@Kmfh4IR>>?6!@0<5g z-~U>*_~kB0A(J0M|1s7b0%*n79h@#V`)iO0kVW4lhufF#sEn_KQ@YuNuD3>;u zDsy-f1VoA$(k%_jv?aoLZvb^b2R3{{TgTPHSrchvJ^p}YXL1y^#8zP}_wcp409?n@ zDcmocu>_oTrJ^aE=b4~Q(7vsJ4R0FHCj;zPry|9>-1|?RsMk)EF+3Fb>{)ccij@Nz z*6`Kk$|E$v2O zWb>{F*4$!;*FfG0T74IfO9}U}BgWbG8L-2iViOwbKA8mS2b*3a2O4K012>+HIR=;h;V)VC7orw(5BL!Kf1 zb>F#z;{9gba#so($FxeeLYfvwv~k3*u;MqM+v`M0_8H}gFDQ$6q_6cVBpccUxs77I zNm?s$jVfJE{_K#WM!E`;ORV=gi$iE|cMkqwR(eK&pozDAG~DklICR%9oeym?-Nce7 za8W6__)CSNZfx!>1Nx4wR~B@w7A0Sc+>MHJUCsXbC_A{Y5F14`absoe?%SL&qO8V% z!XpFV2%&e?tsA4jqxGibkX8_wM$Z3EAtbr1`i`r(ammVPuvD%kMJ37$#ANQANtHyGPEM=zt-uvUjJ{CtP+H3s%t?twnvNc_tdTijr7;{`f(t$t(Qd67N#73TDd-X z!xBe%cn$Z*isQCP>w(yGv$uMX`=2o@ZE{O}++s6KBzmEVy8hg2HPBTN3Cy65%p!qg z>ce0N-b#ZK?W(K@z1+ELl0%c$QY0vMamHu?Qf<<)C(9yX>~sDzW}!zq+t)=LQ#npv ztBR}Sh7r)|f#_cgO+PFV=znA6L+5$a`cf5r-lB>%S2?2ayYm-7i`YI2__75Uyqf#f z(HXM$%06r$44dhEyNi&ooC=dm?R3mV$Pfur5ncm~Pk!?G?^!O)iG6u*KS!7nZC(M4 zA|}~Hve}E^H9sNYQeyoMUPCVR*tMoA_f_TSI9M)bvLn|19Y~cLcY81Nd!>qk7qpQ; zelNZPuulksKht~#&ubo=ZsS$zeZ&Ux_aZ?}+<|Xje;s&#K843x!-ORJ#pcUy!hFTk zE{^0XQ*K0x6#OKZ)GmgxY&DRy(|+^M4yj_{u1r(23T+F213FCRi&| zs@mvo{{X$MHd)(DJ5#yQ<)yj%7dw$(yEqH2t*RK3?5_m`bq({bD_4)a=d&p?R-EwD zRy26X;A5%GG~W8r4kMo3o44q&$SYRW)WEjrMzj*4P{$J=z^^

JW5<7J0o=2WzE@ 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 ZUmd%-4uc3AI3fj3NlsO^LfYi>{{dOv@{Irh