From 80314b2680dd384b88849bfdbe748466d4debb36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Mon, 13 May 2019 16:07:02 -0400 Subject: [PATCH 1/4] add sunburst + cartesian + pie mock --- .../baselines/sunburst_pie_cartesian.png | Bin 0 -> 32572 bytes test/image/mocks/sunburst_pie_cartesian.json | 121 ++++++++++++++++++ 2 files changed, 121 insertions(+) create mode 100644 test/image/baselines/sunburst_pie_cartesian.png create mode 100644 test/image/mocks/sunburst_pie_cartesian.json diff --git a/test/image/baselines/sunburst_pie_cartesian.png b/test/image/baselines/sunburst_pie_cartesian.png new file mode 100644 index 0000000000000000000000000000000000000000..ecde9946df9c6061f7b14723d4a9d5fffc4f4e5b GIT binary patch literal 32572 zcmeFZbyt;N+b&F(bc2M_-64|F-JOe;ln{|FMUWDZ4rve;u;^}SQ0W$FkPb#~YN{*XU{PWrARyoMkc>0h55{2Yio-3J8Be|>_7P*@DvkZqs*XAvRz0`C8O z0r7w2@Gq12f3pWELZpks<^D_&PgvlsuW8FGoc8wifi!;RQiIA^1B(DXesi5-_1+@2 z3?7$xfzf#$AwO8tm2n{98tqWC%Dz z`fno?c8hlZ?eDqB*JL8434KHXV?*Dk|LJhSX{I1V-2IA?_DTSO%jJO<7 zf3*1tOWf@7+kDNW7)=+{+3Z{Ek8}Su$tp)E`RAyoR@(57&vJXf@ejYl$3b_0NN1{Q za|jHL)7gjPgVQiIVIyL`BW7Mm_Fpr*OkT9Ty}!HYczv~zq8IncSc(8TnjyS)bJ#Ic zxAc+nW;5f3+s(O48OrX~r=Y$_BIcu=;!nnt=mgLNMin+bf}q|nUw-a4EX&tB&+%A& z!H8O&)qdU?j98*w_?}M1!A$tY58chT(27VmUq8QMz241lwzg2~{@94<=t)_avwAd% zQZNdXPO7UKi|m1@XoyM**Gk=tc~3uWP;|PWQ_-y1)k+F&HxQwuf!)=~Mk=OT`mTsWr3w|MO&@8;9H&YdC&{`J^yrNW7}0;dH(?H}oqCx;TiXwbbmDw2AFb9g!EJ|-vUku9UfovHrmYGtd> zDVsHON<{XV&+c^jkQkdGEQe43c#YFm`{B&Gp>ig$W~;Tnm=B9>t*x3+L*BQxZf>xt z(^BJto#uPV^t~HwI%Q6w|hMaZESC`NR;a<>OvX)Jb(C~s!f(?$y^~O z28aQ}3aeHoASErTeJq)I(nCc_iDfhwA7J5eqZAkntTrwL8J%qdN&@Zdl(N-Ra`hR) zE84S7SjavJ;}+2?)m0*R#+t}w_SAOc0BG}aHH!P=xvbCzp~weuh0kV=7|GEge;S8> zFg2;AW)esI87yB+G55tRH?EU@`BH#MBO7{Vz4|3`Xn(Pm%L%2-{#!N%21e)6O3wsV z8OAPm$DdH+I!D&lI4Y4mjH-23B#sn}X<*orwx81WL=&s|6y6iF<}JpO##8azMSI-n zratf^c)UVaX3zI3A#PEf#62azuX>f49riiK$%EsQxL>$sPk1gcCH%-XuifN?7e%UR zN5Ie}m<^Lh)&vl%5HK4t5V4Y@umxHiL_!`4yF%6n;)k$gLC_e>d4{}!&U5VY*a=ld zKRV%H%weJ^raH~!F2fME-mlHTewQ#6lPmL%?dF5Dv^12I!w8e`N|910P?wCu5Fse& z-ex5NVIXOm2FhjD%)&0{F}UA0J3G5&czZUXfj_8npzI%|8Mw`D-WuU^y18<(9Auz> z+uhTXNWw9=|L5v-Xh^;F%&f@+HA~dHPk}bzmniI>E;ohb);9(Vj`F%VTrQ zc6pD^?efTy!=xS?n5vFG#rivw^9O^r<&fXMrXGNZ6U0T^R7cNFeqzm*0)+srD-%S2 znF&M3``CPZ(+xH2A`DS(KB41fWNwkvk!8;{DJ*Yka+Sp)%taMK;vx7r&AW%(e7?5?TPKGFWG;QtS=lI$_4+ z{$gPfcvVQpL?_}AsW`x<>5+1j;t_dcJGxHjkbLWP+;DA!s)E9PyuWz)niVs7F|W;Y zD^{ENn9)Cs1mY>`!T?l zPWHG=<9NgNFkvw~rlUM<9tE~Znj4Y1Se=ygrM5!m9j@hAp4?FRv!*GIo1XRLvIslv zt^|{ArHhw^42B*mx>ig}5bjkLYo@AoWhc`_tmHk$kK%@Y7YBNqApJ_hgsL1D~-ylFnW?mCE<2!-69FT5CvGhS5* z+?Iuo8+Rq-<6K`H-gh%y)ViV%x)f21zG7j2RISY%FsTDekdRAVlwwQ@Wl~FLDf6W> zR^k?EP(8;h^fID1tfu|-P4Zrs21{`#xwMwqug4}yL4RhwKF`@SMNeeTi5ZV)mfn!> zoeiT>-;*6iLb9L*p1YcleS*9yk<8khcxDmX!*^l?96sbSC>fzi(;TZ?3?KLqu}JOF zF%6}p&g%!lcQ0?XPGndc{1a%f*c#l|&y~lEF*t!n-hP-pSvULx5=aoMU$>2|ijdli zg?hEQVD2*9NIB_1Y-Y7|n>t8u1HDE(4vm=MpqYN6&D6ocQj0!y5@Z-FnKP8}Hbw8T z&-;l4oc%$ZD#1|3vXtsB)9k#DCibjLCm)m8<5_*M1df#x730MWA(4jZFKWN5eGv1^ogH4dCo%9<3pZ;Ox35 zmmSV|DGMsc?1prH{B|Rn1uD2xADQQ%SC$PnR*c@b`X0X%DjP8pFppt9P zP&T{KRkbW^{XA3b@=-wInutwM29#%Tc7TS*s61hfYW zI;UbP_s5>A2*7;#!)z5F`5+NwAE9-V`s;$#(M1c;@3=N z<)0F!AE)#gqZ{aofe<-~^>=2mI3J1|ok=*Zc#~+AeST?pd@y-cU95PHz-Ue|*Adj= z5uN~r4lp)w7Dn$)#4}G3ehN#~RBr1J1O=w+D z#Slr=86DQ|N}yu!CXkA!+zH#0Ntog>idXV&Q7zB34N8h`I!eLW;ydV85$YU9^J`ik zR5cn*xK*t#hJwuU{wUJlgwBvqMxS+qRXU!Ep!qUpf4m6FHTdhZVpT2or(puBlg>Ac zYw5cBw!L~M2}%5O_e|Ct_Fa)*29e1kg_}&O3Cl>G`W_?J5amG90#MQ<|I@9lU}(ay zg&9;MP!xmzemeKyN-)ZZdT^-iIf2dHe_F+GdZ{kH#Sc7>|I-=%&vE`oItZBmV>|y(o<)qLae#Qi zg?Lekfai)3=ZYA2h@f$RG=>+ltt7UXE7uBw-Ib_ zy;a?5i)U;T4*k;x{z$fx@Q>F9a{*6phS<>$5=Qu7n~GqViej5eVl6&FT$I3BeELAF z-G#SSFE`-(t)X1humLOno1dL8F-9|Ka?||dg;jjlaZY5IBws{X!yf%BoD|4|taO!2 z8xqwL@<25B6!d$3!DZ-r4hzOz%AdzZcG|R9{LtRKL&=eDA1NVEMx~hWDNUdcL#V2% zGHmx3A>}lF^A3-e&blvpd%FA~n{J7e7(9IZdx1ItXRpp3oX(w?&WW3J zhT>!hV~Xht6@_Ml;VWHE{5Q&$MgoJ&dZB&2y_TRGyoS=d6ZGqTdT_)F(L-s0AO` zzlFX&u8xxe#VxPx5V6hB$H8_fs2V&%qQRruY;Y=HmW)b>%<$dSCufP7t8pC|p?A4) z*P}_!WaQuP?G<99cU~UUHDyG_#_GG094s~w(JRCXc-yCnW2V08YzU&MW1Fxml=;BT z(x&HScxeGoTWAXynG0xp84va>5X4#?Ot6z2MU-LLDdo`TC(OzWt!up1!_{ z^^Dc9f@jF__wk$#WJW`3@>}QIEJwLI(O3c$c6VmV!}w zy14Q&^~GqeQY_wKHH}qS(QK%4nR648OZYdQ5L@og*XewzIT;X&HWXfPI1>D7Ky#=I zJL$LE;6qWR*b>10UQhJ>R(xwGPRTc~0Wzrk8(!%$M|9ktn2@h&mpe`Qzs~nCU;hdn?NG%Lm%9J72wDZVwLY9TZ{M;8d2EhQ_+PHP z8=`?OHhH#0L+V(}Np4GPt6c|3zoGZVR#(KvtLVU}_@4Scm@ZIC)Xb4Wgqk)H2Hc#> zJ%3&zbG=_8&uSP;_hS9kw?hP>ICNYNK96L~rnG0U)x>>GUf~}Vq~WbxjqYdHzjr^7 zl$~yUWAEofK|#p@KnwtCluJ)X=Ja7Kh6n~Qs#Alq?9ktPbNny&=SdQoHTnPw^YQQ& z;6xj#v7#k#l`T^I?>aD{7eAuaGK5xcFP06?4Tj9&g-h4c(o(2uRz3#mut?unySZ2+7W9U2 zR;aiA32v#2d>5hafvZ$yI_me9SI=JiG=8;sI;~EGMT$B+FVb@|NCcjWhDQ@!Zqm>_ zI;y6`#Ka`;Q^H6`*KHgAE_8!WCQDjDIPd|K0(ZaHY);W2h?VT#FW)wDV1XETgFoA$ z*_Mj-emy#rB(6baqxEu`y%$H;keK7vKFhQI`F;zA1t-~%!Nx2v35(&YPJTH( zkzvP;pkVYF)%XfdrKdFz%(y%e{?!`0UV?bx8qU|M7Vkpky7+Dx?9fdUK;@VA?zSN= zn3E{8>7DX&rWtG%-A!{X@58N8#Vajfcojlha~4~V09Fv|?%z%}6NjYYhioq_YJF(F zomhsE{Ib<(2S3_bk8r2ebZe0VE@#F&I&0=EcvU$Ue)f|P;;!*?C%}H!=>4rbV;3QY zoQF+kiGj*vF@{dYzEp4)kI2Zc>QAZRojA_Uvc;`ueNvQJ1(P9PYc`GRWs#bL04K@b zS-u(&yvQwsJ$e@W*hb-AJAR!N6ko?5mR+yB4<*5S4hf^%)>^x&v4e)%hjtSKHDDI8 z>M(?mfjW6af|X_&anlQ(2gmO6jY^99W9yX@1meh%?5BN!SE zcKK#&e*P|{ z8bptjHX-`X#vOQM()2RopG9dTTtbdP*TWxeseHCreK8O1Evq-V<-7PM$g`JFMx1fP z0w6_D!EZ^Szv-;vp|s7ij}nQXHgJPVzh_)!!+D|zvq5$0euFuXF3A4W>(@G4?Xxbv zVNHu!%s-PzABxd@#1(==lm5J6`NT{VxMz&G6CkE0ZVgwIjs}FDv9boT)as)%7vu#X za9LSdDOU=RY$zflikdWG0=;G0M^5iTC`Lp4QgpGlO)XgrS>x>MLXD0mGDuX#f5L6! zGczncVa5oydI14IIRpUM0P>YQ0%+_1_Y~=)8-rllbflTM68sSn8BLfr?MyhM$D?W; zkqKN0APw93L8sa;)C`89kA;LtaVP~kL2Ow$JbWR*m%c93HI7oI{A_JCn3fXRUZ|A# zyGV~FY@B8Wm&9`|igd++OaOujcbMRb@k~|`McC@<>d|gxht)LHC{@I>NMvsAgCOcK z+Vf_;v}Kan4ylICk$HU7;p+HZlVbeqY1ZdPmdHtYz<#g=s7JHje+?z+Kv&VP^w|0u zlP&I-Cxtj8LXjP6J6SpWDJ%qMnOsm*W<##4+W(1s9ap5maK^5U9en!}imwTu3BPN> zo)G@jc@v(Aax!k`;$a)usSxgAUi*AQ|Mbp``s3t&a|?iP5O{AYk%wISh)jCkHfZW&La4)cmLuz1F_PB?3LiS+Zo712 z;mPQ;SfQzq=`HGS_v1UcsGE+`DK?ZFbQ9BT)KB33Jl3OAkFnf5vgrBU-q*7l{=&8{ zt8U_%4{pF>1+6Sxo9V*57_Z$D@%=8ljvTm1T;M&*qq%EFlWyI!B+Kr zj4owUqifvn@|z24du6eAnfek9s>;%em$zrnb%-DV;dYrT#Imhad*wP zcyohb_KsDjsPT+k6Lv;(msTFU7W8YWRHs3qOFQWGg8UmRo3eyo==G23;QrrJYnfz& z0V)(`^-RF6A;TbDNGUYvSjpKvL2j%(4K>-E&9WxM94_HLz!g}iDNEGc*z>f(ruwQ9 z_~BqM;GbClGE%j-!RDbPL_}eLA0?3q$9^`L(0BPRot_B|RYl`hq7wp{_wHPtO08Vi zxLxXogS1cS_c1bXgpF;HZI1n2M#FBWAFV!y)i#mUW8z|BRDefqe0@wOEhCeKYM*|a z11XGDEJV_(3GNlw#p>gU1m;znfmhR_*R66@^L!>4H6Csc4~j6O0L-estLx^q0o}XW_7|!E(@8``O-|lYIIdz5(z?}tk z;*A`~qnrka(T4;bvRudxZ>ygja@3Epe8v>#u+YMN*th*VLbml`s0;mP*PJ(OLIpdMJYssdI%o!wHGg!Frq9W9a8L9TD_KG( z*QNr2BcP#FB8JiNEeN3F0pnHA2sJ|xP*qSP2E%8cVqSU$>yJ?g6M#SyIAJMwSjs{} zm17YG4oJ*l#+*qcY`4#g^RJMit}44wp#`g56)hxnvn&SdQbIRAh3>>DNKQy!u^-xj*RVa3hj?bD&COEY4ur~EV-Bxyew7?`EE-lx@ z(ZPqH*9JXd=*Do0sL0r4i$d49)nx}K=AuNtoK0T=M8qGrRgaVQZlN(%%?I!mXf<}D z-AgUr1mxrq=54;YfC~QH_jl`bXXqIcqBv?9Al;tNR8ZgjIn@vg{6h}<8o7mfm!wQw zT8Zex_8VO9gT;`RmX?zXDOuS!Cq^?BX2*a?XZw`GriX=$jw`UQs12K>Y39!e-ocrQ zb<}D#Y_z;8gc`nNMW^X&q|cw>e>v<&O2W7F%<&T=Znl2(<9Ap;^=ru-?b;$qMY!4Z zf;!SkX0l)BT5romo#?jU8^9)+(qFYs&{Gzhv7`~w8Pqw=$OFE*%KOk9oBAoS=jKRA zMuy4z7?KIm{rEPaoDA_5*Jjz-)!=jF~gXlc>lg9tx=LYx=sao{BQ z9kT(D35eIIXS*|afq{WVG;&zU^F0?g%$-G5jtZb(rCNktS_#PoBDLkY?>+Oyo;4sp zWjhFe_fY%K$OI?X<3LB=^Tom7{RX5l@nxg4Xtt0;Wm+lc%!k+e?C-T0aUW;-LFIf( z%_2ezg~n>vICu0=3#E}KxKiaYuM7@G()dBWqtT@tGxfLVe03_M8eE?hd~is?L~WoX z`wcLG99ORPU;liIS_OoE1mL6d0Y&_6B{nkhS($!0%w~{q<6B|&fWD$)#Lm07p@rx8 zv2h3$w0feYqsPWC*rQl&&mSimoIT*xzTt3Rx%3cyf&SCAmf0B1qVF9#)>^(aGwj-! zbYNBHG}FNO>)4O?#2kK@#ugnK`=Q$g4Ih4!5KTP^xE2V1cC@!Xa$8Koam4NB7 zwqo|W*>6^GD_ZwTNmZcwYT-VP*y*~U0m5n4Oq`vat^6L0FZ6AWX7E1${zz6%4vtC< zu_c?{TpadS+YS?=IQ70K`CQ>>GGVWfTnPEBbpPuaq+7*NzE(v4Wu_>p*$8fYUVJZ} zBpGwvH$pO1-7sD zbIM=Oea~s0vfVo-wUJb|U$e34l@>6Z09xIK==$~xmw%g2$o?QD)NZ0X={tMgXFVey zE(`3#$gihARbLL*M;u(o>S1rvE(U*Y39KuPjep>cRryxEFd--@UB994j1&qc86L5) zC{l!9oo=oDnkw5~Y~nW$y7h{t;77~N&3%2gO)y{UaGD7b89v4(<`C=%$>>KeL;FlI zR%9rir~GqL#$sLd0)>`LA|!N&mf?%ie$AJdLfwOwL?5?5A+(fRjp6KZZ7YXYsz$wp zbCj?SjBsLcEJ?fojml!koPgS1MeRt*Bhv9%9&j-*6=I^z8!3=?) zrE8+cQ++=A4c3!bmBc=nhkDL-dcHKnq+Oof!unIZ9xL|c3-p_#H2Q^4yziG&t0#QE z>iL%IQorOfV>UvQkdV-?s;Y(k2xT-uX!hDI+UrUX*Q-twSBRy04VdAig?C__N9P;@ zg2lHFQ(R4%JAXi6D&(I?@R01lqPkg1NJvkKAN}?2;L3V-<O3y2#EzH4-X6KmI&idP;@m#S?0b{gq{Y6ALp*p?`Q71%R(q5t-j~68-aI{}+9-^= z(t!9fph_%I6?FsH##YPh2i-cSbQ(*|1@zhabWq@%td(Ed^%Bh=U*tF$oDp-(eK*gS z$Jr=ByZSL)g>#~tYnsTU);(Y6w6eP!1t3=z+x2e%2v$c=6cpk>$G;uWRKk-?rv>3j zejh4qKEMvQJN1gij}y5p$;XJ*K9YSW!*gSmovgCiLoq2~u6c&xH_dz?-&8abQ95b! zG52}1IO(l{(G;D#DYpC4x-)oqWid<+G|}cRE{1$gtZK@4Lscn17Hz>y-ArAhSZ#4* zo+lE{_I=E8E1BTEnOj*+5nvNZk8u>Oeq5uu+)wUJhxc@=9l`rcp&?hpp``l@vEO}U z3f(+U|L`32zlI#GNMDwIdF<~G<3S@9`z+Q~vIUY|;(3RQk5A*uEKHtMIPmU|4~T!L z=H}+#rs5?N+YDLFKn?+|$ZDlgDQbBDndK?cD8U{rRDF$$9E6bRoXUI3OQ#6qG3WQ5 zx1WW>X)$}Q`rAL`lgXAo-E4oumiB_K?i-D`r^1XGBX8>^fvtv~GVf|4r6(P2Df*IB zT5!t{?dX$-dCo<6-(KUr*bukZIXKtNgUrc%Yj1X>p7~%*`p*H{4_Tc=!$D5wJg8Yf zR>-tRE;2SeivYb}n8%3=0F79h4e%xe0D%o}Qg#fYy97Z!q5WX5B(xLxHjYJ;J%GPI z7b4<%=14XgerR#OMM7r$&&#Qly&zk2R06pZZOOzwnD=vshFXjrIX#>g?H`Q>kbKo{ zVsko}H?P=aB2t zK7KH)*-VfF`5fZAj{(_t6Qtt}#{sK_q;#r=G8-(UdtpI8go}FR{yx0+(vG)i8vbzn z>>EnAqfcadC*z;MTL*1Mno#}VquOU*pXPu!v*0Da&g}lW)S7O)hp7iVN_n;H;^k|* z$O0lrpZpI=mcz&E8~ET2-a#~;pJk<-uJwe=38;jEGl7EZ^!Klmwc<psL_Rf3io-7T2REw4Md?RJOH zxi?O<(vZmrmlz7z_(!0Gu5VAN0>}v*e|ZnWu4ey3rs@_SWAH>m4j*qz0G9B++|~r(?(F0h7;OYh3B}Rr zsY;!M0nE9(Os7z1H-t80dy+gu2@V?_pRS%o^rbUC`>TM-E8pG+$+9(y)y~9FL}aua zmxX#3gNjU#n{qJk^ZNewLaWA3t&rYjzP9TltB%{wIHNxZagCl^xQk0mV`T>103>1I z4m59l%?rl|uqpUhxFdoIljmG0I;v8o+=qEfBTBs$k7r~U{gkKlqRI#NjM=`yueeN z&-oibe)-oCK1h~Ju+4|uf^ZuV8QBG(j#$v?S%VS4AsQBfN-*xn>X!%R$)dr?7E3n~ z6;(8NOV)A5`@}Mk6;hwLTXkb44Z00e05? zUJqcqyng4-8=g(-*{1IhnPyBWXCz5^xyv6D$`54(DooZK zuOCUrb9`i>>8nPW`|lGcVCkpBPrSd}K`VK8NiQEmSqNn#;WQ=&1ApRnUo#^uf^JEQ z)w8tqa|kWyY`}0-cLL+RSo|klm~rj%kWYcvN(2mG3JMC|jm4~4fKt%0Ai_vdQBiuJ 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 Date: Mon, 13 May 2019 16:11:34 -0400 Subject: [PATCH 2/4] make Plots.transition only call the basePlotModules[i].plot it needs ... so that sunburst clicks do not attempt to redraw cartesian traces. --- src/plots/cartesian/index.js | 9 ++------ src/plots/plots.js | 30 ++++++++++++++----------- test/jasmine/tests/sunburst_test.js | 35 +++++++++++++++++++++++++++++ 3 files changed, 54 insertions(+), 20 deletions(-) diff --git a/src/plots/cartesian/index.js b/src/plots/cartesian/index.js index de802c03c6c..29aa0f73c3b 100644 --- a/src/plots/cartesian/index.js +++ b/src/plots/cartesian/index.js @@ -125,10 +125,9 @@ exports.finalizeSubplots = function(layoutIn, layoutOut) { * Cartesian.plot * * @param {DOM div | object} gd - * @param {array | null} (optional) traces + * @param {array (optional)} traces * array of traces indices to plot * if undefined, plots all cartesian traces, - * if null, plots no traces * @param {object} (optional) transitionOpts * transition option object * @param {function} (optional) makeOnCompleteCallback @@ -140,11 +139,7 @@ exports.plot = function(gd, traces, transitionOpts, makeOnCompleteCallback) { var calcdata = gd.calcdata; var i; - if(traces === null) { - // this means no updates required, must return here - // so that plotOne doesn't remove the trace layers - return; - } else if(!Array.isArray(traces)) { + if(!Array.isArray(traces)) { // If traces is not provided, then it's a complete replot and missing // traces are removed traces = []; diff --git a/src/plots/plots.js b/src/plots/plots.js index 76db1aae239..9d9b942fc4f 100644 --- a/src/plots/plots.js +++ b/src/plots/plots.js @@ -2309,7 +2309,7 @@ plots.extendLayout = function(destLayout, srcLayout) { */ plots.transition = function(gd, data, layout, traces, frameOpts, transitionOpts) { var opts = {redraw: frameOpts.redraw}; - var transitionedTraces = []; + var transitionedTraces = {}; var axEdits = []; opts.prepareFn = function() { @@ -2319,16 +2319,18 @@ plots.transition = function(gd, data, layout, traces, frameOpts, transitionOpts) for(var i = 0; i < traceIndices.length; i++) { var traceIdx = traceIndices[i]; var trace = gd._fullData[traceIdx]; - var module = trace._module; + var _module = trace._module; // There's nothing to do if this module is not defined: - if(!module) continue; + if(!_module) continue; // Don't register the trace as transitioned if it doesn't know what to do. // If it *is* registered, it will receive a callback that it's responsible // for calling in order to register the transition as having completed. - if(module.animatable) { - transitionedTraces.push(traceIdx); + if(_module.animatable) { + var n = _module.basePlotModule.name; + if(!transitionedTraces[n]) transitionedTraces[n] = []; + transitionedTraces[n].push(traceIdx); } gd.data[traceIndices[i]] = plots.extendTrace(gd.data[traceIndices[i]], data[i]); @@ -2427,19 +2429,21 @@ plots.transition = function(gd, data, layout, traces, frameOpts, transitionOpts) if(hasAxisTransition) { traceTransitionOpts = Lib.extendFlat({}, transitionOpts); traceTransitionOpts.duration = 0; - // This means do not transition traces, + // This means do not transition cartesian traces, // this happens on layout-only (e.g. axis range) animations - transitionedTraces = null; + delete transitionedTraces.cartesian; } else { traceTransitionOpts = transitionOpts; } - for(i = 0; i < basePlotModules.length; i++) { - // Note that we pass a callback to *create* the callback that must be invoked on completion. - // This is since not all traces know about transitions, so it greatly simplifies matters if - // the trace is responsible for creating a callback, if needed, and then executing it when - // the time is right. - basePlotModules[i].plot(gd, transitionedTraces, traceTransitionOpts, makeCallback); + // Note that we pass a callback to *create* the callback that must be invoked on completion. + // This is since not all traces know about transitions, so it greatly simplifies matters if + // the trace is responsible for creating a callback, if needed, and then executing it when + // the time is right. + for(var n in transitionedTraces) { + var traceIndices = transitionedTraces[n]; + var _module = gd._fullData[traceIndices[0]]._module; + _module.basePlotModule.plot(gd, traceIndices, traceTransitionOpts, makeCallback); } }; diff --git a/test/jasmine/tests/sunburst_test.js b/test/jasmine/tests/sunburst_test.js index bc5d423572b..2d4e86603c1 100644 --- a/test/jasmine/tests/sunburst_test.js +++ b/test/jasmine/tests/sunburst_test.js @@ -1160,4 +1160,39 @@ describe('Test sunburst interactions edge cases', function() { }) .then(done); }); + + it('should transition sunburst traces only', function(done) { + var mock = Lib.extendDeep({}, require('@mocks/sunburst_pie_cartesian.json')); + mock.data[0].visible = false; + + function _assert(msg, exp) { + var gd3 = d3.select(gd); + expect(gd3.select('.cartesianlayer').selectAll('.trace').size()) + .toBe(exp.cartesianTraceCnt, '# of cartesian traces'); + expect(gd3.select('.pielayer').selectAll('.trace').size()) + .toBe(exp.pieTraceCnt, '# of pie traces'); + expect(gd3.select('.sunburstlayer').selectAll('.trace').size()) + .toBe(exp.sunburstTraceCnt, '# of sunburst traces'); + } + + Plotly.plot(gd, mock) + .then(function() { + _assert('base', { + cartesianTraceCnt: 2, + pieTraceCnt: 0, + sunburstTraceCnt: 1 + }); + }) + .then(click(gd, 2)) + .then(delay(constants.CLICK_TRANSITION_TIME + 1)) + .then(function() { + _assert('after sunburst click', { + cartesianTraceCnt: 2, + pieTraceCnt: 0, + sunburstTraceCnt: 1 + }); + }) + .catch(failTest) + .then(done); + }); }); From 1ffcdcab70bf824871a9431ec278a64596bec293 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Mon, 13 May 2019 16:11:58 -0400 Subject: [PATCH 3/4] add anim:true to sunburst level ... making it smoothly transition with Plotly.react --- src/traces/sunburst/attributes.js | 1 + test/jasmine/tests/sunburst_test.js | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/src/traces/sunburst/attributes.js b/src/traces/sunburst/attributes.js index 52c88da4a4a..b6398a59edc 100644 --- a/src/traces/sunburst/attributes.js +++ b/src/traces/sunburst/attributes.js @@ -61,6 +61,7 @@ module.exports = { level: { valType: 'any', editType: 'plot', + anim: true, role: 'info', description: [ 'Sets the level from which this sunburst trace hierarchy is rendered.', diff --git a/test/jasmine/tests/sunburst_test.js b/test/jasmine/tests/sunburst_test.js index 2d4e86603c1..c1cb3803da3 100644 --- a/test/jasmine/tests/sunburst_test.js +++ b/test/jasmine/tests/sunburst_test.js @@ -1195,4 +1195,23 @@ describe('Test sunburst interactions edge cases', function() { .catch(failTest) .then(done); }); + + it('should be able to transition sunburst traces via `Plotly.react`', function(done) { + var mock = Lib.extendDeep({}, require('@mocks/sunburst_pie_cartesian.json')); + mock.layout.transition = {duration: 200}; + + spyOn(Plots, 'transitionFromReact').and.callThrough(); + + Plotly.plot(gd, mock) + .then(function() { + gd.data[1].level = 'B'; + return Plotly.react(gd, gd.data, gd.layout); + }) + .then(delay(202)) + .then(function() { + expect(Plots.transitionFromReact).toHaveBeenCalledTimes(1); + }) + .catch(failTest) + .then(done); + }); }); From d5064ff3e7da3b036b66e4def205e558d36367cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Mon, 13 May 2019 16:59:40 -0400 Subject: [PATCH 4/4] no need for new sunburst/cartesian mock, use `display-text_zero-number` --- .../baselines/sunburst_pie_cartesian.png | Bin 32572 -> 0 bytes test/image/mocks/sunburst_pie_cartesian.json | 121 ------------------ test/jasmine/tests/sunburst_test.js | 4 +- 3 files changed, 2 insertions(+), 123 deletions(-) delete mode 100644 test/image/baselines/sunburst_pie_cartesian.png delete mode 100644 test/image/mocks/sunburst_pie_cartesian.json diff --git a/test/image/baselines/sunburst_pie_cartesian.png b/test/image/baselines/sunburst_pie_cartesian.png deleted file mode 100644 index ecde9946df9c6061f7b14723d4a9d5fffc4f4e5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32572 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%0Ai_vdQBiuJ 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