From 2cbcd8892f538b1dbcb6dadeae4b2a47af33d84c Mon Sep 17 00:00:00 2001 From: Jukka Kurkela Date: Fri, 17 Jul 2020 20:29:43 +0300 Subject: [PATCH] minBarLength at base going both ways (#7642) --- src/controllers/controller.bar.js | 5 ++- .../minBarLength/horizontal-neg.js | 35 ++++++++++++++++++ .../minBarLength/horizontal-neg.png | Bin 0 -> 10242 bytes .../minBarLength/horizontal-pos.js | 35 ++++++++++++++++++ .../minBarLength/horizontal-pos.png | Bin 0 -> 9922 bytes .../controller.bar/minBarLength/horizontal.js | 35 ++++++++++++++++++ .../minBarLength/horizontal.png | Bin 0 -> 11022 bytes .../minBarLength/vertical-neg.js | 34 +++++++++++++++++ .../minBarLength/vertical-neg.png | Bin 0 -> 9031 bytes .../minBarLength/vertical-pos.js | 34 +++++++++++++++++ .../minBarLength/vertical-pos.png | Bin 0 -> 8979 bytes .../controller.bar/minBarLength/vertical.js | 34 +++++++++++++++++ .../controller.bar/minBarLength/vertical.png | Bin 0 -> 9015 bytes 13 files changed, 211 insertions(+), 1 deletion(-) create mode 100644 test/fixtures/controller.bar/minBarLength/horizontal-neg.js create mode 100644 test/fixtures/controller.bar/minBarLength/horizontal-neg.png create mode 100644 test/fixtures/controller.bar/minBarLength/horizontal-pos.js create mode 100644 test/fixtures/controller.bar/minBarLength/horizontal-pos.png create mode 100644 test/fixtures/controller.bar/minBarLength/horizontal.js create mode 100644 test/fixtures/controller.bar/minBarLength/horizontal.png create mode 100644 test/fixtures/controller.bar/minBarLength/vertical-neg.js create mode 100644 test/fixtures/controller.bar/minBarLength/vertical-neg.png create mode 100644 test/fixtures/controller.bar/minBarLength/vertical-pos.js create mode 100644 test/fixtures/controller.bar/minBarLength/vertical-pos.png create mode 100644 test/fixtures/controller.bar/minBarLength/vertical.js create mode 100644 test/fixtures/controller.bar/minBarLength/vertical.png diff --git a/src/controllers/controller.bar.js b/src/controllers/controller.bar.js index c2ce35d8c..32769d59b 100644 --- a/src/controllers/controller.bar.js +++ b/src/controllers/controller.bar.js @@ -409,7 +409,7 @@ export default class BarController extends DatasetController { // So we don't try to draw so huge rectangles. // https://github.com/chartjs/Chart.js/issues/5247 // TODO: use borderWidth instead (need to move the parsing from rectangle) - const base = _limitValue(vScale.getPixelForValue(start), + let base = _limitValue(vScale.getPixelForValue(start), vScale._startPixel - 10, vScale._endPixel + 10); @@ -418,6 +418,9 @@ export default class BarController extends DatasetController { if (minBarLength !== undefined && Math.abs(size) < minBarLength) { size = size < 0 ? -minBarLength : minBarLength; + if (value === 0) { + base -= size / 2; + } head = base + size; } diff --git a/test/fixtures/controller.bar/minBarLength/horizontal-neg.js b/test/fixtures/controller.bar/minBarLength/horizontal-neg.js new file mode 100644 index 000000000..8cfba0f0d --- /dev/null +++ b/test/fixtures/controller.bar/minBarLength/horizontal-neg.js @@ -0,0 +1,35 @@ +module.exports = { + config: { + type: 'bar', + data: { + labels: [0, 1, 2], + datasets: [ + { + data: [0, -0.01, -30], + backgroundColor: '#00ff00', + borderWidth: 0, + minBarLength: 20 + } + ] + }, + options: { + legend: false, + title: false, + indexAxis: 'y', + scales: { + x: { + ticks: { + display: false + } + }, + y: {display: false} + } + } + }, + options: { + canvas: { + height: 512, + width: 512 + } + } +}; diff --git a/test/fixtures/controller.bar/minBarLength/horizontal-neg.png b/test/fixtures/controller.bar/minBarLength/horizontal-neg.png new file mode 100644 index 0000000000000000000000000000000000000000..3ffb6841a9105fe7e5f5f3dc284f3111dd402d06 GIT binary patch literal 10242 zcmeHNeN0nV6u<9DL0X9nCioGA43$}h78oPA3B{m@RzUh8Fp#Q4M)7NrDih&79By-l zp_!P1Vml|;mX6gxr(&>A9GbB(KC7mSXxy9>Y;aO46xz32bZo{YTb9V&_Wo%4l5>0B zy{G4%`}^JVJCGP3>qehV2LQOmt&B+m0ELeznCc9_%z52b0Q^8)Of)}ly~%K@g3vZuC)DKh&doG+9xh->*tB3Cbwj`kJn zX(B=_%;#4(Dj9H1G|~HFWQSw%o6E9U?3KC5OnC#~CI;$VYZwHsS6dX^e4aO61V=mT z(c29#_3~PoUF$`MdQmnPEt^gC@e^ z1f#Y505!A=>kOZVnAX7A!_jm247`7ZJRz)xn_m=tl0g7C!F^(7d@{5@w}2X(&HaPh zqXy5R4?}@${&0 zntb=B)N&>$`;m1wS*82hGM#kq>M@^KB7J_rjCfIUex+_+L+s^zg@rY>KEUDNz@iq1(;0k)5;`OL1qX8!n8W?wtb zM|$ICfNKAu$ZPS9QYP^JVl3ry1$4Vqi4wW<+OHav-aOjvlVwpk$vcy1a_C+9iIX+? zjiHSykXHXN%Pl8f1uV8r5`+oe(2ia?e|8x$xqFPF%@7Bu2~*65sr> z5fbeo+ah4&mw344O#c>o0Mc;}Ig`>h!TY=gN z)S*d1g}(`qFc!d=*^sUIYN~o4Ev|;Wjx{G!OzGw0ZKPkx7;L0uN}e=ljIpp0!-UNp zhNww3(J&Igo(be$|D8t6q`~L^OJ|D;=;SbFU4i}KNL!n4Bh8zEK~Wa%WjrgR#CHV_5Y%ZGYHv|R=HFg8Z-0MJ7fISj zuD6kIjxxwu*bNM`@6R5)BfTQWN`Ek12!Zk+uE&IsDWMb7ea0Q#-BurN3p|`N&~n6~ z3jzi;uL9SZjI6MBD;uyOE6OGA^!GgrvfBQz(M4QcItAr!{lS@K0kv?_d4y&DWdn zobPddzwdm}x_1m5MP50alwf(llok_T@ z`;qzrFkN`8ELvkZv%heV`Sha8ZHTMPU${qOC33mCh3NTW=>lc4xP}UWuXOnuuiuS^lvT@m|J5l3uvKS42UV|S>fg*VhS^N+!|3o z`ancs3b|O2nKJA*a!{<5R~LMXa5Q`ntZzKs#s`$9JWFG&(|CAeO_VbVrDe7OOKq? zBi5Kh~mISKCBC4{5mgAhH{*sWoo+xeoF1U5CV-t7cIQ~6; z3SV8)Ta`o{vf(pSWpF%j=M_Ll=Kjak_|YfbU5{`2badZAHC9-uHuZQ`XqPtHeS%-? zUdc0Wop5L+eCU~m55Bqx@J#E{33hK6d^MJ*RE>72l3nc2y}Pf(5e(r_q-#WAoNm1J zz_+vlT;Dfc?mJTG{jiuIl-;rtmpippF4YFs%fYfgJIo!^Ocp0ayfo*BiI=lSEO{Wd&~I4+nxg;Cpv=n&A>inV^= zX&~gLCs9&{zP33`mjLmnfe6;;S=u2sJ_MnxuSGu_mit=x0d(BKe@Dn`U;wzwl5^=p-1~n-LvQE21ZY z-l{OcasS7eG9&_=Yq=Fr8*auJ#(~U7M;F15gX*nDs-}H?LqP2;cM`((?W7l$b9tF z)scg10SKz}&jOI4Nahz=H0Ek0%>QR3qe%Jt#hGrO*K>GurhCo*&X`18irYLVg@od0 ztVJo;%1uMd_glJR1M?)XgAegxV1_2*<;Y7i6!i=^Spy=Q|9$Ik_FpNUcXKOmIp`TB zSZK^(IzmgPRI_ngPxvI8f~XrXq)$sQDXB$^WDP literal 0 HcmV?d00001 diff --git a/test/fixtures/controller.bar/minBarLength/horizontal.js b/test/fixtures/controller.bar/minBarLength/horizontal.js new file mode 100644 index 000000000..789b484c4 --- /dev/null +++ b/test/fixtures/controller.bar/minBarLength/horizontal.js @@ -0,0 +1,35 @@ +module.exports = { + config: { + type: 'bar', + data: { + labels: [0, 1, 2, 3, 4], + datasets: [ + { + data: [0, -0.01, 0.01, 30, -30], + backgroundColor: '#00ff00', + borderWidth: 0, + minBarLength: 20 + } + ] + }, + options: { + legend: false, + title: false, + indexAxis: 'y', + scales: { + x: { + ticks: { + display: false + } + }, + y: {display: false} + } + } + }, + options: { + canvas: { + height: 512, + width: 512 + } + } +}; diff --git a/test/fixtures/controller.bar/minBarLength/horizontal.png b/test/fixtures/controller.bar/minBarLength/horizontal.png new file mode 100644 index 0000000000000000000000000000000000000000..83d5b82dc18696f85d40a8b1b29ee0eccc4ce3ff GIT binary patch literal 11022 zcmeI2e^8V69ml`VLxM@#^fKE>7mtxnM%U;jQXxt$dF*JByI4bc62KM>GA)C(vxl?U)E(p(F-mjgaPS1tGTjt940N~{I(AD95N|_)gqZA`xKj)}ck4OV z?w-Gr`##S--|v0y`~AFMpZE8(U-D`eo5f=R0NB|ZGG7A#g?~}Nh=o5lcU|!Vzz5lx z>+xM%CY`4)dap{)e|Agy&3zneicoHOM!4;nUr%pdvEr@V-P|QLAIWQPw(ipqwcEy? zooo7qe}X=?=)2Pup2G#}%DldWstGLP@>=zKmwn#Z^5^W824C-rma1Hfc&X+#t`5$$ zxODY|MvWHx)Whz{yJin#;z1jrXwy%A<$z~GIpgoyvj4&b_B=L?POJg`+e33$n*6kuaZmoN)x~X3qnC$aS zX#;f$fgHQVyHj)h8V(p@IuYwYI^Mkti9fszy!k0H2&vkH~bKUSdAzsWXCiPS}ENg@p$? z4OKY^f7Pu`fNeUldrScSRMMs{%Nst9+PC0f1DtuUBd6wCz^;q-Qe@K0Uw!`wd{gnr;+YPdCUxL~YqlqW zKH*WtHF!7n_q}gMhl&ekj8MVP3I@Y8pbd2y0H-0{_%D=KnjKNz*STL@dA|~PKrQmY zpkAGevRaEPmHOfG0k(?3CgfgcX3jD_1f;}}U06LB_HCfj zO?tlZ0i?1RPD3f+;fpX(l2$gKTq8V6C%%8G=2#Rx^1$3-QLMdS&Y=9@`WAkJ9$`pQ z0n>N_g5Q0yG9o3Cc!22sXkNhCT=4Vrti4g_PKA{UE45pxB=E>`tB6LZ8$GHfa;>{s z*!+WrLgx+eZ>@x(Ud4@zzYHh7Z$sAr4QKu&GkVuvfXa~^E|>o+ZU80s50?9Ao9I!R zKa!51Kk)Z}C-8Qfe=ML(8+Wc(Dnd%gt0=^Vur-B!=6^4vwOG_mKIihQl?oEM@1X!Z zWmGCoLPJRabsh~nPfuA;>=@MEF!kR13iTot9%@rW4it41sH5<|ItpY4xsFUHkJbg( zkjtoKB;z4IKu-et&G+g5x%!HO+nv2BuwX1n8gXNL=Ha6l1c+hZ;i*=)y7m*-#P35H>a&#rzqn5)`q>~zGzVo|D+?eV-#YF2{O6gR z+0aVp7?l5|*tQc|123YOrZh<-q|u1KHdmXcEfHcUf*5fBJVlZ4=<7l?ydcBZzL-@&pq#L`8zy6Vy?llER%_c-^-qR23YXdwP^?w!3}u&ar@M z@!+b@>&G%KZ*8vVF59ba&)s95-qc@Nz8f|p%4e)%c-7jtUpZgYUy?>dJ&4Zl*}I+c zhtu97cvT9U03XzO5Tf1d4wTU!L3iN8FGA~jU# MFTa{;c}ZUL4>(f9ng9R* literal 0 HcmV?d00001 diff --git a/test/fixtures/controller.bar/minBarLength/vertical-neg.js b/test/fixtures/controller.bar/minBarLength/vertical-neg.js new file mode 100644 index 000000000..f5976b5ac --- /dev/null +++ b/test/fixtures/controller.bar/minBarLength/vertical-neg.js @@ -0,0 +1,34 @@ +module.exports = { + config: { + type: 'bar', + data: { + labels: [0, 1, 2], + datasets: [ + { + data: [0, -0.01, -30], + backgroundColor: '#00ff00', + borderWidth: 0, + minBarLength: 20 + } + ] + }, + options: { + legend: false, + title: false, + scales: { + x: {display: false}, + y: { + ticks: { + display: false + } + } + } + } + }, + options: { + canvas: { + height: 512, + width: 512 + } + } +}; diff --git a/test/fixtures/controller.bar/minBarLength/vertical-neg.png b/test/fixtures/controller.bar/minBarLength/vertical-neg.png new file mode 100644 index 0000000000000000000000000000000000000000..ec9636feb5f709b3ff09e4fb777de4f8a3cc2e39 GIT binary patch literal 9031 zcmeHNYgAKL7C!e%GzQTqL9A9D>Oc?$td97Yz%35}hevn{iacr^#z%#zA`b((T2L&u z;Mi71ghY!XsNidaL4njqTV)`kNE`(c%3zS7#D+i;LNfcZ>YDjs*P1o_8drWLxp$wF z@9w?7@9eYBJ*sU#h?=*DnFzWSk zd4br-8)VkhF!a4zSFxbf__)q{kEU82B6b(2wf3}FSZjKMdH$TJMj)eCJ%(_RB#0XJS}lzLWobUqX~E6e4NRL8|*J)!)O zXDSH{aNF+K#0%Qb&+y?6wDiMGKBjIccRd())H^bDaUuyzZ}+ouXOGw&v-NRl8kKM}0HS}eryl?T8526a5!nJ`PooddwqSc<| zQb!@WDQ<5z(>o&LWE+~u^FRg6*!J;&8Z+Zz8f5PbaQ=A);CwSV>7_Z`%Vil`=fN#M zFT==YoIxDF`8P8OgrW*F7n!$ zKivuC-@39G!_E4^c#WbofI$@8sGw$Y5u#}`*!87&p~D^w3|t_f*5O%M$M6(R;^0Dp zB>V}CetGGdGPH!zR0%`QS#nYTg?$cAi1X^~EIT5h7UJ+b;ZP=nIPri62DNMG)v*ZT_bOY9}*0ktrgz|LKL^_MaXQD9Kj_&-#rGii`u3#t)#ZS7GXVzq@K|>v#wN=$E4wJr*GP!;``PDydB7NaOC4R=+P)qct~l34kJ`Xf2J0 zrI)|Txgj;sWV>xE5U=X1MoJTMNt}DCW3@Nd*XCXfIkE+E(T%v}~)ZT4a=_`3s? zXIHPbraBbdK0wI;9q3_y-S-fS^i7QU8V0385KB_Ui-1L)5in#Lgy`Uuui`>5f6F=& z46I?+{ECK#07?wTIS9F#^JMn?Ff==NYa|S5gE>>%ImaM{)551R?c8DsY>o{#lS8u$ z>cgq9v$)9RY`;5_gsUk6mBExNx|QZUFe_Ap)I3-y1O<=;MS`XUQKVgf(Go(VPeodh z%wlhVT?+~s8xlQH2s)huB?jXhEF^(joA&r)(X4MG0W}xag|?WHz%WSRpx*$76u^*9 zyifzyQ|6Q&hJqdzRZ0QKV@lQwVZD8rbK6x(nYB{^DIh@s;@l%a(^eh^*X0ANeG_w| zB0>JA10Q5{pk|!Ji9+aC6jNfbkK&*ggfH)tR(r}_QGl8#fuu<4Tpj@0?oP$`Hu$<5 zJ0l4PtS(eK`GOvPRGB>~g%dfxvTP(E($gD7)?gMxi8KeMEZEl>0h;!75kzYVB+=|# ztBsMc0&0F5UP{ICYqHx3z0fvd}Y}ND@)KSJsuCq`!NSl4?%Ijd6gP& zMXuR#45D=jR?uix)E^^Z1$xc|&sBj)ODv-%3c*B-cZ(Qj8ZnKbPDlxztW5MvG4CjS z9x7Hfsd`i|Rkv@jJ+i*L+i0CDXp{|(IYBDXZ-xVX()xpIpYidc!UOXm-`t?InPYu# zL!3XRxi72&c@S9u^VWUIH(HsBk@0%SRE(IabW@f7mW_gm82>#nbi=rEEUBTlMxNo3 z^<1i34sy&)uX&@~gEl<|hksYsW4|}d&<*-_%hQ(r6h~QVys&uGz}(p>XdE*a$vp;QCq-KGq~%N-N0#!RJ< zX^&vqBfMpsVj{*nMU3q)l2JpWOCQyVSmmTts2-`BRh{>0GTK!7pYCr7t7bK@}p&E zWb+!bvePAsUvGYlzKlm6BS#q``FibI5a|eL!CBoeSs>uK e=+e<-Mtntgg4Hyi5;?peg93bmeX6_?4*UziT$5w~ literal 0 HcmV?d00001 diff --git a/test/fixtures/controller.bar/minBarLength/vertical-pos.js b/test/fixtures/controller.bar/minBarLength/vertical-pos.js new file mode 100644 index 000000000..7d69b2920 --- /dev/null +++ b/test/fixtures/controller.bar/minBarLength/vertical-pos.js @@ -0,0 +1,34 @@ +module.exports = { + config: { + type: 'bar', + data: { + labels: [0, 1, 2], + datasets: [ + { + data: [0, 0.01, 30], + backgroundColor: '#00ff00', + borderWidth: 0, + minBarLength: 20 + } + ] + }, + options: { + legend: false, + title: false, + scales: { + x: {display: false}, + y: { + ticks: { + display: false + } + } + } + } + }, + options: { + canvas: { + height: 512, + width: 512 + } + } +}; diff --git a/test/fixtures/controller.bar/minBarLength/vertical-pos.png b/test/fixtures/controller.bar/minBarLength/vertical-pos.png new file mode 100644 index 0000000000000000000000000000000000000000..b5d4f8a2e12ee711beb6589babc643a9d0cb6a1e GIT binary patch literal 8979 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 literal 0 HcmV?d00001