From de1668f57d1e1ea9da19ab6997629a31f9436da2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Mon, 13 Mar 2017 22:04:35 -0400 Subject: [PATCH 1/6] honor y-axis types in range slider plot - so that non-auto type y axes are displayed correctly in the range slide plot --- src/components/rangeslider/draw.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/rangeslider/draw.js b/src/components/rangeslider/draw.js index fac1e9334ef..0e68681356b 100644 --- a/src/components/rangeslider/draw.js +++ b/src/components/rangeslider/draw.js @@ -376,6 +376,7 @@ function drawRangePlot(rangeSlider, gd, axisOpts, opts) { }; mockFigure.layout[oppAxisName] = { + type: oppAxisOpts.type, domain: [0, 1], range: oppAxisOpts.range.slice(), calendar: oppAxisOpts.calendar From 3274284c9b4ca8f9d3d3f382b650a2a2ee1cca1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Mon, 13 Mar 2017 22:04:58 -0400 Subject: [PATCH 2/6] modif mock to contain log y axis --- .../image/baselines/range_slider_multiple.png | Bin 15805 -> 16892 bytes test/image/mocks/range_slider_multiple.json | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/image/baselines/range_slider_multiple.png b/test/image/baselines/range_slider_multiple.png index 49e835105b492c392a3e95f1d149fd22703efb3d..ece1743d3d8b58f4ca749bc6b52ff5444b16751b 100644 GIT binary patch literal 16892 zcmeHvXH=6}*R}e@9MJUD>(MbU%Epb>^*&Q z9lV%(SI<_DnIrt|3rey$O>G-7gSoH6+p@U!m0zEaS|>z|l1>WTJU<$@kPwl+IMA|d zMts~9qu|DO!V8mebK9`cN$2N@<>bJ`mh^x6Iu%C}esL1L$F(bbGi$rtUA|7`+o-)b ziEQ<`<>b~cLpggE##*+V+%LU2iBRvGtJJ|!+)2sBsjgDp1s500ec4iv>2Zaq9JFW& zESKx64SWAt?mwry=x6^p^FOhR;)dRTJ5*g$ZaCg4P$8q#XOm^^k@&(}!^laod#4KPHY$){r*z&5E2F zVX!AVjIWnT_U)bxAWQ{3p?8c`aAF$e2Bx@$&W08|rncu|F%i4Y{o0&~vGweI5>Wc` zNMxxttIe&+X)SSbf)jJ`N1U5JIdTIprM&7qtfo$W`;WMenbYCct_QRG6LU)s%0-Q4 z^lZe93~^K1jxxLbebrUh5+h>jfo}dZwR=O>#E%c8UTn{Cof#_OqgcufB}MX3Bv1VP zo74*ObRnP0Xh%*pK8YT!jh{j^`s33|fo4lr3ThpV#(laq8>=QsFH;~+;yAuz7_*z| z-S;ZCGzv>;CWvBL^mbZC>qUh;ZXJ47S820j%*n*;?uV|0JaXI=%h*f3XMEL5M2Xo? zs1>U@G2M>4f#bxLsG<}vEnju@wSWIW_PZ-Q3j|qFvUzTgBw&w@GSB#&Ku@q{g|E6y zFtvhzZVOdm3nwj(fGZsUBL8QCf41l^aq{2hMRw(!85i3v!<4K}oJh2`sNBYwVh`C*P1)rF*BHubifZE3@IJeW}$fW^g zXU##8BnD{m{M*NUu>(zDiPB&3>Q3NQs+6V&Ins&`g{LzBPa|m$Az|&>B#SEvI?3#A zn2YuZfPtC#t$J4rvbeb^DfVK-?DVuuTfuI#bK@R;fB7zJPTTr!-Y zofjMk9efB-7xke_g&YjjT~RkT(i(c3>N(QwGb%kZRYI6488#q{8aULyHf5J!NbK>Q z_QiL0;>RzLBin5OrM6e1I1U)Ufa66xB1G+%a?!Y_Ys`LV(v{UdNgy~E|Zc;XuLD}h8`RJY* z4o{*s;OjG4(o{h&>dJ^Ll=au^gB#n=h1&wky$C^bCT;w9h_TP`eea4WO>7vYRg#|F z6FqAsZiDN*F&jsUGfPr-YD`qRzx7CI-Mkq*V20&i%$Q*Y=qjpHaQ3>c_?VB?_`o8S z*-t8A*={}3!-h`S4sR?H-g<>W8`}?Ds|L>Gb!Z8hGmP2!BTg?@oBf6dSTmV zFql#zjsJz2KRea$Fgr6z8!l5(k(qpNu+wu6msY`k8m#+@S9>~r)w@#BgBx4}(M|l< zMC5;7bStgMBQdjndv|;IqoGP@t+8&NqDAWSN0$nDFwOXyr~4gBf~05C( zwKx6a2ruQ(VFRsSmK@f_8c zz4GM+Eq|IW;dz5a^_$C(J*^=_-p?%V+P36K7ZSJMuE8P3Be&^FnQc2$8+|$XO5Gbz zn!PlR@p(ThW`jGWG5Ps^SzJ=SWu?|gx$9WHS-6Rj#tTVhTyW%!otKY@x1S&~UVh6+ z$QHqPUpPc8`MJaHLujngW#8T@PRv`!9grQmUJH=%$H}mkrU9SdOGn2GNtMwgfUml@FzGrhqqYewk1K(XKf z_ln((Arcp}o|He>(RFj$*7d^{T4F9;UM}kL$5v@MT-VUrf2Ej|0@W%llM@M+rVa5H zwH)1rCy7Np$OHK?jQYPWaZYw4PeVBtRz;W{VGBAS1CF|yPe%YvSh`)qUt(jF zO=69d)Y~tcpqUXev{^gDt*0{eZ&CUAW{hXV-J-clO96<%_}h_3@ls^iy#}-fE6gBa z{dAy8KJFJL#b_f_zA#jEpF_3-fNTNZkge&}Ts1g3%Ocs@5ZGgAVBez-=C$Ba!ohfTNw5nBy}i3t zW46gmHJB;j zAqZpKIDt*$zLHas5hr8cZAx5n$5cb+0pCp4c}C$4zOu&r@pRz?74I*GG;M~b@#L5- zGFGJH@#&Ua7{w;D&9&@(4%EXTP<EJj05v=Mdi_i<8(LbRg;uq^}$2lR%@J zRBxcRX^eYs-i=ObqZw(cK9zvX4o8wEBLln#0JfB?bfzyLO8i`;i}{n?JF)aO*Gi3^ z)5BY6=@6T)i`6l$)J0~7JAts1gYytJLnZD+f;`~t zmn5`CkI)7Zj@f4N@~ed$m>|V(na)ofnBcRt(onY9WqeFd^>m0o#Y*xD$!naBB~2#> zk5Ou|e~tBD!&GdeUs<80=?)+?jW^#82T~nifmJ2MIUyu@R$ zrQS9Z&!X>iZh14?Dse>y(;Wz;=nS&;WXLyC^w^10U4wdCwG<=;Rloi#6a3#L&nX3! zGPBQTSUm(uhP~fm>L-L&cfrp;aUF5e?%S;MVns>;HinQr6M&2&Z>O7NMR4@-jt^>Q zd(V?21rPkq5FsebA0&tIb6}M2M790Q?6zO33|uqUV-{aezaWcqIyLZl>sKFMs14pi zAZ?9zSV^|xvzJpBCQh0!t%ziy3fOT<39#34y=L|;@J{)8?_99*D)lapQ?nkkp|I)0 z5hx^1%qOk$O2SRZWDlE{t@6!WS8Q}~6K*7hcS#werznfFFSJw>BBpQma20{#!E|n2 z3j)k<%gGWV4XM|t2{%&iM*<1O&u7*1rOyA0CHrM?Fe;-o%WjJ*lp3n!9XHZtkEWjf z@CPcgNH!G2tgFNbenYUi(reM?v-(VW2Z>Z3sh(sFXyX9(k)#d(Es9=p$C*0F%m}SEX7=*r zM2W7Aa!&74;p}i*pX@f55~&v~iR!;{S&dJ(gPK5`9EhII#dWPhMD156b3MigHiMMB z+{2M-3COrVq+9!$0z+zRh#HA=7;|RNDPJrUI25X@IHF5BKH5 zDHshFrQd@oN}-T84X`^pCW_TdH9ICN^Sd2&Mk0n&g1zI3tUQMHfTPX$c%OIPR9{>( zM|?DMg{BYl{?6&D=m$)JE`AUS@GC03eE`7baYGd*!T^e8$9gAbtBA@M zw$m+*2Yw)pzEBBe5qq?0Z$*r?U~HpBmeLg!B35LHa$r=utKX&pR34uLE!83(8Dbu5 zjB=$vft|Tsa%QT}jAVI*P&fh%CH-~PI75Bam&&-v9RXXTZ%`{@H!ZN-1hqZQ(HKcu z>&@=BmAOZRYPoEh!piqy292w#q`8=D3j>V&n@0!p0$85{Rp^8u8p=V9GhaCf5&=Tp zTsqQs>ql9b)}7pXM`PEJB7l_WJV;$CUf9`5R^B9<4Q z8vA)IEc!tXxQ66I+&ZXEZ_l6qk2u3^^8}-`NHEyGDiELZ2hQq_?34(o7dfWKRI~5% z&D`L2_LBtwnEX6|bzbMA+$lT1Vhm7w>PYYz12TTsc@g`&)QX;YE?khSQ~oz&>wh4f z{8yGNTw$uPco*RR2R0@2v1Uf9!i@=2wX`l71ee|WH1NQ2$U`ko#G42>Pu|+ z7Q?U*5u-gDO)?)ARDrH>rcIzrifBq`P_%sW=Ri}+GfB7d9o|`sovVQTS{H}?DwbUw zLc<2P$oon!E_CGQc?|{HD#k{6SZY8iYv7ATX4wuDq9<*tKS?F+OohCJ`b9-!oypS{ zIhW79yto@K2xQ^ywEVEUbe$4&`d+7cO%CsL@2flH@0+=%R#JqYaU1b&U2rlMPHzwk`J2uMJ7I$h!A7%&AS# z%D(n12SXUjl-rE7DxFq>VG%hg5|f`@9;KQ2$gNU?F0&$?8z%@U;jJHgG9dD8Ll5m_M8rq!Z z$U^E*fnbo&UAIvd*MGE}wZ4ja#HV4@XX}_x5_O_0xJtPA6jw^vGu6`%_%0K;$oT8u zODhod=ib798bVIHC1OxD8jOnB4ZX{skOaOwRv*1NEf$GMtK1uh7`_qIV(NK9WoOA& zJs9u6a>ndlVj@K!RZ+2RE(Xnccx;54vn4XfpJyvHwEwa4a5MAeD#ksZ2CcC= zlNT(V4oX~BUW|TbyNA`6{Y*$z8j#-2t` zaP2$7!C0o6KG_28+D1a(HPX%9R0&Frmj^qf}p#(R2vr(1V<>e-s7I|;L1WQocVe8;p6ViM6Z6V9jaYosDZ?8G4qN1N5y zWG&H&7$Yxighyd+t#h$+9#u+xN6WXd=G=n{OtS1;AW4dD=PAz&=krPT>aBbA zMXf8th8ZLQbI48oTkTHO$g!RhD@vRk@Bxi|%yt_x)1%AKCTcithDhl&=fH5A7rBzH zRz6jNdZL8BwTbBI)|}yNg$Pbc&h)XD-(67c>|r-HSN(uX+m{c?E4yisy;~pgQ%Jio ze4Z>}WWe;lx?53uMv^z?NX=No$#hj7jzO3FesBS;}%GmogqMM;Jd@oqCed~$z1A0vV zXKRQX?fA<$G5j|(p#A10IM9+Fhe!CWXkFr>Q)tY`09Lk|X=q@PoiBw;;l~%DsyG`Ozd? zB`I&*GJB|4f)lfnWWa%08St^tWDQYC@}UVJj^6&|WX)yg7w(iep!z+uEqpUS-Q67) zpgr*cNiUy~d3lFs(lBL>mNBkF+O6l?YtKA`ODxaS(|l2tMp%d_Dwlq#voO_;yn<|1 zh0D?9QfuU*sskWxnc@fV3_dzL}fq_DFUs@poONkYm>pr6gY) z0woq0gD1YT+Q&R`T|A(OgR$o^mbr}+!xhl?2Rti_Gr$5Q)_C5f)%ao+({rb-eKT{@ z+#R4x#N@@i!|VO!xmVxam1}W%%CBt*Hg2D{aVxH5d7hu~Hk_dDaq{#D334l0W(7a#2XZ9; zFK|2KolG?Mawl_ToRi+0{f@}Thi13{H#a^?XI9G?6JR7)lLON&htntR1s~qKcCb^_ z25QXiTs>ycfwB~L;Mv2+U>INZ(K!2TYJz@^w6EEJ_~)zyRsoyUp*t+d$nPUKy*)BK zg+=lQ5Hj6GH~b|BgD}IqBOIvV)_o^8P-J~HbW<}Z@5=TE8(x8v0Vi=~lO%D2rt>@vM*I%yI1xUKJe8M=2 zB=1F4&?o$dw)tirV%liaS%>U>S^E6k6ilTEvCGFGs2!TUFZ zG*!FUW*+S|{2>*Ro6NHpo06Ys%}#XD(i?3Qpb`9xT0zfz62Fe9e=6!yBroa;k+b@~ z*j?5^3H$VzXKsq@{EJeUPeCt~J<@P1&2jH9{rus+pm6(NZ>zwKmVX%$l8D9NcL5Xa zgS8t7`&nUD7dO;cCEM-GrswpRj((}_IB^*o@h`CDksTj@ADR=@J9*nc<~JDQV091> zt6BHSjtfJe7(Vc2{drL#a0Mu|)X-nIo@VOIFpFp)fDMvfK%=5Uy~Db@GRg{C5t48d z!34Sy)v^Hlk4|wf0V;UxB88ZJp*15x(T0foneosmahrPECH;sU_WrPnZ6Lg#{T=SV zRBq>BT(TaN#|5|x9)3^t?v8LQeQg?7`f#_?R3ci3EXh2CiA6cB1BO=%9zbH-`THC& znlc6Yr62rGZk^teu8^4Z)EctN%`qR7f!)wza2W3Gg#<`n`P15a>rKtZkRt_kuS_IdyNxyr<3?)?%3j4rw;;V_ip-NQ-lNnW z9agq$%emMst!n2JV1hm0Cg7$#`yIVyiHJUdHe4QJpg=6duf54{wX+vp1^q?1jU_#o zk*{yV#x%Xy6QxHrp8afGYM?t+11Xx<4^1yD41?9+%B4gnv`%e?Qcfd#TeosB{!lR1 z{(Ppt;!jq@aDL7?y_)+4#J8y`E-8a_B9;JMAg@YgO z=x@g>+({beBSMBTciX{sqEKu~m0sFdvkJqQ!pFSBGvjztS~bN8mJ`*QZX@bFcV||n zw1zTTGD!jevS!Rx0I~&6y&w0HTk-CMkIxUXjmLZ0u3ZbaM{BF&Tr8gnPYj2XtgqBe ze=zoO-Bl(|xUh!ErE+n$P(<7<%9oY!Y|od1qPr2nA{!PcfhvbvN%U8iT1&*}3>qqD zKW~E`KJEE^qw~F@8VT|%@(3oi(--Kv>{?wVU1UVp*5RO25cul`QxVF?OUzQ(^fPU5 zPI6+@gvk;UJd|ZgPYewth;K5?hZqEDa{ibm{B3cY%3}YZ z7Sn5>2wsjxtv-C}k{(BuYS4z#cZ-uP-2L692je<&FIgBP`ShS6GxrJ|xCjdUqCe7A76;Ya%)x=#TulAp>(5yHp|7mp3>dE7b}Fk(cj%V!Y8KDd z0{W4dA&&Lr2i8v+p*v2E{{SPd7Xvg;RoC{P3CHcB{(7j^@saHlsVgh;&Dyx&b$DChKSWlRSh^hDL@#tstv|*=9^jS*u@%y*_&ZEnd3rGlktVAdl#E> zhtKpdPH4o}mUz*h3i42ljGNFO0#VU)m8khpTHhv}m#YnKV{u~OY7AnNyb_kvA}@<8 z`oKdGO6Dw!)ajDH9)q9wGThZ@ljM3Kqry!!N6{c%M*3iKcXs5>z#b13MmFsI`BuKx*f2mP(g}BQ&4A< zx>%oIgdnaZGxvH39b5!w>q;6B%aKtc(;QAhs zu^E4$tm{0KSu#55GyY+Au*17kDF_*pl3718vSHLfWL4Dfuy8-Ra4>qwy9`};B9(u+ z0;HsV$e||L17rmpSNmpZIjGaZ(IWjM6zM0-XUoc@6?A8YoJ51-k>9rxVf|u>t4?PB z+p+AOg`UB2^okr=)xLjjG(0+*=GMU^Aq^KEnmO@vu=AMRC zJ9sH%e_w3%$fNL2-8I19B$Bjv6tfce_KoRZT> zRh*1JkeT+mA&{Bk4$>A}j0U!|#(7=h6}a?p%R`9h2m6`~9`!H#s<|GVNNw*&VTNZT z9Np;Z?~MOYoTxGzj^N&hMrBO2c7{r`ht;?kkyUxDhToB?AVEp(;$!h^i3ZokUv4pl zA5+jTaG`Wz3SM)6!&+k3WT_>?8LrqA_YbZ{y0sbdR!DHi&5)82CH_1SB$L3pac@MX zziCk0CDdGkLo1rq`PfY&uq19hFD2!{^&Vi6f(gLH>bwu+*4#H;2pe<5?12*FCuaU| zhx7-b!g|x+oU2W^Z7}E7Uk=8h{(ce|vGXz~rzDC{{M0!(Uz;9<^<&P3IUd<1zj%8ZN!5 z5H7I_fYvxZerpKkHT+tSZ$B}^aqZlTa#8{stGygaRDR5pYh`h7TOJ=FqPVw@b#pG9 z98ladTd)p-{ReTJo~V8jQ{ePvc$&i!jpZ618?prDrNI}P3QA(KmlAaU5 zos&V&+pjsqYj6PhLqQuC<`g=c0QtaR?;{kx<{uFSp=$q!9Sd{L?_+{gln7w){49UM zmH)UOHT=J>EFH{Bf9Ce->m#PX{-Rq@Qk#F|pUwDZGv-$NzjVr6OF*jIcdnBCZ_pR~?oe+;8-A;!k$I{|8a5qt5^U literal 15805 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 Date: Tue, 14 Mar 2017 15:54:03 -0400 Subject: [PATCH 3/6] lint range slider visibility suite --- test/jasmine/tests/range_slider_test.js | 65 +++++++++++++++---------- 1 file changed, 39 insertions(+), 26 deletions(-) diff --git a/test/jasmine/tests/range_slider_test.js b/test/jasmine/tests/range_slider_test.js index 170f464e2e5..37a84ceff44 100644 --- a/test/jasmine/tests/range_slider_test.js +++ b/test/jasmine/tests/range_slider_test.js @@ -294,43 +294,56 @@ describe('the range slider', function() { it('should not add the slider to the DOM by default', function(done) { Plotly.plot(gd, [{ x: [1, 2, 3], y: [2, 3, 4] }], {}) - .then(function() { - var rangeSlider = getRangeSlider(); - expect(rangeSlider).not.toBeDefined(); - }) - .then(done); + .then(function() { + var rangeSlider = getRangeSlider(); + expect(rangeSlider).not.toBeDefined(); + }) + .then(done); }); it('should add the slider if rangeslider is set to anything', function(done) { Plotly.plot(gd, [{ x: [1, 2, 3], y: [2, 3, 4] }], {}) - .then(function() { Plotly.relayout(gd, 'xaxis.rangeslider', 'exists'); }) - .then(function() { - var rangeSlider = getRangeSlider(); - expect(rangeSlider).toBeDefined(); - }) - .then(done); + .then(function() { + return Plotly.relayout(gd, 'xaxis.rangeslider', 'exists'); + }) + .then(function() { + var rangeSlider = getRangeSlider(); + expect(rangeSlider).toBeDefined(); + }) + .then(done); }); it('should add the slider if visible changed to `true`', function(done) { Plotly.plot(gd, [{ x: [1, 2, 3], y: [2, 3, 4] }], {}) - .then(function() { Plotly.relayout(gd, 'xaxis.rangeslider.visible', true); }) - .then(function() { - var rangeSlider = getRangeSlider(); - expect(rangeSlider).toBeDefined(); - expect(countRangeSliderClipPaths()).toEqual(1); - }) - .then(done); + .then(function() { + return Plotly.relayout(gd, 'xaxis.rangeslider.visible', true); + }) + .then(function() { + var rangeSlider = getRangeSlider(); + expect(rangeSlider).toBeDefined(); + expect(countRangeSliderClipPaths()).toEqual(1); + }) + .then(done); }); it('should remove the slider if changed to `false` or `undefined`', function(done) { - Plotly.plot(gd, [{ x: [1, 2, 3], y: [2, 3, 4] }], { xaxis: { rangeslider: { visible: true }}}) - .then(function() { Plotly.relayout(gd, 'xaxis.rangeslider.visible', false); }) - .then(function() { - var rangeSlider = getRangeSlider(); - expect(rangeSlider).not.toBeDefined(); - expect(countRangeSliderClipPaths()).toEqual(0); - }) - .then(done); + Plotly.plot(gd, [{ + x: [1, 2, 3], + y: [2, 3, 4] + }], { + xaxis: { + rangeslider: { visible: true } + } + }) + .then(function() { + return Plotly.relayout(gd, 'xaxis.rangeslider.visible', false); + }) + .then(function() { + var rangeSlider = getRangeSlider(); + expect(rangeSlider).not.toBeDefined(); + expect(countRangeSliderClipPaths()).toEqual(0); + }) + .then(done); }); }); From ea1a4584ac944da2591d2516da7290d1dd643daa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Tue, 14 Mar 2017 15:56:36 -0400 Subject: [PATCH 4/6] clear traces in range slider plot when needed - scatter, heatmap and contour traces must be cleared manually as they can't rely on the nasty `selectAll('g.trace').remove()` in the cartesian plot routine. - lock down all (I hope) possible combination in new test case. --- src/plot_api/plot_api.js | 12 +++- src/plots/cartesian/index.js | 5 ++ src/plots/plots.js | 26 ++++---- src/traces/contour/plot.js | 6 +- src/traces/heatmap/plot.js | 2 + test/jasmine/tests/range_slider_test.js | 84 +++++++++++++++++++++++++ 6 files changed, 120 insertions(+), 15 deletions(-) diff --git a/src/plot_api/plot_api.js b/src/plot_api/plot_api.js index 2e3f0c373ca..629518b1347 100644 --- a/src/plot_api/plot_api.js +++ b/src/plot_api/plot_api.js @@ -288,11 +288,19 @@ Plotly.plot = function(gd, data, layout, config) { uid = trace.uid; if(!isVisible || !Registry.traceIs(trace, '2dMap')) { - fullLayout._paper.selectAll( + var query = ( '.hm' + uid + ',.contour' + uid + ',#clip' + uid - ).remove(); + ); + + fullLayout._paper + .selectAll(query) + .remove(); + + fullLayout._infolayer.selectAll('g.rangeslider-container') + .selectAll(query) + .remove(); } if(!isVisible || !trace._module.colorbar) { diff --git a/src/plots/cartesian/index.js b/src/plots/cartesian/index.js index 41a626bd2b0..0c1472fff11 100644 --- a/src/plots/cartesian/index.js +++ b/src/plots/cartesian/index.js @@ -160,6 +160,11 @@ exports.clean = function(newFullData, newFullLayout, oldFullData, oldFullLayout) .remove(); } } + + oldFullLayout._infolayer.selectAll('g.rangeslider-container') + .select('g.scatterlayer') + .selectAll('g.trace') + .remove(); } var hadCartesian = (oldFullLayout._has && oldFullLayout._has('cartesian')); diff --git a/src/plots/plots.js b/src/plots/plots.js index 87fb69e66b2..6ccf77276d9 100644 --- a/src/plots/plots.js +++ b/src/plots/plots.js @@ -571,23 +571,25 @@ plots.cleanPlot = function(newFullData, newFullLayout, oldFullData, oldFullLayou if(oldUid === newTrace.uid) continue oldLoop; } - // clean old heatmap, contour, and scatter traces - // - // Note: This is also how scatter traces (cartesian and scatterternary) get - // removed since otherwise the scatter module is not called (and so the join - // doesn't register the removal) if scatter traces disappear entirely. + var query = ( + '.hm' + oldUid + + ',.contour' + oldUid + + ',#clip' + oldUid + + ',.trace' + oldUid + ); + + // clean old heatmap, contour traces and clip paths + // that rely on uid identifiers if(hasPaper) { - oldFullLayout._paper.selectAll( - '.hm' + oldUid + - ',.contour' + oldUid + - ',#clip' + oldUid + - ',.trace' + oldUid - ).remove(); + oldFullLayout._paper.selectAll(query).remove(); } - // clean old colorbars + // clean old colorbars and range slider plot if(hasInfoLayer) { oldFullLayout._infolayer.selectAll('.cb' + oldUid).remove(); + + oldFullLayout._infolayer.selectAll('g.rangeslider-container') + .select(query).remove(); } } }; diff --git a/src/traces/contour/plot.js b/src/traces/contour/plot.js index e33beda01f1..894b53efc7a 100644 --- a/src/traces/contour/plot.js +++ b/src/traces/contour/plot.js @@ -56,7 +56,11 @@ function plotOne(gd, plotinfo, cd) { heatmapPlot(gd, plotinfo, [cd]); } // in case this used to be a heatmap (or have heatmap fill) - else fullLayout._paper.selectAll('.hm' + uid).remove(); + else { + fullLayout._paper.selectAll('.hm' + uid).remove(); + fullLayout._infolayer.selectAll('g.rangeslider-container') + .selectAll('.hm' + uid).remove(); + } makeCrossings(pathinfo); findAllPaths(pathinfo); diff --git a/src/traces/heatmap/plot.js b/src/traces/heatmap/plot.js index 02fbf077ee7..48bc073f14d 100644 --- a/src/traces/heatmap/plot.js +++ b/src/traces/heatmap/plot.js @@ -36,6 +36,8 @@ function plotOne(gd, plotinfo, cd) { // in case this used to be a contour map fullLayout._paper.selectAll('.contour' + uid).remove(); + fullLayout._infolayer.selectAll('g.rangeslider-container') + .selectAll('.contour' + uid).remove(); if(trace.visible !== true) { fullLayout._paper.selectAll('.' + id).remove(); diff --git a/test/jasmine/tests/range_slider_test.js b/test/jasmine/tests/range_slider_test.js index 37a84ceff44..f023429df6b 100644 --- a/test/jasmine/tests/range_slider_test.js +++ b/test/jasmine/tests/range_slider_test.js @@ -345,6 +345,90 @@ describe('the range slider', function() { }) .then(done); }); + + it('should clear traces in range plot when needed', function(done) { + + function count(query) { + return d3.select(getRangeSlider()).selectAll(query).size(); + } + + Plotly.plot(gd, [{ + type: 'scatter', + x: [1, 2, 3], + y: [2, 1, 2] + }, { + type: 'bar', + x: [1, 2, 3], + y: [2, 5, 2] + }], { + xaxis: { + rangeslider: { visible: true } + } + }) + .then(function() { + expect(count('g.scatterlayer > g.trace')).toEqual(1); + expect(count('g.barlayer > g.trace')).toEqual(1); + + return Plotly.restyle(gd, 'visible', false); + }) + .then(function() { + expect(count('g.scatterlayer > g.trace')).toEqual(0); + expect(count('g.barlayer > g.trace')).toEqual(0); + + return Plotly.restyle(gd, 'visible', true); + }) + .then(function() { + expect(count('g.scatterlayer > g.trace')).toEqual(1); + expect(count('g.barlayer > g.trace')).toEqual(1); + + return Plotly.deleteTraces(gd, [0, 1]); + }) + .then(function() { + expect(count('g.scatterlayer > g.trace')).toEqual(0); + expect(count('g.barlayer > g.trace')).toEqual(0); + + return Plotly.addTraces(gd, [{ + type: 'heatmap', + z: [[1, 2, 3], [2, 1, 3]] + }]); + }) + .then(function() { + expect(count('g.imagelayer > g.hm')).toEqual(1); + + return Plotly.restyle(gd, 'visible', false); + }) + .then(function() { + expect(count('g.imagelayer > g.hm')).toEqual(0); + + return Plotly.restyle(gd, { + visible: true, + type: 'contour' + }); + }) + .then(function() { + expect(count('g.maplayer > g.contour')).toEqual(1); + + return Plotly.restyle(gd, 'type', 'heatmap'); + }) + .then(function() { + expect(count('g.imagelayer > g.hm')).toEqual(1); + expect(count('g.maplayer > g.contour')).toEqual(0); + + return Plotly.restyle(gd, 'type', 'contour'); + }) + .then(function() { + expect(count('g.imagelayer > g.hm')).toEqual(0); + expect(count('g.maplayer > g.contour')).toEqual(1); + + return Plotly.deleteTraces(gd, [0]); + }) + .then(function() { + expect(count('g.imagelayer > g.hm')).toEqual(0); + expect(count('g.maplayer > g.contour')).toEqual(0); + }) + .then(done); + + }); }); describe('handleDefaults function', function() { From 339ba49fe9bc2309a49a3ec5d51c4da700dbf3e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Tue, 14 Mar 2017 16:30:52 -0400 Subject: [PATCH 5/6] fixup typo select -> selectAll --- src/plots/plots.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plots/plots.js b/src/plots/plots.js index 6ccf77276d9..6f4dfcf913e 100644 --- a/src/plots/plots.js +++ b/src/plots/plots.js @@ -589,7 +589,7 @@ plots.cleanPlot = function(newFullData, newFullLayout, oldFullData, oldFullLayou oldFullLayout._infolayer.selectAll('.cb' + oldUid).remove(); oldFullLayout._infolayer.selectAll('g.rangeslider-container') - .select(query).remove(); + .selectAll(query).remove(); } } }; From e1d703fab9410d60325eaa27f0132d1401fdc22f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Tue, 14 Mar 2017 16:31:26 -0400 Subject: [PATCH 6/6] update range slider multiple baseline post #1475 --- .../image/baselines/range_slider_multiple.png | Bin 16892 -> 16684 bytes test/image/mocks/range_slider_multiple.json | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/test/image/baselines/range_slider_multiple.png b/test/image/baselines/range_slider_multiple.png index ece1743d3d8b58f4ca749bc6b52ff5444b16751b..fd21495ea7ae0aa6345365aedcdf66ec067b3062 100644 GIT binary patch literal 16684 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 EFPM_$)&Kwi literal 16892 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 diff --git a/test/image/mocks/range_slider_multiple.json b/test/image/mocks/range_slider_multiple.json index db8d7b335dc..4885806a707 100644 --- a/test/image/mocks/range_slider_multiple.json +++ b/test/image/mocks/range_slider_multiple.json @@ -2,7 +2,7 @@ "data": [ { "x": [ 1, 2, 3 ], - "y": [ 4, 500, 6000 ], + "y": [ 4, 5e5, 6e8 ], "type": "bar" }, {