From 65cba7705fde926fbaaffd68e1a900b8e1259f0c Mon Sep 17 00:00:00 2001 From: LoganWlv Date: Mon, 12 Oct 2020 22:42:23 +0200 Subject: [PATCH 1/2] Fix autorange computation when a category match a range extreme --- src/plots/cartesian/set_convert.js | 8 +++-- .../bar_annotation_max_range_eq_category.png | Bin 0 -> 21003 bytes .../bar_annotation_max_range_eq_category.json | 28 ++++++++++++++++++ test/jasmine/tests/axes_test.js | 19 ++++++++++++ test/jasmine/tests/mock_test.js | 2 ++ 5 files changed, 55 insertions(+), 2 deletions(-) create mode 100644 test/image/baselines/bar_annotation_max_range_eq_category.png create mode 100644 test/image/mocks/bar_annotation_max_range_eq_category.json diff --git a/src/plots/cartesian/set_convert.js b/src/plots/cartesian/set_convert.js index c477b13c395..af34c0febe1 100644 --- a/src/plots/cartesian/set_convert.js +++ b/src/plots/cartesian/set_convert.js @@ -185,6 +185,10 @@ module.exports = function setConvert(ax, fullLayout) { if(isNumeric(v)) return +v; } + function getRangePosition(v) { + return isNumeric(v) ? +v : getCategoryIndex(v); + } + // include 2 fractional digits on pixel, for PDF zooming etc function _l2p(v, m, b) { return d3.round(b + m * v, 2); } @@ -316,12 +320,12 @@ module.exports = function setConvert(ax, fullLayout) { ax.d2r = ax.d2l_noadd = getCategoryPosition; ax.r2c = function(v) { - var index = getCategoryPosition(v); + var index = getRangePosition(v); return index !== undefined ? index : ax.fraction2r(0.5); }; ax.l2r = ax.c2r = ensureNumber; - ax.r2l = getCategoryPosition; + ax.r2l = getRangePosition; ax.d2p = function(v) { return ax.l2p(ax.r2c(v)); }; ax.p2d = function(px) { return getCategoryName(p2l(px)); }; diff --git a/test/image/baselines/bar_annotation_max_range_eq_category.png b/test/image/baselines/bar_annotation_max_range_eq_category.png new file mode 100644 index 0000000000000000000000000000000000000000..f919fffe2946567d6f629bb62a89a37a8787a8f1 GIT binary patch literal 21003 zcmeHvc{tSl`>*6F@z|2Y*h-}cMY4`1TP37ovWSi9LkQLE-zW4rhG>>Dy~ki5-#$Ci{#!lPXpFZWt1w%fmSv&#z9j74tX zjHroGGDl+XHcbS5Ej3SRzdJMu#yOXWvj?WYF z61>a7CBw0eTc3kd@W?ZLxyXu6XWPC1T)L|-bC=r9{ja->h4qnfkCML_fCv71Rt8J^ z50Sh2U0j01cVjNM|Na?}=2nLO^$zwU7fx=Ate8gHO8n?3htia)Dzk_c)A#f_S z_*S3%z_l33@$sjY&qJ9Ek>P#E`2W$^XQw$xo`;&%iAY1QTDpyxZg8bXar0pxdLOKn zP~|)EQ1#o9%$-+u{^Kf-yyC#wyJ9P2TQd~eFFZmg&f-iIJpt2y@;xb zy;d{OpPz-v63xT=|KomjxMi^Z7n};OhM#|N+~Auw1zYBdOjfkFX_WPb{US5X&Go#t z_8iJ@I7jwalA5^CbXP`;+1_T3Vxv~h_ zuq>jw`pk)a9;R34wrzK5V{M=3x%dGI7_$4!jo{mOe$4iOu$;xSC$gq3JM~sSiJN$f zvR~ zeC8f-O%IvPXsu;0tyBm^6!H4v(BE4Z2LH%C^X4{%{a!Jl+O=h9WO*qb8!A9sE=IY*}8peXSS4J>v(Kgg8#Q| zWH`SvRsc$S{5oWLK*g>5pqLKQyX1i-aHeUf*`qVPA1A_Rf8k_x68*wzJCz4q%q3)w@wo&dE`s{Fw@Gh9<) zdwkD5;Ep<9aNts4dNSC+i7y_la-DCZ0=_;JD<&7z#KJ#Gs@`bZ5fw1r^h70uK`VnH zTM@iA+}pS>$Ac)L%*ZZH06YtCD-Y(Bv_nEhCG|qF48YYt#VxZf5YmBG4&AHWLX zw1LB~8jV$W@7j^(Mib)$b%8e~oDyz1LYIvfzCMYL<@$6|hH41{4ON^rf{69@Gw7IA za;QAMF=C-Te-M;9o#^Mpdn+ktE?K^qC zYWiIq&YG~cG}UVBntDk7({Q!_)3=5(Eg%rev`p9aOxl*Poy~$Zcm#c4-hXFg#l_pl z#kjd~X2R?;M$=s&GlMhnS@)@vNuni+=|CExU)ei*g#8QbJ~sj$cw%UAmkf5owT%bF zH=H2835?pheQRg7l;D5)cyw_U)GTP(7X1+=0STI7YJ1IG>;zaG{qfDhkF5ejm2^c_*#rM}> zT2^QK&=bRy&;WEo4?f@miCLfQcnm`yF?>!ZRDX$C*=s>zc(&_K{(Qxw+))%}mDl3i zwzMYEbLrt(*}K%NpVv=v70VS~{lqB-MU^@rNm0cO{MuYIAxwI|OXnMdFWi(?<@#f2 zoBYK53NPC|{du;sjnZM**Zz3h?wSA!y|@p}PUcGHDn>#ltI$+91FhE-yAa~sZZe#! zh)uA3G7$7o&GmBTz4)l)sqgiPAG+BLIAp@-kN6rOwa<0u33EbZj=STJt&s%6jwCzy zG^18J6|nMgVe3O9%YZ;xW*w=W7oMX+MqzA%sE%$|F$BSE)p1QO?Z%#8!+pq3`N;@V_4YkF)+t08j zb!Ik4Yr6v{RBUBaoj={#+0;$cj%*}!ir~X7;Yyh05kpkna-JWYS$=HDPrY zDNWYV2D?8Mmd{Q1hoc}mV;5~tUR56O=sGroo%OUOP@tqRviW8}z39S|1q93Sy)W!# zJu|#GZ|W3jgvjjem`L(m<|Eq;`q~Eu{`fSYi-7O~^;`~nX@!cXxUk!LM~jcYUCvV9Bbkg`gbzllP@gppW3d2y3~5^ySAr zUZux@OOwrKPt<(3L@Yo&00~;kN0E5~=V?TDMsP@4IvEV=4FxUaqfi zo2-T@)PV5nK737^6e&CoY9HY=a=&t$L4ujYo$uESko0rwGui1#)!quqgCCM%=L)ZY) z)mk5Pg>l^8=I=$ft14QO5n9)C1Y>R?Rv~ZL0k>IP|*#nM}rk9A$^2N1v_|S} zkOX#~Lb=Oh$$PGpoQu{uVSYm(NG^`gk<_=jNm!APMOR~ef2-c)4QO37FMrm*zJSlA zE{CxK7IAt})nxlPmzr!$vLP`h}4F zZ3~B4q*)4KI3ckQQtNAC=Ys6Q2kjKYuhkZkg@B5+mmrCyC!4cek%5oOD83%ca|0y4 zjJhYDCz5}TH7q&mW!{pfM0rVZ7wk31|R(sx}i_)*LUk9hmw^O_`~zKr;9k4NXJ9xF?P8Q zvq`Dp!fvgPPV80Mo#X_pD9ZiV2RptJfT!r&l%^&VW&t8&Klu^yu<0cZNaJmI9rO>?bs zDUzpFfF#EBC@uE(%EEAeGaRGh7((wW_9o$|_bPxLiyGrW^`#jh$s%f zPhp)iyiT&7=~J#$3y6a0J(t!EUe)464Z3AVwby^30{gYez-%Vgt`N1oyO*j^{0KuF z8fHTq3#*+8)UG{^hMlo4rAOsISHQ-H-OB&@igv>Ek%Soh?k&ykPTDLjx`2Ah>#l2B z;9-f1&XNxK8m%yBbQdiPhj!(o6Vi#|yp&jTMoUdP_B5O@aUrlKDBWA>&X2a%TYHFM zk`-5ANNMgyZdzpoTT(F|YdFfgsFkW=Rzlv~@;B3#l=_VqevUuC))!FgruNwmSCLWf zN;CbEb_`pUwCkRm5YZE5Bkj>Q=mkhh-#-9Ih*!fm{6Xj^v$(&68Gtz zl)7tu3LjA{cn4$F*Jh*_Z00EkQr~sUcmyNlH>hq=pN)MKg)5k~M8Q58$Jc?T`0_++ zhT)q}U6hecR)FTjvr9M;9!az*H#lm! znecXv4QfL}-`*rA=-#)=f=-)^{(fP2em2aFZswq6fvIat)eeZjp`{gP`}T@h*Q(^X z&WV4c&c?;Sp`IEI=EMn)LoEP*Cp1rNlhpX*WHHj6nut?WFFrF{pk%d!n?aPIFnWc6_sA_PyF-D$j#lysvUM|oL>g}fzsEP%?`*N>A<$%_L>&wH%I{I+NXpb}?RQpP*=m9=;#+0R}usz5;gs zr$i6&m8z@7s^6JImq+f-CU?+;lR);OBN5T9{*@uoYZ-AFnG&Q+zI_lX{uXiG8bvp+ zCc;(@GK*7KS`iD%s8UkzB}+bkyTP3)!thk|!U-*PD5j%5ngi$F@KPQ$ZyJNG7A<$7j+X4H8<9C z>|R=D{MNrxOGzEcFPOr6|9-k&hCu6igOZ9_$D4AH@)JZ?qB*!EcKMBqUXScA`g!1- zELNyfUdyOsJ6Xh$Ii`&|coxA>;AMo|Lm?Qc+nL1}sgQ12IAIP{f9~Xc-~u%z8PMN@ z#D8i)CjX5)2u>=Wq(ntbjq;s8jba3|CluhQyCZ7}M z*pBe!gCI7NbCiN`3Qj-fq6LpM2h=D=xY zoJ%`%*`J(%gUVchfTG_i3j!~@Io8fai%nwD)oW+c)xF{%xS_p!=B2ii^5f}^y30l0 zrqChr^|+m7)}wIARNy4KwC~alIXLG}zad3AgpE}y>J}IyhYn@k3AzAime#ZAmm5^^(-@LbXZV*aB zL2ZuNwr?A|PIs8oR4UMUH8Z+g1AiBkV6iFzr;+Xn_pbAmm5iqS1hyG@=V2tf*m@wm zTnF4T+2;YM1>OdvYzV4pKqMWHp0GK!JJ|WWQCyISeZ@!0S5|(c*4r2t)NcudpDrfL zE-Ut)fAeb*YO5I9<(Rw;fJ9R932E2)=&IL^=D~{wZEst$_sNRulwaPp1wz## zNMz6Q>upeNq(w=dB379TU>l?xqaUf|*_FxbSXTSZ9FS&o#>|FYHPP2M5`+)3!C3m* z!Z(BSNNuVezbg|NVI{5|&wamXnl2BzV{BZ3rp4x54A4i8jRIjD58Xh{^r4dpVVlgw zkJ|+z^*TZps;0g|k7WD<-5N~43vceLKTzh}oai50O9`Q%*Ni1do|~@+i#c)jdgir> z+Ab}7s^-gw-h+I<7)75g6Szo*G%(OA?=l2`@F3#P>Vaa6&+>q4>-)1$ovA-QsXZD6 z7&d*=L!I6ZZ%OC8d?jWBg-nr4vj-z9%CR;D4q^pAPB}D(kn=0>kSiUKhQVAP%%d|v zUi<0)s=o(To{OO3IpS;d-)t9N1wLN7D`c$8RC-t@3gz?}GK}-G^#g#$JuXJUEtiteZTZz9lh?pEH==8 z56(Ua-uhgTw|nUIDt`TI;c_maBm-2T$!8n{x)LDj{G|K{v4AKJF1+Xni@DxPo9Q8+ z25d#OGQR;`7CL#K!lzD8Ld%l@-dUr}&^Fp%)^`}Q3zFPJ+S<}za~ z@-_XA0jWB`TE45lb#XAC7?N>~2@3v4_@ZV|fYm6kzJfz~cq2JWld0Bv3dHnSuK+t0N8u&-K z_KEPe^r{0`e{WNEub|U0kR*Sk?G!xL6Cs23lyIuiea-%BUi=0`uhIok`m?trR3ox~ zziz>(roQD7w<^sp$SwoT-^=Ftz}3;|#PZs3s>#lYLAdNsDlZf(MrCTtytEt{}q z7`ME`mW$kq6Sjh-|L-D3fG|oAWw=#=hM`N>J7blboiZ;qZodOrjB9P-;qxzK*j*vN z+1{fYL;GVS4m3*mp7+Z+V}4RAIh-A5lXlxcXFn5#E~ve)5}b>a#>ZteT^gd|?2N_`Y4?jKgX+grNJ zq-19i;q^3M$(5n^kAGzcyI*xhd|%#ybKm2h@~mhs{?tqF{Q}+Bq5|-FwmvhN$t~l} zPYs{3;X;N2(8~ptqdWtCJ?8xn{)Mo*RAPGT;;z9*6>Q2w9+%JqfL_Y0p2VX_E;205N4W&-op$kgyz0^Oc=|#{G)4r28hh6$ccGmf?0a!*W+b#-&^3R)z zNh3t1k%VJ!xw;^6`i;bnLGT)~;BCLNt;G9j&f(j&^Qc77hF1a2ZSVJQNq1U~W;c;y zq?Hj=?Fm?^UL{D^%GHtP%^3>Bmo6R%KME0=?PB9qAZdf7R82_* zvK!>3Jr?#5HZE!+QrO}#8(#h84gY_DUFr_>{FPI5-4N1gBza=eKWzB**Ezk;_d2!L z?p3wNURjP_5c@L;9DvM00%=AK$F2t%Dr0ZQ$#q_fT6yW3_9RZZ?ut^?c%r@~hWKdT ziPHtx#dDz20E;uChobNm01#$1zV=;@)zp)6H%H>_({s=+?T2Ws(3MfxG_e@&5rdwx{mu9z#ASq89HP}Ljsyxbf8-Nt~9=q)jBLe61{q|bZhqX4K!lto2wZ z`#4y|x4EZAv6Z%L@?z9FTgmLBz@-QmM6Xu%Bky{CMJ#-qtQvfLY!)QRG!q9Cc!o#N zb`rfsGpm68+zGM3_@X&JjG9f65{~?s=i(R#^zD1LULE9`IL_89c+C9_vtKKbeAb}f zO7y-0cQHGF&7?tW5Q3IqCxv#n!@W4dc1!g4`Ol(E2wq1l4-e;jw)`41dTnlbget&tLAz zRzH8d!d9r2*aJF__KCKi;GKK{ABab`JNduwW49Mv#YOH~1gMv@00E1um-cDe@6&do(Yewt%YipMNdeZP*6$!2Kn!%% zSS|sR0Zq+v>BpE1x;;Xp){3{wXQ9NodG|}*kZM8@rS_WDkVi@UYvkwyl3ogNI{wxq zD?^%jCJi~dYwc%3*spO zB4K?CiOb;&~V#q&?KakE4%){jvQzsXp_sF8W_nZ1CY6+ILe5v6gw* z%te(Gf&CdxK#}uRK*eLg`KkH%EE@B?%6FZw%_#{~#_nBZy1PW+(3X`M%P_mT)i26;MeM5z_>r!3ng<)4SskFWxv{hu zj|jd#|Jzf%YZFwaQwzW({7ncMLgAnp-vp*aZ-RcR{P|vLJpN*LgVO`fx{z@(lGDJY6d46htd4)6f{R#Tf3Lt9G0ZbwpvroRI)g|82o1c_0%wFL7Q ztDnzOhO#ZCyQDT)EA`5HYt5E+!5imCuf0+OC|h@~FT?ml0Fkju^$IaG6{np`4}D$h zF`y!*;(Y(1xLT}lhh)wJuU{Vs=u0SID+qrtxB2s2pA6hdP_^q)*QJ?A)xLQ-L-|Ht zxxyZrlX-6*1xu*>5INhWHoRheP7h%5TL1t-?iaF$GEm_Mu%LY1PKMo$GXo`4cE{zh zsE4C$;K+e|#5+3X^(=x!mX7WoX@Lb=7xmT0=3dP6uLG!{7^$AXOH;YQp#7y88C7GTMB;uhgyk3&P%(VxDRX5+ zZ#)O)MVI#k@|1td_yCW{BLeWswGo(=r#aI4d<7BZ9tcWj6Tq(6TO#$qcna5Td`jAH zn*akUQKwUoxB-rm1HhuBQxT}rbDJ6wb(7N$G@ioPqHjw8R+&f$7zw%dP%3+k8l!g% zOu8ThiG0vH0nglWQLv=iroF7n{9TBi3286^KpHEk3t8W5k#$|!GRnlo1T#%eO0x5! znJ7MMsqBaqQMgw)Eh?d0zu_}*Gb7&4VIL?E5g?JULn~lx;5h}reA zyYpZc5U-LO?L4q0{}BXO%{e;eIXq~-?44^J@L{yFgpAXMC)WOWu14U z^Bo7wH$iwY-_DfuSW;-;6JxW}+WQo+43oo?JctI&$!Uxxa6PA*me}yyLgetJQYRuP z@J*V4N)IlH%oBhW3;`?2f!Fl z?;3I|86+^u-UGS$bw!t_ZqE zK8we!K@1MXgaNQ^Q#y+#*X7GZwSAb$p8?AfZJ}K{5aJ**^E~o$2bBm85b1XWC|5UF z+b2y5TWIWm*5!*uwHaU*7b?ddk$6g3uO7CPz$LxRb3#5`s?7&B*VDW-LI-|{)Q6aa z`*j(UjSc8jEX4OcgJzBP2AO?Q!oiU=(S-zaN=r~p2tuI103SCGEm196#z zx8~ATVAe*LJ!q|_jK-kLu{8V5IY^lxt=``D znf|b-?o)S)lv`(Gx07pU;PeVFO*n@VJf-bE^1?T&zrH^2#$Br2ldOLnHt> Date: Tue, 13 Oct 2020 18:50:19 +0200 Subject: [PATCH 2/2] remove trailing line + beautify json --- .../bar_annotation_max_range_eq_category.json | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/test/image/mocks/bar_annotation_max_range_eq_category.json b/test/image/mocks/bar_annotation_max_range_eq_category.json index 1249badbda1..3585b6f479a 100644 --- a/test/image/mocks/bar_annotation_max_range_eq_category.json +++ b/test/image/mocks/bar_annotation_max_range_eq_category.json @@ -1,12 +1,14 @@ { - "data": [{ - "x" : [ "1.5", "2.5", "3.5", "Not Known" ], - "y" : [ "1.0", "1.0", "2.0", "1.0" ], - "type" : "bar" - }], + "data": [ + { + "x": ["1.5", "2.5", "3.5", "Not Known"], + "y": ["1.0", "1.0", "2.0", "1.0"], + "type": "bar" + } + ], "layout": { - "xaxis" : { - "type" : "category", + "xaxis": { + "type": "category", "autorange": true }, "annotations": [ @@ -25,4 +27,3 @@ ] } } -