From 8e6531b05ed68fa1b9edd15ee75ec9fffaad4672 Mon Sep 17 00:00:00 2001 From: kurkle Date: Sun, 16 Jan 2022 12:59:18 +0200 Subject: [PATCH] Move element fallback to plugins.annotation.common --- src/annotation.js | 31 ++++++----- src/types/index.js | 2 +- test/fixtures/line/label_drawTime.js | 16 ++++-- test/fixtures/line/label_drawTime.png | Bin 15124 -> 21347 bytes test/specs/annotation.spec.js | 72 ++++++++++++++++++++++++++ 5 files changed, 105 insertions(+), 16 deletions(-) diff --git a/src/annotation.js b/src/annotation.js index 7568c06d4..6a82cb074 100644 --- a/src/annotation.js +++ b/src/annotation.js @@ -108,14 +108,16 @@ export default { }, }, clip: true, - drawTime: 'afterDatasetsDraw', - interaction: { - mode: undefined, - axis: undefined, - intersect: undefined - }, - label: { - drawTime: null + dblClickSpeed: 350, // ms + common: { + drawTime: 'afterDatasetsDraw', + interaction: { + mode: undefined, + axis: undefined, + intersect: undefined + }, + label: { + } } }, @@ -124,10 +126,15 @@ export default { _scriptable: (prop) => !hooks.includes(prop), annotations: { _allKeys: false, - _fallback: (prop, opts) => `elements.${annotationTypes[resolveType(opts.type)].id}`, + _fallback: (prop, opts) => `elements.${annotationTypes[resolveType(opts.type)].id}` }, - interaction: { - _fallback: true, + common: { + interaction: { + _fallback: true + }, + label: { + _fallback: true + } } }, @@ -155,7 +162,7 @@ function draw(chart, caller, clip) { return; } const label = el.options.label; - if (label && label.display && label.content && (label.drawTime || el.options.drawTime) === caller) { + if (label && label.display && label.content && label.drawTime === caller) { el.drawLabel(ctx, chartArea); } }); diff --git a/src/types/index.js b/src/types/index.js index 79fce3a19..e7879da25 100644 --- a/src/types/index.js +++ b/src/types/index.js @@ -34,6 +34,6 @@ export { */ Object.keys(annotationTypes).forEach(key => { defaults.describe(`elements.${annotationTypes[key].id}`, { - _fallback: 'plugins.annotation' + _fallback: 'plugins.annotation.common' }); }); diff --git a/test/fixtures/line/label_drawTime.js b/test/fixtures/line/label_drawTime.js index ca57021bb..5d33d3a5d 100644 --- a/test/fixtures/line/label_drawTime.js +++ b/test/fixtures/line/label_drawTime.js @@ -1,6 +1,13 @@ module.exports = { config: { type: 'scatter', + data: { + datasets: [{ + backgroundColor: 'rgba(255,165,0,0.9)', + radius: 20, + data: [{x: 15, y: 25}, {x: 35, y: 50}, {x: 50, y: 95}, {x: 82, y: 75}, {x: 82, y: 5}] + }] + }, options: { scales: { x: { @@ -15,8 +22,11 @@ module.exports = { } }, plugins: { + legend: false, annotation: { - drawTime: 'beforeDraw', + common: { + drawTime: 'beforeDraw', + }, annotations: { left: { drawTime: 'afterDraw', @@ -39,7 +49,7 @@ module.exports = { borderColor: 'black', borderWidth: 5, label: { - drawTime: 'beforeDraw', + drawTime: 'afterDraw', position: 'center', backgroundColor: 'red', content: 'beforeDraw/afterDraw', @@ -56,7 +66,7 @@ module.exports = { label: { drawTime: 'beforeDraw', position: 'end', - backgroundColor: 'black', + backgroundColor: 'green', content: 'afterDraw/beforeDraw', display: true }, diff --git a/test/fixtures/line/label_drawTime.png b/test/fixtures/line/label_drawTime.png index b112c74b002b6a9fab685027654cbffe1a9c7f75..eead1ff7bc4092f41c37674687e1908cea40a574 100644 GIT binary patch literal 21347 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 literal 15124 zcmeHuXH=9+x8~acY@mS_BqKIRQj$ak2~ALv1VIG}lCubiYE$>!Q#Y4fvsJ=xWB=2U5fb~;z&NWwh_S+%H1yF6F!d1OPXmuv zgfl{6mw2p*F9vTUg(&|tkgPQI&;@>}Gm1ygk>?=WqmfxSBh}S+InJ1kPLse;7ufMI zXC2$_koxnWME&DrOdE(v=T586WYfzcYj;~)Hg3p7cB%n~1*yuQsf;C3G=RDV2SYed(4=3XqKIMDYvGqci z=m?@#dtmz}OkO`aZVuU(IENThf(h7b+jR8Pezbz<1q{-LoZcCCO0Pb$Zcn63Xp`Mt zpf#es#j@@;g(oqJmet$I?;Bsn zoDLw`TuptN9&4ZxDM90f#LmLo&J%(&S4EWswys9p>)8r@9<}D+RJ(p-v8aV@=V0?) zLDfeJMAwN*=K@inV>To_BYP-IQD}En?k^pcKR*{fy>)o?^<}#* zg1miicCVDHVZ>nwt!7s!!>vphf)qJ<%Js9b2yNlv!ET@OEyOWv{&Qi_>Q@=PZ4Nwa z<+@XGdn`@@ac;hqr*ye)m-Myt_Ec;Gef?Bx?E3pt2ihin>(@<5HD%VXopkwdJn@2y zxjgCE%P_X?cZd5<$sXUm8tQy2RFor~A`ZfjpT2jnJ?-#1Qlh)R$fCEai|{&1w(1MS zZ&=2Ej^r4tGY(@iROT2gbEwSbrDT)ja@o{!j-$YR{++AnIkOrHtkw_L1Rk(PTD{zT zHDptRaFu{pCN-Weg zR^`Uh`y$60po=q=(u1*tKP7svYE9k{LRkDZZREHv+_*=ELHqq6FxK-4dbB7bw^ zVINuO7`!>O!(shkC)XP(glt=5xEg5Jn^~NOEfHPiPNQS0-)~)=9HQNO+bR3vm$rF@ zisAVN`aKq>nyWmizIVGQE5`4$+-v2E7keh|Cm)qq&WO-nstJLutU0LVYjEOWwj8)S z1zPY>M!Yku%x{BQZckfotAYBV2qbFL(IYW*`}MNlvQI;7hT>7=*Df_L^-J4>zGnJL-!+T}c=>j=v2FA89p zmba??NBmUvxNM-g)y=rv#LEz(OU!@RI0H#84C!WQ_FmUBrmIQ5GgcqiAYW}>2IWRL zx197qM!3%1@&o$&t)AX}*C5ZbLZ{;TU3h0j55I}xe|T)^t^p3x-DVSrbnaXUOa0~xaefs#H0v|A1Z zwe)))Jv;|*4r}xZZh3>31j%e`CQFIGdc-^`Skfeu)JFvk%D$^Tjg|QpO2I(7ELQ0F zup{}RLolU;ZBho?@418br>x_!C-L6f?VM3Mz;wmMa9i|J!VU!R%mQH2|G_lXLm%pt z5)dDt9@}wLH8aqpUP4Dw5l?j7_vjw+jX)YxS!9a3ir??bXb0@r1Kgo)=4$&nE{{epK61=`NA}Mw~%!)CF%;^ zG6gx6DEMRGL|ExwT%$N09oG?8vVqw5>OC9yg>1I3lv&zEk&pz$_>tDuFRq0>vv_9K zU3D~P+tQb7B|UANY}U@iE>-~fn+IrSDxIDbcXV8p!=ijKRq5k#*vY!i`5phm9_hM* zzEmkA>d)Eh!<+(7#4fVe8XT*Ph9f_zK?v;|HE6293p6ScD$Mcp1DA9f>pCgm7-t1w zXw$mV$O4^!c-jag7HbA+!~V_HVG%GiRE)=81ZUlYi^mM~>Hp!92iJmee#GF{TtpzWFwc=)3DtT`=4+jI%PH3SS))dk#5s*Ok9~1~p8I==TM| zo)|q#PGiR%12WWKgrV^sB++vJ8VAGxH{E0ILnn#x#xjuiJ00!-Lm)c#u^6!7M?%~q zj#)!n4|(cA+lohm;?==I#9Q&$5hsJd{4?l3%lnTa{b!Gi`K^tP7=Qk(s5C0!sHZCv zmrNgk*qQCgn)@}|2bmOGl1Qw!6F8&7c{BH8n$@bbyPJh0pA^~$*W0Tys8<OrxJm14sURpY8Y0EsH|SUF{wn+^BHI2% zeE`>DtcKw|$iBKli8_!2n74=c8%u^uPsK`xW6#y8!#7o>M09_GGw+SH8zst+d&m+~ zMYQ|besBs-xA#zwKYJ?#=fVOH2m7EyRrDb3X-wi9>clJD>XOtJy^?`S9FwB^hn$Xr zvu$f@vrtbZR)rcQ8Ndr^(=q9Jqj6|Hy2r() zF#W1~St-81RR#15ag>yl8sr=`l72}e?n4@WyBpW%zvZcm_}2yJ-l{c-k~^rNlA0kj z4?k=#VomB^&6GHg#?^hAkU~`u1AnvG2nmRmN3#b6jpDca3r(LG6`6`X22-`}B2 zwyubN#ByGc@%7EO);m+NT4Mfto{nV$)|a9TXCfo$1-eV@zKU6YW(*ak8=_O4zGln6 zZDitjhY|0a{Xrb#tN|e~?|(BmLRIdI*}zkuHDXkbV$16@2{4Y5-Ld^*mo8MMCH*Ue zl!`TT;H^!L$MW~1H*byxyek{Jb8&sHH>Z^po2>h?Xv)>Ew35yOx?mNfWmQQ^%=3T} zC?glpAisG`u6Fk50Tk#9cI@{{F!)hs87Orc56gTT6hrkV@x-12>4-0{3+11$gbvh- zB;?lqm9(I)iH zXt{PX#h}#w4H+%>$M1bk%X#H`>E(TI0+vDE@O7*qxX+6Lm%jVTJo%zWzW2rg)8~t} zU4*e@a>e`TFKe@3gO_W!CL#vi`i#YGI#_F0J1$C1gr8=nINq^2ms5}pQWN{py4ntz zO(SFX0jmb_(4SuW>wWWUU$v+!`r9fr6U9_BlHCn%2!?iCwY$?)LqV8Ovr$0d2#G); zd(%>_mU2n4zK1)+P(DkSXR&(ox`DZYiQ%U&vHE!5-}NfMmOlNjAxlm##_vvptZA~Wf3Mkpzp3V z#{;vj5;}W>rE{WOOF(+5Vlt>{V}EnB&#`=jd!DU7jA_83`4Lm#7rXB@UZmW_br14A-#VrE3;zQvLCzYM_!#y{AlmC(* zdi8V~Ip(7|M6WXU%+C8eiFV+tb0o-#OW@2Dcq6|I^VuzCN#DZo3Iy(Qo_qk~6}Wae z7#9hw*@r@BAGMu;zYNwP=c2%@6C-|5kn@WoK?x`T7yRa&8Miv~)j4^lPVvBb&g6th z$PmgemH#b!BLsJ`Wr;h0_IMc;#7p?H zW3N55e%c!qcOM*1F;*rLxVRE{rr5-B4HXv&p53-(V*DF=-$q8(Y00;aF{J&=Nsdd!l-X!)nAmz_M$rfoD41mi(xm zv*20YjmH)2+G3#fWv1dd+>I!JauX*VY6^sq(WiLwgK&PpgI*weDj)1qsM@@o&v7Hwem9UD%tFKI@O1LOgJs*lawvbuK|z@iKk*(-5VNg zk6_pp%D_u8?wTq&czB>U2!J!=)nb%!*fYjwXQiES1T<1mU1d7n%;JlJHR`+(q!|=qJ514RNr%5(vK%L?n>vkS0k1(G_7e)7c5N}1C^TP zB2ConpP-mEYOvb7z=4*UD2k}CM}OXEVM5?F$=Ra^py%(WoUGYdDMg4es{b&0{qIWS!-HQ&4?Jo^%(h3Ck} zC#S`|*KFNpySe7R#T@uHJ*1PGPI4t8$Cn-(QVCw420?l5MTQ<(upo7b^-LN{C0a3mNxxd_Br0c2Em^-ZT) z#4L!rb9|O6l>yFcDXSPamFSRPc{%Kqe+3BpUwr)4Z6QdKk?s2N4kY*x*+_!PJPx;p zE_^XK-NfS$iTg^5Sa6k7tJWCLZv78r-M%u{FJ| zb+{aG=ws2s-q&9_K_U6$g{!^n02+7pu=p;c2oe$9vdj|SBLOtQu`g=oD{9IDY7A|q zk9K}iV%EJ`{8q;0{$`lgx2#DkZyha}bNVx^+x&&>@FBs%CZCQZ$*MJ-UEGIKYc4V5 zbZUTqS15|1CIxAP9kb#nHPBoY7EDGcCt?5omuMZY{C{71iZ73tu}7FOJ?Z5+a?hF z7Cz2rzrY);ZQGF`1wH*4{T^C5|2E|if1!<1_#&TYZN`fzSYcWD$)LBiE90$u(drfY zp%iaU=2DCXq}q*Bj*^)64Fy*9Y_{9@Tr`q(4f)ky=jT}=w0Ema02*qeo$juS<-`g4+0mJSQQg2&iw9wvR3bCPDsPnz687b~JMCfKc2dy8(2kpUM zQ<9>3XkoJC6)D*_n~b)wgtLt{b85iQU3)0DdMyNKILGt(02(xIzwbGE79s@h5c81& z?;8RvXk2fXsLKz4S!S|2SZ70lX<~*t%j8#@P8^`5pGI%|ikD#O;{%FUd*hqkE!9@p z_iiCy*Ho)(koi|srsF)wFN3fg7~Hchi3w+cJ$8G#mXzl7xJb|RR(hrnJXK}zG<)sM z&4d^N3xG$@zuAbj)sfQfzNgy0XQ`2H#aVc{Tb67#L8POh3zK;PjMMZ))Qk)G2Z@+w z^&O@Wyc(vUP4bzlw@UX-GP_I0)+##rAPX>xA65RXn)MDA%Vctix9-zNaO@; z;eRjEQBMGJ{TG<#KU4c>*N6m-|8LISe+z}gc2ePV{sj<07f>n&9Cl@C$~4_Wm@F<3 zKp14x7by^okTjK~nrbX+%zOZHVu|NNHRsvEbGVH8XXipn($hsk>hp-p~{3azBk!RLPIQ$6)p#1?{>so{a=1h80 z0_j7ga18H7!0Z^irK;G*2BYnv4cw*aezG2??e{YXmf2YqLx&_k9o+`iuxB}#y>}^f zg;UVzoS#P9WBt%L$`cPT?Aq>dCNP4%pxx6n>-kI3SDwl6asx)tgGb%lscH0NvnJxv zfs+_v=y8PB9LAP2ItLN$^`-^Fo;nS31l}jphU$U(8bDtAZX3YO3B}z+*LS~BUkAv! zeM1n5y{#>;YX0ox0*JBahRO>J%I_G*{8~L}32<)jys4OW#+gG@X4S{)Wjv+^8UncOAnofLpkSOg{e4mnqo)J&Scf2RrlL zYhRQjG{yW}d_X)a<~)XLPmwXK_1P5k9#(Lw0gRPWP>#p~_50B8%wB#kDLkd7?|MMz zpeJ0pPbkho;yS#IA-J1l&tV@c`cl_3O+>P;=iHcms(0&)MU)IZGJf!J`K6gx5rX7( zr)2Xo{7(w%2-R)90=X2Mkxeq(@N=V{XFEYY*iv8kAx zYcIQv@4!XKijF_{h-QYfL!Gb!arzKFwV|m^d*YkP#}_pLS;)Q+b%_ZNPpVwT zYV~Dp1^{|iWZ0faY0Fyy&nz$lx256AIZ)nN=?MTNDf^YN26?^r^gnV6>I?u0$;R~d z=a~gSA88nu^C4C$ynZk>+jy1P_o@L!)eqA>8`ddzXf#soVbTIkwVnBdpArp7mzsJ+ zjnIB$ax*=YSO;Q;Ut)rMXzG4{;tTe3HthKf_4C=YlLxRZ8E4!%Zs{GPwETX5G@ZG$zSAjbL1(#eT;OD%)97(RZJ#^qzerE(u+jRngv1VK{ zn_ewB1Ph-9syPie6w02}M6%F1R8X4cd9}@gdES`rNDf|n#B!(NWzoLV&L$BTweRDC)j7H%zey{y%3kYdiVIhMOG_divg z%66Bkk8yvz;0sJppbPJ_V8@KKQ4`(_1xj4cR+gNJknDF-{a%ydbd8Q`D6u)JnqB)8 zaoXd%oh^?~vak+QY<_rKTKqm^B|+4N^w`dVbArs`&>4Tx|Fx`?dOvS|WvO~Oe^v5G zwB9n@q6@&J@MN!`l$~6O-5EpY9>ild2w>C0>7$zwZ~-f})W8I%9Miu7W1 zq8#zaeXJ85nSAhWv1};l(#ZE$wn9E_1c9Cn_l6a^$F9T|ZLgo7QGr{>c|SoPgeW<(|0F{3 zcNEaLS$z>2q#u>RJ$yEm@FOn(^CH9xDgm=Kfm;~B z%G`)vyXULG74w{SD>bc_rdw1vDt09VhC^cT__$t(F)7WmrCS*y|35k9tE8risy6DN z3V(h%AVPjD1j7P9e0HxWjf~7rvz$>asCOD>{JNOM5O!hCJS&?7$)w?($>5jt>?2z4eK96y6pBbKc=qS1)J zM8HDKoc(=V8u^gO1h~(R>;FC_{%2}`Z}vYK z{vYJ!|ANur79#wMs`#>G)v^^AEV$~oFe$0XdZkO0}gaAF4wqDiGcv@uCs=xV^7}`1iiETjuFW)vzMK2i(s6EC5}lDWq}Up zsd960to-rJ{`+vE^p5~D=u_u&Cam@(cySS*DHUQR{@vasJtLRU8@c)~*GRZ^*&cit zoUXFG>)3K0ToEW%N#)bDVE9z@y#M{4&)UrKVOi69XnlFq1QbmO62s2#&F}Niu%U7C z6%~wdHemS8_10NQ>*=H49jq5bQg~lmxJu!l#4u}ADK5UGAbHuPqs4c`XStSH;`Vdm z6$cRA)jemYs5*ww#s~`D$14-J>bgt>%yX7U$d1TqU>P?BVb22_7a0r7}VdOW?uQD75PAZ&*m z%PIZ8_vl@4FRO6$jhL<7{7#WR*OL`%PUOfNJ5%!HgGp!8Vl{O@Xw5u*0N7D$fa^XBHuw#dc$M;hF8A*55CfBoAohpCO-;~{0 zHFC8yKjpt{Be$Et<~bJVHWw>(NAPE}b7KgZ0ifCqmO5lGiCWK$1yg?mvYua`@6*b; zkw<=I7!a()&EArM?cKjii$R(b$vZiB_0LI`LEQ}Z47VJ=lxA!I8BH!Omc#pQ>4u=4k!An${nKos){h>`Z1i77tN;f8 zJRz8h{E@=Wgp=!()aU2ztRbw$O@74NCYL`>41)DVDEl z=3Agej1N05E+dW6K6Fyb`QB-dUqoz!YF6o}|88r?IW(K}1yje%Ems8ZnJQl+TbXWiBYaGHfZyk^TTMtGD-`k{kSx0Nug&l~vp>+OSspuwN zsSq@-LRy=HJ0u3w9=cLcmREZ7$!049fg=rKe z-tA_tYfLMqfAg-eN!jh2^}oUP_JUNhWH$W;=`@+ty%`Mu0g>$1<#@Bg`K5u$C^G_6 zZE^=5gv$ldkNNe-aLRh11_dt_!$>3IOZOd@%d<$aZh>G;H+mhH<&0ExZ{8=Z-^g%0 z3;>B}q|b6zpZFU@v^}IVNi|8XH5RrSYJGZS3oseE`wg{DcIx|s1okGwoWitzt+!jD zR={WB7UYlssLP#Lb!Hi>+g+ltKOA=L%mQr1L@BpyD#@v6!hQg_G4VhVU$ooKjYWL` z94G7@x-*s(Sfh~JCW8kyyYHG9A)n%s&5R*ht2sEG_`$E1Qw5*|r|8bunX=?~IJl9% z7;RMXvF=whi_{n%L4;I{eHKd_WPNo_#`^~*$^^ozm#Q3+D{jj#1GQ@o-Ar=r_yUd_ zlaZ6qSC z+9CCPKv>b-IGV^CoV0)vvqgZx86h%d^FK%)-5a^-FhaFB&_-1;(CAQ*skNtmxDB)n zoUWmR;$&xP6JSu>$|}NE2VaW$RF#tO%6w}RtiEz8V6P}2EGPGA>Xr`rat%|85}AP^ zK5@ZaDVef!)ECi=#U(NaD^F*4e5X+@7k+)9MM#XZH{N!cdOz&R;^DK2Pl)qc{YgSv zZ%(ys4khx7lHzf-M{+gp83He)DnJ?n%WTR%E{Z%$ylruHc>BtI*vBxMJ|$o-vByz3 zY!J{9cN)7caObXja>4}h$oP%Gx^edIPKue|I()J&GdON7k!3 z67EQusDqsBhSWqTZh$Do{jw7XlQfGsbjsjP|FL&Z%~hJ673&WoX9m=4vzur0GjnGl zrQ;LRm`q}HQpIz>% diff --git a/test/specs/annotation.spec.js b/test/specs/annotation.spec.js index 9a7200e65..1fb7c884b 100644 --- a/test/specs/annotation.spec.js +++ b/test/specs/annotation.spec.js @@ -142,4 +142,76 @@ describe('Annotation plugin', function() { console.warn = origWarn; }); + describe('Annotation option resolution', function() { + it('should resolve from plugin common options', function() { + const chart = acquireChart({ + type: 'line', + options: { + plugins: { + annotation: { + common: { + drawTime: 'fallback', + }, + annotations: { + test: { + type: 'line' + } + } + } + } + } + }); + const state = window['chartjs-plugin-annotation']._getState(chart); + const element = state.elements[0]; + expect(element.options.drawTime).toBe('fallback'); + }); + + it('should not resolve from same sub key in plugin options', function() { + // https://github.com/chartjs/chartjs-plugin-annotation/issues/625 + // https://github.com/chartjs/chartjs-plugin-annotation/pull/626#issuecomment-1012960850 + const chart = acquireChart({ + type: 'line', + options: { + plugins: { + annotation: { + label: { + drawTime: 'this should not be read' + }, + annotations: { + label: { + type: 'line' + } + } + } + } + } + }); + const state = window['chartjs-plugin-annotation']._getState(chart); + const element = state.elements[0]; + expect(element.options.drawTime).toBe('afterDatasetsDraw'); + }); + + it('should resolve to same options through chart options', function() { + const chart = acquireChart({ + type: 'line', + options: { + plugins: { + annotation: { + label: { + drawTime: 'this should not be read' + }, + annotations: { + label: { + type: 'line' + } + } + } + } + } + }); + const state = window['chartjs-plugin-annotation']._getState(chart); + const element = state.elements[0]; + expect(element.options.drawTime).toBe(chart.options.plugins.annotation.annotations.label.drawTime); + }); + }); });