From 979cd4131be137617fecf14cbf2fb98d9e2e5e32 Mon Sep 17 00:00:00 2001 From: Jukka Kurkela Date: Tue, 15 Dec 2020 08:50:13 +0200 Subject: [PATCH] Fix legend alignment issues (#8168) --- src/plugins/plugin.legend.js | 16 ++++---- .../title/bottom-center-center.js | 36 ++++++++++++++++++ .../title/bottom-center-center.png | Bin 0 -> 2916 bytes .../plugin.legend/title/bottom-end-end.js | 36 ++++++++++++++++++ .../plugin.legend/title/bottom-end-end.png | Bin 0 -> 2777 bytes .../plugin.legend/title/bottom-start-start.js | 36 ++++++++++++++++++ .../title/bottom-start-start.png | Bin 0 -> 2758 bytes .../plugin.legend/title/left-center-center.js | 36 ++++++++++++++++++ .../title/left-center-center.png | Bin 0 -> 3467 bytes .../plugin.legend/title/left-end-end.js | 36 ++++++++++++++++++ .../plugin.legend/title/left-end-end.png | Bin 0 -> 3005 bytes .../plugin.legend/title/left-start-start.js | 36 ++++++++++++++++++ .../plugin.legend/title/left-start-start.png | Bin 0 -> 3394 bytes .../title/right-center-center.js | 36 ++++++++++++++++++ .../title/right-center-center.png | Bin 0 -> 3369 bytes .../plugin.legend/title/right-end-end.js | 36 ++++++++++++++++++ .../plugin.legend/title/right-end-end.png | Bin 0 -> 2856 bytes .../plugin.legend/title/right-start-start.js | 36 ++++++++++++++++++ .../plugin.legend/title/right-start-start.png | Bin 0 -> 3339 bytes .../plugin.legend/title/top-center-center.js | 36 ++++++++++++++++++ .../plugin.legend/title/top-center-center.png | Bin 0 -> 3468 bytes .../plugin.legend/title/top-end-end.js | 36 ++++++++++++++++++ .../plugin.legend/title/top-end-end.png | Bin 0 -> 3303 bytes .../plugin.legend/title/top-start-start.js | 36 ++++++++++++++++++ .../plugin.legend/title/top-start-start.png | Bin 0 -> 3336 bytes 25 files changed, 441 insertions(+), 7 deletions(-) create mode 100644 test/fixtures/plugin.legend/title/bottom-center-center.js create mode 100644 test/fixtures/plugin.legend/title/bottom-center-center.png create mode 100644 test/fixtures/plugin.legend/title/bottom-end-end.js create mode 100644 test/fixtures/plugin.legend/title/bottom-end-end.png create mode 100644 test/fixtures/plugin.legend/title/bottom-start-start.js create mode 100644 test/fixtures/plugin.legend/title/bottom-start-start.png create mode 100644 test/fixtures/plugin.legend/title/left-center-center.js create mode 100644 test/fixtures/plugin.legend/title/left-center-center.png create mode 100644 test/fixtures/plugin.legend/title/left-end-end.js create mode 100644 test/fixtures/plugin.legend/title/left-end-end.png create mode 100644 test/fixtures/plugin.legend/title/left-start-start.js create mode 100644 test/fixtures/plugin.legend/title/left-start-start.png create mode 100644 test/fixtures/plugin.legend/title/right-center-center.js create mode 100644 test/fixtures/plugin.legend/title/right-center-center.png create mode 100644 test/fixtures/plugin.legend/title/right-end-end.js create mode 100644 test/fixtures/plugin.legend/title/right-end-end.png create mode 100644 test/fixtures/plugin.legend/title/right-start-start.js create mode 100644 test/fixtures/plugin.legend/title/right-start-start.png create mode 100644 test/fixtures/plugin.legend/title/top-center-center.js create mode 100644 test/fixtures/plugin.legend/title/top-center-center.png create mode 100644 test/fixtures/plugin.legend/title/top-end-end.js create mode 100644 test/fixtures/plugin.legend/title/top-end-end.png create mode 100644 test/fixtures/plugin.legend/title/top-start-start.js create mode 100644 test/fixtures/plugin.legend/title/top-start-start.png diff --git a/src/plugins/plugin.legend.js b/src/plugins/plugin.legend.js index a1614187c..3fbed828c 100644 --- a/src/plugins/plugin.legend.js +++ b/src/plugins/plugin.legend.js @@ -231,7 +231,7 @@ export class Legend extends Element { */ _draw() { const me = this; - const {options: opts, height: legendHeight, width: legendWidth, columnSizes, lineWidths, ctx, legendHitBoxes} = me; + const {options: opts, columnSizes, lineWidths, ctx, legendHitBoxes} = me; const {align, labels: labelOpts} = opts; const defaultColor = defaults.color; const rtlHelper = getRtlAdapter(opts.rtl, me.left, me.width); @@ -320,14 +320,14 @@ export class Legend extends Element { const titleHeight = this._computeTitleHeight(); if (isHorizontal) { cursor = { - x: me.left + _alignStartEnd(align, padding, legendWidth - lineWidths[0]), + x: _alignStartEnd(align, me.left + padding, me.right - lineWidths[0]), y: me.top + padding + titleHeight, line: 0 }; } else { cursor = { x: me.left + padding, - y: me.top + _alignStartEnd(align, padding, legendHeight - columnSizes[0].height) + titleHeight, + y: _alignStartEnd(align, me.top + titleHeight + padding, me.bottom - columnSizes[0].height), line: 0 }; } @@ -347,12 +347,12 @@ export class Legend extends Element { if (i > 0 && x + width + padding > me.right) { y = cursor.y += lineHeight; cursor.line++; - x = cursor.x = me.left + _alignStartEnd(align, padding, legendWidth - lineWidths[cursor.line]); + x = cursor.x = _alignStartEnd(align, me.left + padding, me.right - lineWidths[cursor.line]); } } else if (i > 0 && y + lineHeight > me.bottom) { x = cursor.x = x + columnSizes[cursor.line].width + padding; cursor.line++; - y = cursor.y = me.top + _alignStartEnd(align, padding, legendHeight - columnSizes[cursor.line].height); + y = cursor.y = _alignStartEnd(align, me.top + titleHeight + padding, me.bottom - columnSizes[cursor.line].height); } const realX = rtlHelper.x(x); @@ -393,7 +393,8 @@ export class Legend extends Element { const ctx = me.ctx; const position = titleOpts.position; const halfFontSize = titleFont.size / 2; - let y = me.top + titlePadding.top + halfFontSize; + const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize; + let y; // These defaults are used when the legend is vertical. // When horizontal, they are computed below. @@ -403,11 +404,12 @@ export class Legend extends Element { if (this.isHorizontal()) { // Move left / right so that the title is above the legend lines maxWidth = Math.max(...me.lineWidths); + y = me.top + topPaddingPlusHalfFontSize; left = _alignStartEnd(opts.align, left, me.right - maxWidth); } else { // Move down so that the title is above the legend stack in every alignment const maxHeight = me.columnSizes.reduce((acc, size) => Math.max(acc, size.height), 0); - y = _alignStartEnd(opts.align, y, me.height - maxHeight); + y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, me.top, me.bottom - maxHeight - opts.labels.padding - me._computeTitleHeight()); } // Now that we know the left edge of the inner legend box, compute the correct diff --git a/test/fixtures/plugin.legend/title/bottom-center-center.js b/test/fixtures/plugin.legend/title/bottom-center-center.js new file mode 100644 index 000000000..487e86708 --- /dev/null +++ b/test/fixtures/plugin.legend/title/bottom-center-center.js @@ -0,0 +1,36 @@ +module.exports = { + config: { + type: 'line', + data: { + datasets: [ + {label: 'a', data: []}, + {label: 'b', data: []}, + {label: 'c', data: []} + ] + }, + options: { + plugins: { + legend: { + position: 'bottom', + align: 'center', + title: { + display: true, + position: 'center', + text: 'title' + } + } + }, + scales: { + x: {display: false}, + y: {display: false} + } + } + }, + options: { + spriteText: true, + canvas: { + height: 256, + width: 256 + } + } +}; diff --git a/test/fixtures/plugin.legend/title/bottom-center-center.png b/test/fixtures/plugin.legend/title/bottom-center-center.png new file mode 100644 index 0000000000000000000000000000000000000000..7782dc715e5db1eb02f2bdcb777805048f648bae GIT binary patch literal 2916 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 U?O9;3uB;$x+wO>lt?c~&1GzRn>;M1& literal 0 HcmV?d00001 diff --git a/test/fixtures/plugin.legend/title/bottom-start-start.js b/test/fixtures/plugin.legend/title/bottom-start-start.js new file mode 100644 index 000000000..18f2d5a82 --- /dev/null +++ b/test/fixtures/plugin.legend/title/bottom-start-start.js @@ -0,0 +1,36 @@ +module.exports = { + config: { + type: 'line', + data: { + datasets: [ + {label: 'a', data: []}, + {label: 'b', data: []}, + {label: 'c', data: []} + ] + }, + options: { + plugins: { + legend: { + position: 'bottom', + align: 'start', + title: { + display: true, + position: 'start', + text: 'title' + } + } + }, + scales: { + x: {display: false}, + y: {display: false} + } + } + }, + options: { + spriteText: true, + canvas: { + height: 256, + width: 256 + } + } +}; diff --git a/test/fixtures/plugin.legend/title/bottom-start-start.png b/test/fixtures/plugin.legend/title/bottom-start-start.png new file mode 100644 index 0000000000000000000000000000000000000000..def10089a3eddb24a869755fc13e9da026ac9c50 GIT binary patch literal 2758 zcmeHJ`BPJO5dXfHC%mK{!4$C~5TG?$3{mV*MIcWK<){#aDxyMSYrs})G{vG^dD4Sg zFdh(Nq!5sSRxMxwMT9^+s2obLQU#R|G!YCQ!kXtq7LclFJH!QFh6VP zTC=~fkCuLavM^YfzoAxM5y(ko|r*F`tE+L93+Ed92g<*ZXQO-_yQ_;QY48+jhO3uD5&ge>f}hHnmNtYxDB*PTiwI z>B&gqCLAO}iX4yb!|+3r>QUvc$f`NBkyXg6FtX;Tu^?Xh^9!j0Sq5dynXYC`kCpzh ztG=rJN#oa}{Vw;WEN+koKI8A!cO$CAK`!!&?U)==bjs3=mQhKIakEutZgE7QluSDz zQzUP@bLWow7{UJhEQLb3&$ae^Hfu8S2AD-a*>p6wqNA>KHkG^ z?`H zqGQ?{YS*+knP1)&iY~`i`$`Er>h^7I5LmO~Y7-;-nvT|b;iXcXuz5u{$}#HuH8;Pv z*RLGtZ-ClEe;HDva^uuW$r*RJbyW#QmC4PZVH z9QFmOh8*7ICyCz_269B(tX{{269B`b3bc-{@nO zGVl4q(^m_ktto>#c6otmNKwCmjL%Ni3E-9GZcyIB1}M;aXkt+Wm{?>4CcPAxoG@9F zMR7{U*|VxVp~4t|pD$}g(_+CkP;}2)CO*V!v&v-G+5-2+NX@rj8A+=Bt2Ffu%)GdO z=Zx}#5J5ihlL!{h>u#S##^xq-L1I?l#Kl-pn}57j6Y>%{Qw)-srp>!AvB2qPT+gC-DRqvHP8UFVkcE3|6uE&EWkq&Xb-2i7MDROJiyY9H#+@;zj3b?2R=Fd}+RE=!nSBE5j&rnKIiPJNaLlZW9 zFJ0G5NehW*r=KBIa>xngnB_&xNSDIY{Gp^74 z(9I&1JRCr$Ooow{UhX50s~Jw-yQd}9aEgy$^fHhsGaXe!Jm{ym!-Bi1a0jyqG3i@c zbpvA+MP;5NLnMySA|_-mWzJXUl@XbIfqy>n=yrsWZc)W@8cd*KfPib= u9fnB|JRA`tq#T3DR2;$#r_hui$^H+Ap&_XN literal 0 HcmV?d00001 diff --git a/test/fixtures/plugin.legend/title/left-center-center.js b/test/fixtures/plugin.legend/title/left-center-center.js new file mode 100644 index 000000000..f834ab67c --- /dev/null +++ b/test/fixtures/plugin.legend/title/left-center-center.js @@ -0,0 +1,36 @@ +module.exports = { + config: { + type: 'line', + data: { + datasets: [ + {label: 'a', data: []}, + {label: 'b', data: []}, + {label: 'c', data: []} + ] + }, + options: { + plugins: { + legend: { + position: 'left', + align: 'center', + title: { + display: true, + position: 'center', + text: 'title' + } + } + }, + scales: { + x: {display: false}, + y: {display: false} + } + } + }, + options: { + spriteText: true, + canvas: { + height: 256, + width: 256 + } + } +}; diff --git a/test/fixtures/plugin.legend/title/left-center-center.png b/test/fixtures/plugin.legend/title/left-center-center.png new file mode 100644 index 0000000000000000000000000000000000000000..7ffd400944999943943f914c134114498ae3109e GIT binary patch literal 3467 zcmeHKYdBSD8-CZa(sFE>D1(!FUeS>8$r(<4@U7s8r?Oc0b2_-nL=N^8PC@Ld3jU*s=Vg#@TNIgbSeIpv$C{AfpR0xWT4ov-`j9?;VQnVVudgw8Ze1NhSex2@rESd2E zn1!XKWrjgtUS3{6e*;%`uLD~TmvDP&R7&!h`b5zbX6Oby3vFB~{cr7l;#s9NJab|A zffY5H(CVsql@gP zUQgD|+Qv$aiaiQ4Ont956uD#;6&E|*-q&gP?4r9u88=tImCaj;OY9)Rin|IH6A|Ow z`T6Ets~blqhZw5S(b1L>-8L1mvz6gpcT^C`bz>VxUAY_;QL37$q_>XW=$gz?FxObO zuj5?~I=d&4I@v7RCeF>VECO%NLXx^lZ& zVCA>LH8H0;I=<6TS5Jp)e{|XJCQml~-NTU`NqR70_kWyt*D83_Sso#*sQAnm%cu{} z92)96H8iw;!@Ruyj}P_^8i%Hnnuy!tQzJWjCp=Z;g2fTI$Uc0W zz7=ayA?p}xb3Yx}Ed6;@pE@m?3L%V~fE7c+FK$<%t*mAoP6K+*2}|5mjC?^bLvpRb zQ0mRNn2MvxE7dzv1OV-E9-S&bt!$;=V-I?*77TS)oA&M=<@ndeR)=@r%^kz6{7vQk zb>V1OYhhNB!cyjx^d2pt`p9I{nN|K7i!^)pk*2>h1%3oamx5#)@Y9dUxCk~KITQ06 zi@ue|;SfmZ_3dqI97IVV=q~S6zMhtcT2LuF{#IF;0g~it*snq51`3}j;&%v9hJmYO zw6FeC|KnwQ!o%Hczf(j)OWjYeae_a0bao2M%YAKQrf9?6)tR5i-sywL-cvlo;a(mU2(kOw0KrW^!V)hw^O5iH)1|>{i=T|yBt`x1lfklK_IaT&B_AO3%$A@@ibkkT!JQrh6Z0i}Z zp6{LLxtFk#7F^qO-hnTXejdBA_qhqiYJ9;F z+$T5&)a0=Ek)$zGSW^>pJ3?%>)GUAmNq#$JOA;wlS>6*QR?jxC>iTOtyQK|p0x$=#UGUKc$IOjfO0byq1TlC%kk zfmFe~)n_l)wmWBn?!iPQqV2l{FQi<%>>G*6qC|D3!Ak7vpiRRHENnkYbWV&n+3>A4%2$qYfQ%o!VX6-@ofs z>Gux2S@Xcaz&-uG3GTZ114r891s2l=RHJwN!i5Vn1xP^ELHCPpxfwC**uK8m(9Lk- z+sy+D(Y@Hy0B~W!xe1Ym>NKRT_xe$6dS)h*ue2HDuMRoZ_WU^vP4F?6i>KpXc8wZ! zm58K-#Yuyr<0<;k6G@xY)DgF?H=_*)2xonYzEP-vlVkxvSx!tlyd5@ZgP~iB3Dyb< zw4L%I(1Wlov-W#pjJ3hWEV@WFk%G;b$ipW}9*IVAQrmceE*rLBrI~64_FrMX=H~xX bHzS+T9sA9$+&k(IFIm84iwEPXJ^Se2Vf;of literal 0 HcmV?d00001 diff --git a/test/fixtures/plugin.legend/title/left-end-end.js b/test/fixtures/plugin.legend/title/left-end-end.js new file mode 100644 index 000000000..ecb01b0dc --- /dev/null +++ b/test/fixtures/plugin.legend/title/left-end-end.js @@ -0,0 +1,36 @@ +module.exports = { + config: { + type: 'line', + data: { + datasets: [ + {label: 'a', data: []}, + {label: 'b', data: []}, + {label: 'c', data: []} + ] + }, + options: { + plugins: { + legend: { + position: 'left', + align: 'end', + title: { + display: true, + position: 'end', + text: 'title' + } + } + }, + scales: { + x: {display: false}, + y: {display: false} + } + } + }, + options: { + spriteText: true, + canvas: { + height: 256, + width: 256 + } + } +}; diff --git a/test/fixtures/plugin.legend/title/left-end-end.png b/test/fixtures/plugin.legend/title/left-end-end.png new file mode 100644 index 0000000000000000000000000000000000000000..a60610ab5009b914322f7745dbb64813861715e3 GIT binary patch literal 3005 zcmeHJX;f258m&Acyx>G$1Vm*Eq+K9Nu*U`iK_3VNP?pvp*ev2828Lk~R6vj<0y030 z$Z9t#aY?{YL@nq6@J8PT+}BqeO{RVCgnFC}TD{NrYYu#&~X@6`OBq#bhkaO1%%$BTC* zAFPx8K<@}XA1sn^i^gU1qSfJ!)$y^;{V&xZIB|=q#@UDj3Kum5TTrqo4uW;Wzmmv6 z_v_-T248*fH4FcH4@NG5lWaCyWz%qLt6P{SF*9pyas#h7`)BaXol(`4fR?NYUz(f9 z{CIPJviQJ~M`4R3BNoJHyf(?rMN9D0pT^!O-u;qX9w5ujZ0i=yJ!Ps$EIzXX34TFo z!<`?=tyG-1=-hW!oE1iogtN+tpKbXpJQn@CjWvSm3Ch!kV1+$+_3BkwvYNihOJ`Tt zyr`w&zFOLfXj(Bv=x@q5ADww$FaI>&RY@y8T6S`>*EY=aI}aLF?!q@0=;`Yhh$4qw zUdG17RaeinNO)Q{3mv1i@?Ht2z{KZSwm5DvGk2#~?(33c1Iu3GE_ierXy(N_3}drc$h5M zJ^#(SxrwesYAsLzFh^?-T z5bq6r2oQ7=6vFlcGf4m7%dFAP$HDSQKs|EbK~0b0kZ%^^WEnMiT8%uvwX5$ItZ)J< z>vSB{^!Fa5`Bpnvo*iG1%;T0nD6n0He`hz}>8Xk;bia2*P!%;Lyv@8Ud|!WAU3%+- z+~%qJNDkN=zkJoixB9BRy?t9vg34-~N`JSEC$SL0_cEkd!(`p|Oy;WxK2>cEIaI>` z&rCCPo3Zg#z7IEaSlDraah)B|w5EF%!U$UX1m+uVXOC&{dSU+I_K*#{gBZHi`mHh) zf{?jpMPBNE6)7_0_8oHK1p7y(dCnFX2{=uX?viy{lf=Dg{Bc8(ftwwW6lSOH^I2G= z2w2ODv&rBYl5bUE$4>_ryE;$Qp4rE#no&pX{F*PKJ~)l2lGW>*D&$6jf#a&U6B~Y< z7B0P`ut$4$KT zumQK=yxrAUpfr(3ZMlZRIE`dN!B0Oq7VP7=V7{VCMt-s4Hs%M#UP6kfTo*B^C>nNS zkUW=lEYIFw?gdcbonsqbUc<^CWTZzyL)X$p0gjkHk97QMgmD{-)*5yAo8kWhOY3=M zDKdM+^9RTs|FE3;%nXmbxCn43)RQieTNyYg@WxY3(w`zcV`%zYzuBjrB%VFYB5`j+ z=IfK}kiZ+LE^d!;`0OG^@Ya91W&Fm#clEqs^-rhzd2_NHwhPt~6p z6wc~@-N1e~M@U>R&D!SL*51zQEMvP`od5l_W8Z%6+<`!q2@<@88#_NKI5YM-hlw{{ zv9hpm0uyIi8a5#qGq7FS7e8jXBU)KrmW1u2iSl}n*L2bNy5$GR_d(n)hpO7Lb9#6i z0zbN25;HsW(Gp^)WH50Pw|t;8Yg$LmAyNG2XUp-@Vy{Xe7Uoz@e$V7lD*O$^SE3wt{E|DLWW6Jskd7KV`$r(f(^kS>3 zwlzNn!nZOasfK@!xZ_*9@^HFq`HRnw?xJB$Y3;fVsiVFD<@rN|b`m<3u6htOX*H+D zkp7T#g!zI%F8Q|8c^3acm7m32vz0rP7El|Cg)emQL>~ONM06vrv9a+^zIm8%V2bMT z;7)02>23zYJ79&!jS|3vD8GT|H|fqDaFn|2#cvN)P$-nUdv+{bBx#~bmm2pG=} zXJlECO%cdF6kOLrPravoV;aTkr)S>4>o^p82PMOai1e~}^N+xyo#mwq^AIRp&5zu3 zN?=9ClF}Eut{)3(P(;L|hGnaNcffF50h*&NT^fmn3XGyCO+-Ti41z@3h=8IH z2L&!okUNGV5-BRuZHo@d&;+Cx!zA3DHGkm#0MD1R&pz*d-ugUi?VEI4b8(^q5da`= zX+b*y00Nf?AZ&#%_uxW5xWCvld_veXUj5&FRlKr*xu6C zabWsL|YvvouXp@*~Jb%aij7{09D6DMmd4fjTy&5-N7}D z@rS@FFrH1JS76RS#rS$c?UlJ#X=>(Ai?gq9%l)>onVyCgM#SDS=lli@-V4lf{}xO| z<(LC?{RUIgBnOL(5;C74kKzSVb0fEN8|;KpTGQ>>2BW;_Exk+$aq;G4CBsuGdm_X+ zv0`IIl2pokt2xAZ1#$YhL9cU+uK7en9QJF=A{9HACTiH_H09f5pSVj0ruq$?lr9s* z5}6sOKA?OgLb6m={5?ZB@-p_afFDNW#J2tg@icesW&J0rWm6CuZ4OMi4V`LTs_=|; z6pqJcDfKD4#A24B@9W~6`ud}MK0ks;57u+v8Es2AgP;HUv3Mq~)}g?*`TNoYGg5^Y zI&5d+rk*NX8*9z<9e%;kV+yZ(ZkcS7sg}U?k=Mrzk^cKDt?UIC@OV$9WEYVRPTA$F zdaGlIYbm>&5P)BodhqG?uLRfabl^Nq`3XIR5V7f&gSZkL6%>b&WROyT=d7GjK%G%C z>thXp&2na;U6K365iNwsJLmD6DW;WL0N!=}_5J4yPgnCFS1Q^VH+CP*S;^vRa<{cV zzNeZxku311Jz`3Djgr!Yg1PfG?{gf0#CdgJC)AY4`KI1gv*ZArl(gF}+{e<;Np`~K z2geaF(!%$-VIdi_$)uI=x0AJ5L8Jwj_KRjgw6;g!+%xGft^_)`|7Xt^O#RFu)WaT( zj*c#TX=Yb3H>2{aE)Lf8l%L+>|5MR;mQPU{=0fJxU0d@RZ@as&I@`a#I_ox29im}) zwztCf_2IL3yI)#4)`^UkCOUmz#^4tO8*3%F@VOx+w(P#-?rwV`##3cNt=CjH#$R7t4qKl;?TIT{ zGHY?JhQ-XXzj`m&Wj<(#=q{0Z{7NpCg9g-n{A4mwz|~yZ+#2etD9_A zLRS`AD3`TB_;3;~mcrlMz?xAq*35&1>VS&}++Xx@nlc=qxz+Co8Yc6`0o<3a>QLOR z2#LB#2L5;*q|KC6SP5N^l<>lacK1pK{KBz7dUB)>*G(K{cvJ_EX;6%1IZ1gp*ayux z0f=jkbXC|;XDFK5;zh=Mlh0nXP((#Y7e~uKQ*20+MQFsPkZ~mH@53279tw&E7u&+$ zsIl^Qz8y#o$JG=8W#j8|b3=9P(2SAgNFHR!URHRrg3f!n=rT=KsM*NLO26iYII+>m z?!3!W@6?GLz4-kGkCa4zKe1U;zaA~X2Tff1yx&G@vJZ8w4nF(*>e3B!U}N}4wNaeN zf#-|s@(c!}BB1+^!`D^=?;Bo8Mya7y^NluAunQS5Qo-Z7-b(*8p%H_Bu*|bgp*2H0 z58MlQnKQe? zXZxhje=4z@*wz-ZalW30Qo72p97AmS379$rS_{Bb2lGqQ&7S91LvAG{HRqY9d|6)@ ztzc}d9^uw|xaq`0z{LS%Mr_yM_kEtv<#LS~iLivPlN1en1pJjLdn~8lYeRj9WOVpH zb|N)=7awCS4A2!4yS|-n9J@#9lE&-m>ZTg46@YueJ;8>KA{CI;aZk9dVds~ELXJum z*ySddx^Z7UyU@Ql5OwEJh-Bdd7$>i(K-4&8C8c)HEpjR^lR3$NEoI`fdoP`>IOrVR;#X~*n95!^D=(xLR5gdV71`o$C~8VOZ5 z=q(Kw2vs-Ri9|-~pz0c&rJ(xIvb~6q$nu1$o4uceC_>fsbHbTo`!HnE=57Kj3E;ge zHDf3oSq@mvx2EyTSZMi4X%kYH7#&19?4fw8VMtF&B8M;u=cI106serV0fEk@^dDjT nsK$@k_`#GPy77Oh=)9LKUSH=#{F_>MHv*QXwzRTi-ZB3J)FD$v literal 0 HcmV?d00001 diff --git a/test/fixtures/plugin.legend/title/right-center-center.js b/test/fixtures/plugin.legend/title/right-center-center.js new file mode 100644 index 000000000..bc35dccac --- /dev/null +++ b/test/fixtures/plugin.legend/title/right-center-center.js @@ -0,0 +1,36 @@ +module.exports = { + config: { + type: 'line', + data: { + datasets: [ + {label: 'a', data: []}, + {label: 'b', data: []}, + {label: 'c', data: []} + ] + }, + options: { + plugins: { + legend: { + position: 'right', + align: 'center', + title: { + display: true, + position: 'center', + text: 'title' + } + } + }, + scales: { + x: {display: false}, + y: {display: false} + } + } + }, + options: { + spriteText: true, + canvas: { + height: 256, + width: 256 + } + } +}; diff --git a/test/fixtures/plugin.legend/title/right-center-center.png b/test/fixtures/plugin.legend/title/right-center-center.png new file mode 100644 index 0000000000000000000000000000000000000000..9900784a4b3cfbc976d0f5b5ca5d88a835848378 GIT binary patch literal 3369 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 Q_>%*yaMosYQ~aYp0Y95KoB#j- literal 0 HcmV?d00001 diff --git a/test/fixtures/plugin.legend/title/top-center-center.js b/test/fixtures/plugin.legend/title/top-center-center.js new file mode 100644 index 000000000..4ea2e46f0 --- /dev/null +++ b/test/fixtures/plugin.legend/title/top-center-center.js @@ -0,0 +1,36 @@ +module.exports = { + config: { + type: 'line', + data: { + datasets: [ + {label: 'a', data: []}, + {label: 'b', data: []}, + {label: 'c', data: []} + ] + }, + options: { + plugins: { + legend: { + position: 'top', + align: 'center', + title: { + display: true, + position: 'center', + text: 'title' + } + } + }, + scales: { + x: {display: false}, + y: {display: false} + } + } + }, + options: { + spriteText: true, + canvas: { + height: 256, + width: 256 + } + } +}; diff --git a/test/fixtures/plugin.legend/title/top-center-center.png b/test/fixtures/plugin.legend/title/top-center-center.png new file mode 100644 index 0000000000000000000000000000000000000000..0a1a3f33acdef623bb017ffd73625f3c4419e1a7 GIT binary patch literal 3468 zcmeH~>o?o!7RR4oB$cwNv?*;}t4Hg8X?t9jTRM&F6rrZFPLT{+&KURBwUN+Lr3A&G zBhuDTLmQ>)9yw)%Qt8o7ja%YUREba$At5I(=8rfpyxM#1wVv>tIOOJv@c{smxe!1ekQx8jXE$W=D{h#JzKManDSXyDk``-yt3H6#X!Uld>0$T4 zU5r0g-+MMayf>pT|H)*LuLFe!45UaQ1GF2BbB60-yl}RG2&7^udUVn1~)8r*JI256doQvxFKxg1tE}4 zIR0eKZXo2#9;>`{sf$kPzJSP2xtpOx0}AuQB%C3c!CabGBrKFFFcj&LH zz&Cb7|3MVGU>q^zj==I&x`fMuJqI>WKzd$ChbjMO(OM{d0aexPax15s&1S;81E-c( z#+qJ6OuSy9_|XG%o5M%1R(eEN4p?+Pi7GeGQDrA_`1W$owzBYIL5`YPU*;k8Cp9%^ zopVnf+gM~%uC+w|k$ud_r%ZOlrbjo5YM%4al<t4cf3I}8?+*E*u-=T6dBmF z3uGZKUar)EnEXK7k@^cr$~@B|oOnUZuHNpp&l$api2c<3Cwnm|cnND0g z1ol;8+oCs^AExkB!raNQuxv_{Gi?%vLbq)Mr@+gP&_Ma@+#?nJ7J$I6O8(MHtA^{7 zt3{$4@V6#tsL0mwwF}JvQlJ?)Fixb!Dq5>DwcRm0{PBS0E|r=z686rV8C#Qv-?qvp z&bX}N0LjGv$7wnIJQiq3nH%~$w&G$(#Cx3G68yN9%ITBh<-%?OB}){F*<4o2w~Uzf zWUjY_?Hvliiz>zhCzzF|gKlCZYpA;D$J+AMHD5@SEVhj*`rnl9y1Kg9-5mk0EBThN zL+B@W_M#zkL`zB!gjq(fWN^Et6sJ9AbOrKxW(~kSK~hmsQGDs1l2d4CsD@o)!x&6| zYW)fjc+rwcb7B{ANxR(UoE}=B(r}aI1xX}N#}W@<`5&eH(eDEQo^iX@jA~@{~F@-bFrcR72zOcs={CxyLPZ1G`f-YdkBm)vY2!==VN6 z4XSg5T~#EEz6cl#JxaBX(G`;mZh8>@{QUembJQYk;c|z(e@DhofiOt~L9=iUBR}VagoL5;e;QdvjH7~CdAum7 zXjR1RCRKL9FKbtqI|T8TN9h(R!WCS1DsiaPqG$DX)3s;SAlCljqt^9G#?dtyTZ%X5 zx_>dl-_WiqFhy27%5t(6Pq9ORM}6sX%ig9aB{|t}$vcYEnKVXWjvyNH^72+#kL5%b zgctJv?ah^btDqTdgyhFop1baD?B8lGKG?rD)59CK>c~hnB0DiuWJRrnqkgm1s>(*FnX%^I2j literal 0 HcmV?d00001 diff --git a/test/fixtures/plugin.legend/title/top-end-end.js b/test/fixtures/plugin.legend/title/top-end-end.js new file mode 100644 index 000000000..faa873985 --- /dev/null +++ b/test/fixtures/plugin.legend/title/top-end-end.js @@ -0,0 +1,36 @@ +module.exports = { + config: { + type: 'line', + data: { + datasets: [ + {label: 'a', data: []}, + {label: 'b', data: []}, + {label: 'c', data: []} + ] + }, + options: { + plugins: { + legend: { + position: 'top', + align: 'end', + title: { + display: true, + position: 'end', + text: 'title' + } + } + }, + scales: { + x: {display: false}, + y: {display: false} + } + } + }, + options: { + spriteText: true, + canvas: { + height: 256, + width: 256 + } + } +}; diff --git a/test/fixtures/plugin.legend/title/top-end-end.png b/test/fixtures/plugin.legend/title/top-end-end.png new file mode 100644 index 0000000000000000000000000000000000000000..76b8a0ba0282ea5073f0487f6e32fbc8bd0d8c7f GIT binary patch literal 3303 zcmeH~`B#%?7RR5wCs7EMMUa%8;@E&#kf9cWKtja@7l=y@E-W?eIF&*OpdbQy1EUig zlw*~m6+_g6OMw7&Dmw`(dCRc1qF9zJ5<^%+QXpUw-po7mFU+s}^gQRDyFBM}zxST= zT&BnFUPp8#0sz*f8NkY1x@WWEYnE^&Y{k>X^Y>3L5QBX8U^st2gmUf0w@J>f0i~J$zKD>?m4$y?b_# zZOCoF?X`BV0q15yvxYsZ+y;&2Yi@pUuUaL?--8b0%;x!i)tzj)iyhUh8%wE)?091| z>z$8)- z25H3>v{T$}K}{;d2#cDvt-f^kSc-#pT_pE@0r_}nvHCF~0 z8?ls*2SJtB$7c20XU0Kx3WR@pNEz)Uneqp5P}b>^iK+G6VRAEGxP-6 z0U!8kOoV^BKY24;D@JqmFJxF@ir|8_N!(_eT+<)dExI9D=nrgLc-golzkm##u9&63 zpX_@{@~Ok&0ts^PV~c&fGmcQVB__-ka%5d=v&8rj#~ti_Tbsr>od zesoRzNqNnRy%1gY%AL5o(>qXX{!>vnWQ%aB=cF!(mZ;?U!;gWXBnWL&KU~s_mESOn z6HXifr3k0BK_XzUcRvP~BDLVNY-zx3h-8fjY>oqj^aaP{UGJNq_)Gq9zR7R}OPkS( z0p-(bo5p`+%g(;>$ZaTFjKDt%fGY}&-{hI~i0U3c!1YZMXXP$So0@JOU>BHX8~6=o zRNFEq#RN(bHBbFie_=^`EKb+o{QG#puY#9LA~BSMi3t%Uv`Ci}9I9bXL6u{Hog)zu z#)US`$ReL$J%Dn%36>n zjbOXy`FGd!WBkB0zN#V?B_-y3X*N#Rsul*~yfD2P8x6xL53Ar~8bh^Ps@8pb}Jd+ZdE&_327M10yN_tp0Y=e+P&? za3Cc0Utn_yNBxoHbVdGW52#qHCv()L3~47RsZ|a=3P&fK1d|kal2!CTLo;Y)+dcDi z9g}y3&`tJn&+~+>s&Vq{$H*2~QD92dGiU=y7A16LN;ApKy*L^c$c-EB=v{t>grlVl zAkS9h^P$lBo?zrPBdP70cuje|G^VACon#$WD%qZFW^^sk>9`(VN+meg*ErkN z+QoSmNH}LE2g`mD8=B`U4x*lrdwZ)O@yv)$-$0rwhb?aD>PqQV%PUem10^b7*}b}i zk8PGzBi7{neKz*q_6~I5aCC=tmX$Ajwfx%{ZyzD>slK#+0^1E9l%elw(KK9i{JKrQ zeIx{789#60@?eNp=ek$8gNDm`_tieg0Y|X^a@!5sKVfL%*RCJ%J`mCS*%@E1EspTp zwdMlMEv+s_5`j^!QtP)ryuu5Q+z$$_Np8(f_ ZGw#`DD8irl5c|M@n4PiFqR*2H{{uU0PVoQ$ literal 0 HcmV?d00001 diff --git a/test/fixtures/plugin.legend/title/top-start-start.js b/test/fixtures/plugin.legend/title/top-start-start.js new file mode 100644 index 000000000..9a893fbaf --- /dev/null +++ b/test/fixtures/plugin.legend/title/top-start-start.js @@ -0,0 +1,36 @@ +module.exports = { + config: { + type: 'line', + data: { + datasets: [ + {label: 'a', data: []}, + {label: 'b', data: []}, + {label: 'c', data: []} + ] + }, + options: { + plugins: { + legend: { + position: 'top', + align: 'start', + title: { + display: true, + position: 'start', + text: 'title' + } + } + }, + scales: { + x: {display: false}, + y: {display: false} + } + } + }, + options: { + spriteText: true, + canvas: { + height: 256, + width: 256 + } + } +}; diff --git a/test/fixtures/plugin.legend/title/top-start-start.png b/test/fixtures/plugin.legend/title/top-start-start.png new file mode 100644 index 0000000000000000000000000000000000000000..b29e80e22aed13acac41fce2fb8d23011c8bec1a GIT binary patch literal 3336 zcmeH~dsNa17RP`576d8t(L==tnwi#=w#QT^Qnb~4rtWA*Q&U^pv`JIa#8DBnsn%3% zrrByrjkPH|Jrs3JT|wx~B5f+zGLBD_ARmN+Br5OUvj5KC`=@{1d+xdCo_jy{p6@xg zCLu1u3XMSn0ALjr8TJ(bz|1ZTKv|eg`juxF0ARZyDl9aqG-E}C|J(Vi7{n@+7a(7D z&^Xxc#JUB8wjSYODqGF1?Qm`^d}nC*s#UcG2DP_(u=-iet(v_S)%!8tXp0s%@9lq) z4D&DGhhBBxoosg0mynvC3e@fAvYzy_bqeLLLF-FX&x0ZwT!W5PXO?d)PwsRsI0^&P zY$l3Yz?9}LFZqr20m^bPI%}Iua~eEX6%I2P)&$Zf(yXI3!LTZk{MIa%lcDyKB;W(Q z-iv`SXS^iU4s7Vc`X(j#BCcu8`uHlRbftTI7boC`tOb>q zl;w#i>~zu+us*#=#``40@v3~glqlFs7E&C=$&VIrZ6;d&S7u@n@aYv-6U7{uHSD!R zU8Wbq1*`=%I(fT&{7jJc;~i<=Vl!TG6_ArDsl{hNAyg@Qa&M5eIg959>+{TGMBMVZ z#@UaE(?oMl@sE9I*M7k{=s&WTkqSdFQsafFBuj7V^WH--S>2#1tmk(TbXIrsQ`={D z3BYOMnY)~?5xY2F2c7ar@T3FJC7p+=#?ao>v9bpz>CqvuB<^3&fG>96PXvU5VQt^o z<=1@|h5b&i$TuIeE5@aczNbqJt+^(@&bgUx#!}Bh;{@c89SdOwcGUmzDFxD}D)R+7 z>6XsWfd^3CvQyhy+7!_P!4Sq|ee<~$%~2J|p6`L?trpvX1yOg}Ea>WxZNR%q7ktD8 z*>%?_v$|F^eM5sSTl&ZKPeZ=!ibh4<9q|t%l);Vy#Z-zq&8ZK0qzSmmbAV>f@kmn+ z*>eHAL*`Y`*mSP|XGuFueJ3SMu3sJOP%>WVK8^nwkh3oljh1vEu0mqoEdlJ+Y1m55xmZ`>8Z0^EoB1}JN%oOqQ1N*6fwMT1M%tiy zAAzmsxt8b6luYLrwL$o$;ohcHyG#vl@wp7KnCvjErUeGpQ=8;O{`Z!T1Yi$_Mq>$6gSGt8P>X+lt z*rTiXT!}MP2WsZ;Wey7C2`tS|EnWO$mu9XE9j--PsJt9%R6Sa{(_E4Wi&G{A1sTrh zFOK`UnwIH_{$20dys71iz8t1@;i2?l!GNQEM(GFK%Fi-uWPd;4)4$xwl}a4FLdmd< zO6`0t&x96h>?U_37)&s>0jh+In_LkjN&zy->thl>Cq7=uR1NzH>T({DOOkhS%o7uu zOC>d27S)fB%RavTYoc`FVS#JUY?-`KPFZ+Lx*6N_hr;E<95sgOfj_@FkD*|*V*_Pg zWcN|E{tiwju%Tdx#@p7~S7WMNApQWDhl3pFd%7A*5z`|FsPi%T z$%RCfEsvFO5djs1@SwSSseu*w-W0?U<=?4RZ>GNks!pMX`;d&9j>_vml?4njdi#49 z%WvVkLQub@fL0)y?(T`VLzzXx=4A&QV~+nRx@4b?Ss~n0vMrCIys0;SSdMhtM+Z(Y z2JLcf5&)|Mli!6zhQPkfs`ngqqXU?)Iz6gxQ$f@lObk6V1a|bN^AVss3}I94e>dbB z70iwNHw}IQM7zN+9olMOi@+9vEdpBvwg~(m2xzP=-Uj%*+(Ub8{&0Y(@VKzH6Is>& E1=kQUV*mgE literal 0 HcmV?d00001