From 32a366dbaa58091a8f0c0b15fb4c334be8977f95 Mon Sep 17 00:00:00 2001 From: hannahker Date: Tue, 6 Sep 2022 16:40:08 -0400 Subject: [PATCH 01/12] Adjust skiptitle logic --- src/plot_api/plot_api.js | 2 +- test/image/mocks/z-automargin-zoom.json | 61 +++++++++++++++++++++++++ 2 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 test/image/mocks/z-automargin-zoom.json diff --git a/src/plot_api/plot_api.js b/src/plot_api/plot_api.js index ef16b6e5f51..7b40b906132 100644 --- a/src/plot_api/plot_api.js +++ b/src/plot_api/plot_api.js @@ -1889,7 +1889,7 @@ function addAxRangeSequence(seq, rangesAltered) { } } - if(ax.automargin) skipTitle = false; + //if(ax.automargin) skipTitle = false; } return Axes.draw(gd, axIds, {skipTitle: skipTitle}); diff --git a/test/image/mocks/z-automargin-zoom.json b/test/image/mocks/z-automargin-zoom.json new file mode 100644 index 00000000000..38e30a50090 --- /dev/null +++ b/test/image/mocks/z-automargin-zoom.json @@ -0,0 +1,61 @@ +{"data": [{ + "showlegend": false, + "type": "scatter", + "x": [ + "@100000001", + "@100000002", + "@100000003", + "@100000004", + "@100000005", + "@100000006", + "@100000007", + "@100000008", + "@100000009", + "@100000010", + "@100000011", + "@100000012", + "@100000013", + "@100000014", + "@100000015", + "@100000016", + "@100000017", + "@100000018", + "@100000019" + ], + "xaxis": "x", + "y": [ + 100, + 101, + 99, + 101, + 98, + 97, + 101, + 102, + 109, + 110, + 110, + 102, + 93, + 114, + 115, + 115, + 171, + 185, + 190 + ], + "yaxis": "y" + }], + "layout": { + "height": 400, + "width": 700, + "xaxis": { + "title": "Revision", + "automargin": true + }, + "yaxis": { + "title": "Value", + "automargin": true + } + } +} \ No newline at end of file From 9c3be0ecbd09b2e0f73d9c024b6065a0a16343ed Mon Sep 17 00:00:00 2001 From: hannahker Date: Tue, 6 Sep 2022 16:55:34 -0400 Subject: [PATCH 02/12] Add baseline image --- test/image/baselines/z-automargin-zoom.png | Bin 0 -> 27677 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 test/image/baselines/z-automargin-zoom.png diff --git a/test/image/baselines/z-automargin-zoom.png b/test/image/baselines/z-automargin-zoom.png new file mode 100644 index 0000000000000000000000000000000000000000..98a532c2e3a9346d30cb72feb0f4c74dda718b8b GIT binary patch literal 27677 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⋘EsaHz>!qh^pgThBMz#tfykRpB*&OnI! z7h6twBfj(%c{Os6p>p<19IA@G6H4o3VeF5$PXB|5G5!Y;qY-BU@GE*gKdUzZDNnn# zAubAGr+a|0!Ww=0fmxl2fx*}1V8a5&@3w@Cs$5Bp0r&SWRx6qDV9(=%UkARIO;p9^ zvW`%hE{SJ4jsO%n_J>?pKPzhxprOcs z1dkexNl7PQYfer51{j}xW>zJHG(s(<3T%^8twNoQOy3as)`9Viu=!B`&x=^?;o3IB z)}P+KeXA{10HtZZa}p3e{lIzKO&jU!>nms~y=TGFAtK(l%N`m*Z0O*&eKNQlWLVb# z66X~;F|Tbmu3=wGYdb%qGfHa9G*WidXrov|C^WsLv^7vYzqbu36~dEK_aJ~f!)t54 z9ZeTg@R~7kwUNX2s2;rjsM9l5!Jw4z7?5^SMWM$8*BCwYPM2e)KJag7QXj+yrBjPFIvA;H@*#*>hG zuI=Vpo)s}eT;6;#MFU~Cj8FB?b>f3<`4J9$v6*y} z(xkUGV&yZos9jwENRVUaE~$$H5{W+%5mC0s#ko%u=Jgx*9vuMD_R$%8 zLUjv8TouAgQklF5(JA9@lzdQ@*0z%vfNZK`FMh5?RPAJLyFz22yaDQ`%{NjF|Iv0= zC~k2KIr&p3Rj`oDDLCCzTp5iU87%YAw@8+4TOQPJwzbe#6AE3xv)iaO2Q1^lP>{d_ zwv|)a5VahYpO<4Sw`J46*E@O8v#oBbQKQ2)?(EDi!vbT6=snEpwcR(`*VF3Dd#r44 zc?UBx%Wu+=Dr>N2^htK7?1BCx{Wz_n{-~_`SP+@dsp^-2&$%S*!RG@ius^$~j<-|e zPE&WsPX{`Wu8w?ix!&%YYM4@+tk9M|x9g#lnXGxSf68{SiA-=kKR$XY=yI&EefvvM zz$;PV%yN$8as(l6MPcC>vlJ3^1Ytd~V*!4G_03{uCh%#;KW{N0V$9ZzN?V<88K-!D zSu&zpA%wBLrq_C5LIARStbI~;PWKAggs0cqT zX@K4+Ews*LMNra5F)07SX7_2GXc7v;5uKRmRP6kA5i|6=#>J6`Ru- zDLa<1$BP1NuB8!l^1MSl7_fW}Nn<`x9xl0*Dpm=YjH>^(lZlmfV+>=M0GRcWrQqagAtfmPn#d5?av<)n447Jb}tv%y@piLLjPV%q~5 z{YgFXDq{8J+R(k_ig*gT18g;-C?2e-lpHz~nyy`O1H4!6CKQk1{?qx_5mW3d%N~rS zJ~Jh8S|Lv*uQ(DO9t|sLRHfe6G~&ma$P&|+KlOa;`1o*T+X?66D-f;mc=`=stabI> z1WfLZ*Y8AeCN&sXmIp;kn=NiSJ1ieCbi(@kOv13hHDnW3-L22gJyN80YQIA?ojcxI9 z56$rh6k1td?^+(DD-R?^C9N0X>^I#>QXa6GVQKSnRDPbT)B4qQ2I0C%YNsBQ5YY_K z_riBl-_T%%dwY*K3-ETRKlz+XE}X7;gG6{&%PHe4-h66_`YQfjM`=QK zM=JT0i<9Tj6fJEm{u~NLZz~hYah)e+{V$)A!QFBxk_#OE2)7n&066vm2K+yDT`XR$ zZIj987_#$+Bvie}OH|;*@Q&u|%OQ!SgGBy@t9cPB;PLrkN9WFkFw?s*dZzQ|s`i7f zZMOUuiy;@rVto_u{aSFSO}_3O*+Jtc*6LaPHZ*+->9 zI6ghRIBC`-AtS=5HJ6wCP1alSMt4XE5F3lPre8oc@umgpn2nxp?Kr3>=gWO;k$1?> z+73E7o@~K{yN}qYtoOXO=%qMT`rH+MWdr6x{gI(0mub7>V$r^VZA(~Yq_jX+RWnAn zKRlm~Bgo5fJBqIFqNXMn7avVAo9QIh>{xx;>x$D%J)iJ9aFV+UXoL=N6>ec8 zR#AY>1$o>#-uHn*GygYxilYrybFYJ?9J@;QG3DGDk%f*YeOdPF;=3Sh#PJ!E2CCw2 zVj%|n!$~Z~G9joa-UMFW;3*LtzFRk!?AXItvzZ3sC9@t}&QA~V^)!=R^i(5ImFmvc z*;-;5rNopn_rr*n7p2i1FRkxo5}`$gu^AFIaGTh~{nB2y?)CY4Ti4JU`|8+2HB<2Vkj=D&YFp_~%Oc zIVZAVY#R8V3%kWNaSVx1S_pn}zd=YOc{aP+O*hD+q8C)z>NPcA(x%_UnUV(Fr~gKK ze}Y^kAb=t)g|w?py<{Q&1Qt zlsy#;$GaZ{)9;lxB5cV6nDYBrWO3LnrnaD~RHJk<|92Za%4icWo2JX%Qb06zq!N*;!edm=A}hIT zBKK-^ubtk^U<^*497;y;utDZ?}zg@Pu@? zzG=E=2Pntctk|gcaNZz>XWD8XEcC77Y}Q5NyKkLNyYHM|XdFM4lWYHWHoVX%4a9CwuK?Iixy_GUu@26h$vYm;G ziwiKw2=(%HcvnWtI4#C2Bc($qqOfYT9_MuAQ1A9#(^bna~ppS5^As!|8p5ozW2l3(}UoGd^V8V{>djxGf&CDAxTx z?nzkpYM(r7p4R~?rBaj(Q`gO9zhT3xnKL!YF9R(0K?U;xh!&ow6c=-7c|~982bpi? z`}ZRjzQ;zeqFPw8|8DshHi7=x@&T4t2t#r3%4w2MU$8?Fg0zDiTEn6)+0gf1Az>=* zq_oSiA3nsXKV{W^#>%9j{gGr(lb$l4np}xoD}=$FBI%+p|5gU#$wEz9;PBURmb+CL zoSn9l0U9ImF>$*G+ZrQ|!kYOab4TQGiYGY_9rYj)I{krZAob78@ntDL`cntpCe-rr z@oCA{4pjiM6O^8}T9D#50*SMot>&_ho!Kp4N&3%F5>tzF5!S9;6cVO5pC{UO&eD8J zsn6OOov}!F5@KfLz=DY6Ua8@lh6q=9A8b-N=}X{T>kw$~C}<0u8h2*%sYDb?Y9?2F zX(NRgaDq%qzYbR@>JI)zaQNdwAACaAs69~=JB zosuYM&$3?vk|=p}vWogB%5lFTIXQPTe%R;3@2oG?@7si`_E!fI!|4Mk$++!VrBvGk zr!};&XP9zz1;Wjm3U70qXRDEo^+v5{8kEvxfNJ7OemUfO7Cm&C`#h_M}2tyXF!i7BP%4iC3CJp*sD+8DyYv;)O$R1vj|0_$3Y*y(z3D ze<3W_R?65j@-`uBH)!{4J-T0`dGCw=9+nQoX6mR0PsrV59dt1*6wI!Jn32L=UcDK? z0K%0vlG6$3vPZnF*job#qf+D7nS2>dKR9dM#rT*8)wKEGyyDiEZ|kDZn77^QF2gK7 z4s5LGS(3s*@2%NzQm@w2b|}5|cG=YYWLP;8j-giEBFOG0@r6Jln^O!|pL=9fwIozzA9l-#Xnii6+>;IvnkP7; zxn#uBR{O8yP9l0uJ$i0FzvMnOcavWD$oS@BAo+!G(hAoz4LZJHvnHRs+}G{97w(SB zkYgj`(Ci((1ISZvLEZw%lZeiQvPe11@cT@(%!#2%9ZZA*T5;x0KC10QulM*lkFp7g zrE6C1h-k==H73D)E{8mc0=iDrAf1;N9VAbbn)zY0JF7MM(6v^Gp1?ua+ z^}Ad5Yb(1Jm<+0F&SB-MGs}hKDa}6y-LzjC3{@&@9#|}Mj6jih`}2q-E*Dg0ciFsS z2Q{;%%PqyrUu8kYum1dnTpODnm+=IgicISbXAY?hXvoOs+Sc5<#945oW@MG9c>t$K z(Y>5oP%sYta%&lZB@F$b8Qj=O^qHu#x6EHm31Dlm#vu`q_V&n7A zbD6aHG}L??Q7x-WpEOsz&&s@EDHPTM@_lw3Wlx+6>C=>W=8Cr+eY8C0Oj-c+?~f~b zwK819*dD{>&7zV0@y_g@?M;4oRDn=-z)N)^A=SIz+&}EBthfHn+gw;cC_)sLC;#Am z(dliO8@m_1A3m}RyuIONmYmVz+~lz0j0xY#Yl9JB$4 z=`b&Ht$t^!t-{`$$i?@kqhX*&3ITpBNXJ=cuZ~S_!M@luMQx z_om0Koa^df27&Kl3j%Nw8Vty{xUWoPct$@^NEX${_78{HwsO($waqMenD48Nvvl|6 zXB4@%#63RVP9x9RD|6;NH)^aYPN-aad<>#=)7{#LVh01F{K;g6RpM|P$Gc1g;_X7X zZ~ZV5J+xVk+w&Hm6{McGN3vLH)s7QuYu7kVk`_--$?EJgYFQHp3<@t+A9}0#T_sm> zt8eW?oL}k7HtWC?VFloTRIYI{A}Ogr^o5M%P?6tj*)(R5%Dyjp{`v$^L_w$Tqdhvv z!C8+5dp4+Oh+bk>+L}1u=RP(xAR69#ofa^*82bPNrcA4{^wIz^9MN{vXzu8)uUD(yq3SeAJ`u0)k#@~=@u2c&n(Gg8MDav#KKyMMFT zuV1Ii)45M6gkhx`T+!OlMtgoVe=M%4p`Sdr_Tt@Q=aD|%q4~1{ZsiLj$CQF=IF{~e zh<2&S58vilIJ8piIl-BdLi9Q3i&+)HA|fUosItgwMjprGC25GEN{z>h?CoqcchodC zT#e4j;*h;~B`^HTZWhmSzdr%#qpc5CZ54OP6c z8`l%Qiq)iAN|gwEN?BGNM}A7(b^)Ec__eG3RP+-n6jxxzUun)twbu8b!t}<@?P7ww zsm%rE58*!gvRbuc%`(&n@%!;+{2p8V8nCxi&)ib5QB6&C2R|4)KiJJroYtF75HkEY z5PoQWGk$)^g?qdUQ*fij$yIVxBvVYiHFNesM7N{xVMkRmw^j?{Y4k3s^~7qSIc3j% z{$-2iIrcb!-U(Tb_I4`MQw;zCE1W}uZ*st-KLuK9S&BTE8Nr1mAPWoNe1f5+#I~&{n zZKrFyv-Qsob>D;L0aZ?jj!%|e%V?1S#42;jTJ&8bA^{pOIUajc)$#82P7qBMV%F*k*BAj~ zxm7`F(%ell6GFdH`2|nJwYTv|NenrM2#|N^F83MjBl0~`)>9;`i=e(13Rt#ei@(P8 z!$7XuHSqwSrqS6HQm;Gqy~D_;7sYVg+bqq=5QeL_yrYa)ncTMzIQRznGLNSE+dWi^ zqR&;#?!k-l+;4K9gA=NCxm_rO;-hS1PaWFYD>`+*PuWibg*oo{q)`lVq7{E}`pW59 z-~)%-I`(AM_oEiq#EFOrKMm9`LWYNVirX4_vehNbsg9kU4RtgnUsa~Su>MG=$3 z+bNv&3!kz`t9EG2+eL;;7A;lNyr%ZXwVZW9#s4s+!Et?#5W(x4~_RevPuMDLY z10?lbFw_5HmQA6$bO$Xr?i?(GI|Y8u{(7c!+TQv-`%7~ITK)rcqZ*-3)$KPbIw@1a z4P-WY!DRpk%V9+9w5W?s05Rmxi%meb@yEpkexMD*{RfNhKVNJDZcv%Rz6tK`K>b49 zL1+FsQ#TPQB)SpMi@vA)aq9|Ta-5;)^r*IOK>7ZC-$457=iDZWV1XiR{<4)zm3LytJA79_VAK&UheM|N5W)L?2am$=*Ysl%?1I7l);Ug$hTY|~@HIPLzFgcq3 z!Dy>=SeJ{2xG=9zRL3(YCn=!rdFUU%bopvms#FjY=tbK=oLF`*DGX0Ps_Z6PxQioZ z$Tcl37VD;5@jjVy@ofx~Pz}COEO9=R7SyS(v5SqlUYs5DqHbuQrKLsosVfs+)Br+z z@vC9(W5Ae4kr%T7;kV~4HnC*deIq~2Wog}*2&U8E#4N>=cQBKl+$| zq%J{n+L(=DY>6>qlbL_Vb~b^4*l6(}h0Qj#1a*rIG-ck;wZi4(`~6Op60?32z)Z*u zAN^t^U!qtpdY`~wcXauo|PhrNESUKHQhVzg8vMf?h=%BXq_=4u9IDkm!e>I6wh z#|J9vbV`e7N~v4-$%rkH5iJKFD32` zGqzCzm#nOZfD_;s&)C{4GVaV(y@H7;B#7D-BGj(5)b)~xsXGuXesQ|jg3m>}8%cQ- zn-CE!szd(cs;K6xHQ0${h$I6ZhPCqkC}y$PIX{7xaLmIzqqK z^`m>0U2pnYVY?W3i#JGbB9x7fFKVOu0J8lZtjzO=$X4 zD!5MLLu8~BiqGlv7AX0{-~kD&A5Y~o<_{f&h~?gS-=#WeoR3s^`EBjr=8ga z-0tpl*@$ewdPNy3aD7)Q=%MUFKu?xHqihyXXccgoSYsLw(72T!B7^ZyBBKdJ=EttM zZdCZ8+Fb#whm|J~5Qn+}A9*P)Oq3|B3y5$wN`$`<@HBRQplYaKqgL3FQ26Es^p|1r zF1V)P_eIY)pSU2G9woc&$i8RH-DZ9WSo!48{bA!7!niN>m+gNXuGc>t?g$GoRe9;B zPLqJ+6yRe4@=Dnb>mwvLZ=%{`&1CESXxy`-9=wj!azROo-H(rX{&ycUke0p*1vF0N zZl{>KxVRTlRZ2>V+^NG#Ux3U0nyed|50cx+ula{vVnhG0cPTRU1l)HT5Ju{74BlCs z{;{*-|L~5zHOfytesv0XS;bDdqb|2(a&b!?X3=GHB-AP2+IMr{P;sH#k>ANEp<_ph{z8#o3noXpsiU7 z+?L}bU3;>Aehf3b=DFNXDc! zbdfwZKp?gl$U;oSn#C1&BkyF&v$tbfe9x8nehcAT8LF`&yBMZ8)6{&n=-HgP(f zeOSu?DpfY=E;Q~iYBAFd4)%XjO57$Z?N@EUju>4Byf3*^R0D_|Xx19#Lz%0uzwb-; zKP?NmFLNI?<_f2N_vethKs@&!qshsu*hb-@E*MXdnt5msw3h@~1;WLP*2<{tr|KbrllWoeYpGRkyRV+jtCmYWlkCgdEmB zMjN<46&C+LIq)+_=h4E{|5e;|2Q`_kZ$!EZE()w7ARr=2ktRq&l_FV+C`CGgqSSy` zfKXi(6#XdG9TJnc>{~XY`!=zz7T?JBT1&=<3IX1(; z1GY>Av(rIU*wN-#1?ScuUCCwMsUA%w9{rg_FEEmNE&BJd>6@CJMy>PPy_l0HPjTh@ zm55cY&bN?irz-&T=jfmxuKhjGM+yoaOvZ@dnf|o+!uqqDtM1(QR^4w2^hUR#N0ei8 zWR|OwW1eDk3AvHW=aCr0>=FJ|C^JTC3V*;An*32+WZ~$eIi2W`w8$d+R~Tu4yg6su z=J136)8XSQn_p%VP8W5*`(+RtmQ+&?>LcCJ8Gq&SU5XdZt*4#hhW>o*t zjEySQ`v$t3djg@Q-FVIcYjuiUscYEGLf7Nc?w``6uuhAMDq}a5X<{rKlu4y<~?~qb*jns#u{k0WR2ckI|0%&N@_#J#m}pvc_gS zd-jY>L1+i~eIXUI|8#LT(fl7Qu9=S16POOqk2OiT7KDPXS?BZTJD@tw){j1@aAo3D zu1$I2-(T`Mr@cNlMT@&^ti$=aA|)f$9B+kGwEcR{z*xw1#&Ys|j0Fq14)%`32#I}i z4KV_5=talW4ySvd@w($G?E%n^Q5tkTE(wN%jav%1l zS0GD&Re_}BOq&?=o{OQUB+7yRe>kQtFtbEY_CnZ0IZV8T01`PPeTBAU)t~C>>f{`FtrH93W#j%B5at=QHKj|@ z>1;UGo9rA4pvio4y=D|-e$QbtnE+4Bfff2|x}sWuBXoCvS)+aY5VB=!w$FIm(78XA zc4xRFz%?&vtUbjTgwttoUbjbC25;C4B~zALbDRX~;Q0CXadhU8b~kn3HO@L~mZw4O zs*IMk*Q2>s2 z%kwQV7Y5r(k6i#5ibi<#Y;-jq`jXw#F9DtSEyIE8)wSB{?^mm$X`x-4eBl~0ucI?h z1VWo&M}ttXf%?X(yx4&QhhFmU-J46qf(v5y#r9+(N#rvU$q)2MG9i(Syw76wGuU_zi4m=-U>6gwmZKp$9z&-0Mv9%%!Z|{Zu}8 z;S+Q3s4q{Xx$e0$z^7i_5&#Y0G5ud5y&n=0(ON^RsPvgfXBnrMn*|4XJ?y?=USN{| zk=23XwUlI}pHvOZRv}=?%X-RNvONi9Aw~KmpkGin#8Dh`5u6qg+~JWivZ)&Q2r5Sj zNy+=5#Y_9K&#&BLn}X6fdzKGV1JC@;se#chv~b#uF7wUogqeAX!^QAps~$>MOo;eX z%f~tHX5QMy_g*M?RkIzva9>IR4n}AcoU5vweK@bwX~)imZK0*^g+HD2V`=3Q-Y%eG zipSM#tgn1-K0^4{1?gm?^>te92hfv$21f={b%fnlnkcyUJTQ8ytjWqHnC`bQ*6SD@ z*j}P?WkSO&*EAJcz~iLLN4Wc{ai!cf8?@k!tVP#2JN4Dst+qaI6<<^N5JQCJ){^WLdmvbDQ&Vb?s_3bEik6%<-&Z=Net$>(#L=^W;=u+ zrS|7mg95_5(q*LDH);fOYmQK_1Sc3o614GIPpUxf`~(iH!J6U*C3quHtOPE$w`|RL zO0eDC3B*FjvwSp8%ghxuPSkP$U4yIYGEkb%_4n>YAQFy=i^~j91cB(>)A=`)6I`n4 zH%rFrw`}uVX9=)g_jycKF?`!Q?5?ol4n zs(iuWV5oJ8LocBKcjQ`#7dK9RYK)ex2a~BDY2R%@4h~zn(6bCs>g#;Frz2ufI9;}+ zsc+{xI~=9{-ps;Q=Q`P2k6OrwV#ZRqSkYm%YtvX{Kg^`R#Dk=uypEO>TNn~BJUam% z8!_v1QNbNT~!@#MW3&pJ=W$nzb^tI|1H{ zDje+WsTWfMyLf+?w_V7rzP2DQBa)wxP_Qit5jAScFoXr#;byGR_ zDR*20?dFv^t267&Zx;p$L%n)a@-=0JjrQIBei@mWxm?=zfnQ^-+TT|GT(vY5ULxf( zh~+7J)XMnSn0Lg_gIs3f(NOBvE!|fWh=LjqgBGJk4@W&dHhaRCEECLt3R*2&?szRb zKU>cgKJCToNoIT-;rGfkaxh*a`9XCtIbQs{cE@i!0?l=S%z0OBTtMkBJNL82D#M=e zGX;%(-ri={U)^L!d<9(JJ-=mT-NKbO_e4+4Br@+#a&BU$;I=(AWsh3yX?#~!6MP7)H|Kv0t?m;p-R|_cc|8rnSpg zQ`Bw54j#;vxJHkHD4@T6ZKlaA{`j-s7`u^pau}EPYQaS|DRh+ZJ-U*IrKlcL5Z?) zh;jDt8J2H|x3K@$UvttNWGbiRWYZ8?mX*~Lm9DaMH>gE^o#@wav=faYpYy?~0N>6*jv3e*CcW%P4vz{O8@>(Z0J%YkZ6;cg z8`60J&~kyV0n1-pkkoLwUr^=B9YkFv6tpCaY*OXEYFS%Q1mhdAOv}OfhfPWYSE5za z5?)gQHZMojjip_Jgp5IuJR?2*RP;fxGieaY0{5Bhprv&}&GNk`O4x!(zp)j|rwb+@ z6kR*LLM@ImBPSORAV#tB+FX$KrG-z$436HL!Ix4nAf8J@EO8*=#KuX^r5h@h5yqg}EE@g|zf$i{+7>CoF`z9h?qP{fhz)!~LIi?7HrARO!He}`8_Y8Em zCXmxO*eOuOe}J_4IpJb*DtMH=1FH|yT4?>qYHU1tbpwc1wgthCID|fW^Z~_hTmWb_ zvcJ$PmRzTROe_uE!Hxd%lv9_6lp}}jrA){%`?U3kM%pSWJZ*?~MKMjJTf2)#G1BR= zBB!~JAD7r?yDAZLOuSb#OeY1~ZcrrX-)WQCfWx?63@R!jB-Cfwr+nP$JN!*{?-r(Y z(a=kSfjC@ITAHY}mDRiv{?*v>a)nFRwab^~R!Q>m@|3Tnsr>cMcZOLXYV6OI6A118 z{{9$7f^%3yL&I9p^71lw-Nbf+vzvUveJM%Fv)0zuzE2siU%y`Zb#c*uFey2?WMIHH zFF*f_leCPChpTIIy%Iko+x`#+0lVZaOglC9?>;qXCM6t;@e9<@G?&lQ40Q1HYy;nf zz~C1WKOX5ge6ygSV7WE-m9tt3ZML$!+=WCUiG^A?DIGgj_5PVx{@`BxA*NWCBsX8* zo=Gkq9-dFvrKP3&T3W&l4Geq-&5}eOx7=Epp;F!5-CG-83WqQ-vhDQsW7(;}5c=qs zypY~^@6L&fiwl~QQt-LC^G?neFX9UdsQpS(Xf(QKVj|na!=tyYEpmWD@n0hG;uV1! zGc#jnd&$LRZfBk$ffuE&PHUrHPmC1Ux9`gy3$uMHC{*o^s=DI^1VW%}|N43jT)Erf zU3T{Nfps>=5{nlX7iW(sCXz{{(G@kB%c8UM%A)W~g15m>IgI=i8AgKI`ysinUd3ew zp+%<-^>lPRpt*kSdr?>@S6NX}c>6Yso4fm$B6lpdzqdDGfK2wiAe=3tebHA)NNA00 zm7dA$$;!&A){=)Ijx*$W^YQW7;j{7h;`;g%Gu#9`-qO%;N9f}$J_y=UC_^ZX_2j-A z42-oW2J=c4^7He3t2L{8=jSim?<}dRn%W?ZdU$#+u6v$26D_K$s`_m^!A?Fi(&L5B zRsyB@sJc3qMx)iB;&r+<+CxjvN-p#7*?om1)8*ErtE-z|Tuf?^t6xDS8wQCnvJrRf zpMA67q(GlF$Ulu&%xqQcwVF19|9%R+g%OKZ*F~-gGPxMp4%meJk~qsx9Hj@G{?vc< cjno+Mwim9&UE|$=+kP?V>lkSlXgS>YKQ7?Gv;Y7A literal 0 HcmV?d00001 From 0c4e55e910c579e14231ad0066d212662b14250f Mon Sep 17 00:00:00 2001 From: hannahker Date: Tue, 6 Sep 2022 17:16:14 -0400 Subject: [PATCH 03/12] Fix schema and code formatting --- test/image/mocks/z-automargin-zoom.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/test/image/mocks/z-automargin-zoom.json b/test/image/mocks/z-automargin-zoom.json index 38e30a50090..de600fc989a 100644 --- a/test/image/mocks/z-automargin-zoom.json +++ b/test/image/mocks/z-automargin-zoom.json @@ -50,11 +50,10 @@ "height": 400, "width": 700, "xaxis": { - "title": "Revision", + "title": {"text": "Revision"}, "automargin": true }, "yaxis": { - "title": "Value", "automargin": true } } From a8645b455f1fe08b82f210d4add26dba6f513cb2 Mon Sep 17 00:00:00 2001 From: hannahker Date: Tue, 6 Sep 2022 17:29:35 -0400 Subject: [PATCH 04/12] Fix formatting --- src/plot_api/plot_api.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plot_api/plot_api.js b/src/plot_api/plot_api.js index 7b40b906132..f6e5bb71253 100644 --- a/src/plot_api/plot_api.js +++ b/src/plot_api/plot_api.js @@ -1889,7 +1889,7 @@ function addAxRangeSequence(seq, rangesAltered) { } } - //if(ax.automargin) skipTitle = false; + // if(ax.automargin) skipTitle = false; } return Axes.draw(gd, axIds, {skipTitle: skipTitle}); From 10efc196c184ec23c38eebf2cdfc239ad319bccb Mon Sep 17 00:00:00 2001 From: hannahker Date: Wed, 7 Sep 2022 10:49:10 -0400 Subject: [PATCH 05/12] Update baseline image --- test/image/baselines/z-automargin-zoom.png | Bin 27677 -> 26919 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/test/image/baselines/z-automargin-zoom.png b/test/image/baselines/z-automargin-zoom.png index 98a532c2e3a9346d30cb72feb0f4c74dda718b8b..2bd98d4dba390ab67d28dae628cf55097048ae04 100644 GIT binary patch literal 26919 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 literal 27677 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⋘EsaHz>!qh^pgThBMz#tfykRpB*&OnI! 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 From 23ae4d3a3a3df954eeddd05eae69d113ab19f3ca Mon Sep 17 00:00:00 2001 From: hannahker Date: Wed, 7 Sep 2022 11:10:46 -0400 Subject: [PATCH 06/12] Add newline to mock --- test/image/mocks/z-automargin-zoom.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/image/mocks/z-automargin-zoom.json b/test/image/mocks/z-automargin-zoom.json index de600fc989a..8be883c2fad 100644 --- a/test/image/mocks/z-automargin-zoom.json +++ b/test/image/mocks/z-automargin-zoom.json @@ -57,4 +57,4 @@ "automargin": true } } -} \ No newline at end of file +} From 94669926311c3153a4a631a48173cf34cd021f1a Mon Sep 17 00:00:00 2001 From: hannahker Date: Wed, 7 Sep 2022 14:40:11 -0400 Subject: [PATCH 07/12] Add file for changelog --- draftlogs/6312_fix.md | 1 + src/plot_api/plot_api.js | 2 -- 2 files changed, 1 insertion(+), 2 deletions(-) create mode 100644 draftlogs/6312_fix.md diff --git a/draftlogs/6312_fix.md b/draftlogs/6312_fix.md new file mode 100644 index 00000000000..282fc028424 --- /dev/null +++ b/draftlogs/6312_fix.md @@ -0,0 +1 @@ +Fix bug with automargin and axis titles [[#6312](https://github.com/plotly/plotly.js/pull/6312)] \ No newline at end of file diff --git a/src/plot_api/plot_api.js b/src/plot_api/plot_api.js index f6e5bb71253..77fd6ee9ccc 100644 --- a/src/plot_api/plot_api.js +++ b/src/plot_api/plot_api.js @@ -1888,8 +1888,6 @@ function addAxRangeSequence(seq, rangesAltered) { } } } - - // if(ax.automargin) skipTitle = false; } return Axes.draw(gd, axIds, {skipTitle: skipTitle}); From 781f0ea86d012a08ce1587b1b64e682531e124b5 Mon Sep 17 00:00:00 2001 From: hannahker Date: Thu, 8 Sep 2022 14:44:38 -0400 Subject: [PATCH 08/12] Add WIP Jasmine test -- currently failing --- test/jasmine/tests/axes_test.js | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/test/jasmine/tests/axes_test.js b/test/jasmine/tests/axes_test.js index 019c6351dae..6a1ba0f5286 100644 --- a/test/jasmine/tests/axes_test.js +++ b/test/jasmine/tests/axes_test.js @@ -4376,6 +4376,33 @@ describe('Test axes', function() { }) .then(done, done.fail); }); + it('should respect axis title placement on relayout', function(done) { + + function getPos(gd, sel) { + return d3Select(gd).select(sel).node().getBoundingClientRect() + } + + function assert_layout() { + var title_top = getPos(gd, '.xtitle').top; + var tick_bottom = getPos(gd, '.xtick').bottom; + expect(title_top).toBeLessThan(tick_bottom); + } + // TODO: This is failing now. + // Is it maybe because there's overlap in these elements because of some padding? + // I'm also not sure that I've accessed the correct properties + var fig = require('@mocks/z-automargin-zoom.json'); + Plotly.newPlot(gd, fig) + .then(function() { + assert_layout(); + }) + .then(function() { + return Plotly.relayout(gd, {'xaxis.range': [6, 14]}); + }) + .then(function() { + assert_layout(); + }) + .then(done, done.fail); + }); }); describe('zeroline visibility logic', function() { From af2a68fdc44ff6e3bf4a25bda8a9c34dc530e516 Mon Sep 17 00:00:00 2001 From: hannahker Date: Thu, 8 Sep 2022 15:31:55 -0400 Subject: [PATCH 09/12] Adding a commit --- test/jasmine/tests/axes_test.js | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/test/jasmine/tests/axes_test.js b/test/jasmine/tests/axes_test.js index 6a1ba0f5286..2b2eba0ef22 100644 --- a/test/jasmine/tests/axes_test.js +++ b/test/jasmine/tests/axes_test.js @@ -4382,24 +4382,28 @@ describe('Test axes', function() { return d3Select(gd).select(sel).node().getBoundingClientRect() } - function assert_layout() { - var title_top = getPos(gd, '.xtitle').top; - var tick_bottom = getPos(gd, '.xtick').bottom; - expect(title_top).toBeLessThan(tick_bottom); + function assertLayout() { + var titleTop = getPos(gd, '.xtitle').top; + var tickBottom = getPos(gd, '.xtick').bottom; + expect(tickBottom).toBeLessThan(titleTop); } // TODO: This is failing now. // Is it maybe because there's overlap in these elements because of some padding? // I'm also not sure that I've accessed the correct properties var fig = require('@mocks/z-automargin-zoom.json'); + Plotly.newPlot(gd, fig) + console.log(d3Select(gd).select('.xtitle').node().getBoundingClientRect().top) + console.log(d3Select(gd).select('.xtitle').node().getBoundingClientRect().bottom) + .then(function() { - assert_layout(); + assertLayout(); }) .then(function() { return Plotly.relayout(gd, {'xaxis.range': [6, 14]}); }) .then(function() { - assert_layout(); + assertLayout(); }) .then(done, done.fail); }); From 2ac0b906d79c83c76fb4775a9d9e30e2d1e7d9c4 Mon Sep 17 00:00:00 2001 From: hannahker Date: Thu, 8 Sep 2022 16:44:20 -0400 Subject: [PATCH 10/12] Fix logic in test and clean up comments --- test/jasmine/tests/axes_test.js | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/test/jasmine/tests/axes_test.js b/test/jasmine/tests/axes_test.js index 2b2eba0ef22..bdfda4775f5 100644 --- a/test/jasmine/tests/axes_test.js +++ b/test/jasmine/tests/axes_test.js @@ -4377,27 +4377,23 @@ describe('Test axes', function() { .then(done, done.fail); }); it('should respect axis title placement on relayout', function(done) { - function getPos(gd, sel) { - return d3Select(gd).select(sel).node().getBoundingClientRect() + return d3Select(gd).select(sel).node().getBoundingClientRect(); } + // Tick position is < title position since 0 is at the top of the graph, + // rather than at the bottom. We're checking that the ticks and title don't overlap function assertLayout() { var titleTop = getPos(gd, '.xtitle').top; var tickBottom = getPos(gd, '.xtick').bottom; expect(tickBottom).toBeLessThan(titleTop); } - // TODO: This is failing now. - // Is it maybe because there's overlap in these elements because of some padding? - // I'm also not sure that I've accessed the correct properties + var fig = require('@mocks/z-automargin-zoom.json'); - Plotly.newPlot(gd, fig) - console.log(d3Select(gd).select('.xtitle').node().getBoundingClientRect().top) - console.log(d3Select(gd).select('.xtitle').node().getBoundingClientRect().bottom) .then(function() { - assertLayout(); + assertLayout(); }) .then(function() { return Plotly.relayout(gd, {'xaxis.range': [6, 14]}); From c678cb8b1d75c37c9fe149095482f9efe3d1ae63 Mon Sep 17 00:00:00 2001 From: Hannah Ker Date: Thu, 8 Sep 2022 16:45:32 -0400 Subject: [PATCH 11/12] Update test/jasmine/tests/axes_test.js Co-authored-by: Mojtaba Samimi <33888540+archmoj@users.noreply.github.com> --- test/jasmine/tests/axes_test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/jasmine/tests/axes_test.js b/test/jasmine/tests/axes_test.js index bdfda4775f5..0b8b24c83e5 100644 --- a/test/jasmine/tests/axes_test.js +++ b/test/jasmine/tests/axes_test.js @@ -4386,7 +4386,7 @@ describe('Test axes', function() { function assertLayout() { var titleTop = getPos(gd, '.xtitle').top; var tickBottom = getPos(gd, '.xtick').bottom; - expect(tickBottom).toBeLessThan(titleTop); + expect(tickBottom).toBeLessThan(titleTop + 2); // allow two pixels tolerance } var fig = require('@mocks/z-automargin-zoom.json'); From 448d641b8c6dcf1df69c367e600fb374bfc68cf7 Mon Sep 17 00:00:00 2001 From: Mojtaba Samimi <33888540+archmoj@users.noreply.github.com> Date: Thu, 15 Sep 2022 11:49:29 -0400 Subject: [PATCH 12/12] Update test/jasmine/tests/axes_test.js Co-authored-by: Alex Johnson --- test/jasmine/tests/axes_test.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/test/jasmine/tests/axes_test.js b/test/jasmine/tests/axes_test.js index 0b8b24c83e5..14b9419ebcf 100644 --- a/test/jasmine/tests/axes_test.js +++ b/test/jasmine/tests/axes_test.js @@ -4392,9 +4392,7 @@ describe('Test axes', function() { var fig = require('@mocks/z-automargin-zoom.json'); Plotly.newPlot(gd, fig) - .then(function() { - assertLayout(); - }) + .then(assertLayout) .then(function() { return Plotly.relayout(gd, {'xaxis.range': [6, 14]}); })