From 330244f6cf31a7bc9863690b6f5272b2b3adc4bd Mon Sep 17 00:00:00 2001 From: etimberg Date: Thu, 22 Mar 2018 18:10:59 -0400 Subject: [PATCH 01/15] Initial working version of spanGaps for radar charts --- samples/charts/radar.html | 5 +- src/controllers/controller.radar.js | 80 +++++++++++++++++++++-------- src/scales/scale.radialLinear.js | 4 +- 3 files changed, 63 insertions(+), 26 deletions(-) diff --git a/samples/charts/radar.html b/samples/charts/radar.html index 7eda09a7fb4..9a7112bb8ee 100644 --- a/samples/charts/radar.html +++ b/samples/charts/radar.html @@ -15,7 +15,7 @@ -
+
@@ -56,7 +56,7 @@ randomScalingFactor(), randomScalingFactor(), randomScalingFactor(), - randomScalingFactor(), + null, randomScalingFactor(), randomScalingFactor(), randomScalingFactor() @@ -64,6 +64,7 @@ }] }, options: { + spanGaps: true, legend: { position: 'top', }, diff --git a/src/controllers/controller.radar.js b/src/controllers/controller.radar.js index 5de4e4ede0a..ceb5d2eded6 100644 --- a/src/controllers/controller.radar.js +++ b/src/controllers/controller.radar.js @@ -29,11 +29,12 @@ module.exports = function(Chart) { var me = this; var meta = me.getMeta(); var line = meta.dataset; - var points = meta.data; + var points = meta.data || []; var custom = line.custom || {}; var dataset = me.getDataset(); var lineElementOptions = me.chart.options.elements.line; var scale = me.chart.scale; + var i, ilen; // Compatibility: If the properties are defined with only the old name, use those values if ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) { @@ -50,6 +51,7 @@ module.exports = function(Chart) { // Model _model: { // Appearance + spanGaps: dataset.spanGaps ? dataset.spanGaps : me.chart.options.spanGaps, tension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, lineElementOptions.tension), backgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor), borderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth), @@ -65,12 +67,17 @@ module.exports = function(Chart) { meta.dataset.pivot(); // Update Points - helpers.each(points, function(point, index) { - me.updateElement(point, index, reset); - }, me); + for (i = 0, ilen = points.length; i < ilen; ++i) { + me.updateElement(points[i], i, reset); + } // Update bezier control points me.updateBezierControlPoints(); + + // Now pivot the point for animation + for (i = 0, ilen = points.length; i < ilen; ++i) { + points[i].pivot(); + } }, updateElement: function(point, index, reset) { var me = this; @@ -98,6 +105,7 @@ module.exports = function(Chart) { _model: { x: reset ? scale.xCenter : pointPosition.x, // value not used in dataset scale, but we want a consistent API between scales y: reset ? scale.yCenter : pointPosition.y, + skip: custom.skip || isNaN(pointPosition.x) || isNaN(pointPosition.y), // Appearance tension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, me.chart.options.elements.line.tension), @@ -115,28 +123,56 @@ module.exports = function(Chart) { point._model.skip = custom.skip ? custom.skip : (isNaN(point._model.x) || isNaN(point._model.y)); }, updateBezierControlPoints: function() { - var chartArea = this.chart.chartArea; - var meta = this.getMeta(); + var me = this; + var meta = me.getMeta(); + var area = me.chart.chartArea; + var points = meta.data || []; + var i, ilen, point, model, controlPoints; + + // Only consider points that are drawn in case the spanGaps option is used + if (meta.dataset._model.spanGaps) { + points = points.filter(function(pt) { + return !pt._model.skip; + }); + } - helpers.each(meta.data, function(point, index) { - var model = point._model; - var controlPoints = helpers.splineCurve( - helpers.previousItem(meta.data, index, true)._model, + function capControlPoint(pt, min, max) { + return Math.max(Math.min(pt, max), min); + } + + for (i = 0, ilen = points.length; i < ilen; ++i) { + point = points[i]; + model = point._model; + controlPoints = helpers.splineCurve( + helpers.previousItem(points, i, true)._model, model, - helpers.nextItem(meta.data, index, true)._model, + helpers.nextItem(points, i, true)._model, model.tension ); - - // Prevent the bezier going outside of the bounds of the graph - model.controlPointPreviousX = Math.max(Math.min(controlPoints.previous.x, chartArea.right), chartArea.left); - model.controlPointPreviousY = Math.max(Math.min(controlPoints.previous.y, chartArea.bottom), chartArea.top); - - model.controlPointNextX = Math.max(Math.min(controlPoints.next.x, chartArea.right), chartArea.left); - model.controlPointNextY = Math.max(Math.min(controlPoints.next.y, chartArea.bottom), chartArea.top); - - // Now pivot the point for animation - point.pivot(); - }); + model.controlPointPreviousX = capControlPoint(controlPoints.previous.x, area.left, area.right); + model.controlPointPreviousY = capControlPoint(controlPoints.previous.y, area.top, area.bottom); + model.controlPointNextX = capControlPoint(controlPoints.next.x, area.left, area.right); + model.controlPointNextY = capControlPoint(controlPoints.next.y, area.top, area.bottom); + } + // helpers.each(meta.data, function(point, index) { + // var model = point._model; + // var controlPoints = helpers.splineCurve( + // helpers.previousItem(meta.data, index, true)._model, + // model, + // helpers.nextItem(meta.data, index, true)._model, + // model.tension + // ); + + // // Prevent the bezier going outside of the bounds of the graph + // model.controlPointPreviousX = Math.max(Math.min(controlPoints.previous.x, chartArea.right), chartArea.left); + // model.controlPointPreviousY = Math.max(Math.min(controlPoints.previous.y, chartArea.bottom), chartArea.top); + + // model.controlPointNextX = Math.max(Math.min(controlPoints.next.x, chartArea.right), chartArea.left); + // model.controlPointNextY = Math.max(Math.min(controlPoints.next.y, chartArea.bottom), chartArea.top); + + // // Now pivot the point for animation + // point.pivot(); + // }); }, setHoverStyle: function(point) { diff --git a/src/scales/scale.radialLinear.js b/src/scales/scale.radialLinear.js index e36b4e13539..3f03ee0d260 100644 --- a/src/scales/scale.radialLinear.js +++ b/src/scales/scale.radialLinear.js @@ -428,8 +428,8 @@ module.exports = function(Chart) { getDistanceFromCenterForValue: function(value) { var me = this; - if (value === null) { - return 0; // null always in center + if (value === null || isNaN(value)) { + return NaN; } // Take into account half font size + the yPadding of the top value From 73f37e1fa5c3254ce43405fc4705dd8cb7bf4b5f Mon Sep 17 00:00:00 2001 From: etimberg Date: Fri, 30 Mar 2018 15:49:55 -0400 Subject: [PATCH 02/15] Remove double set of the skip property --- src/controllers/controller.radar.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/controllers/controller.radar.js b/src/controllers/controller.radar.js index ceb5d2eded6..f4086cbaa04 100644 --- a/src/controllers/controller.radar.js +++ b/src/controllers/controller.radar.js @@ -119,8 +119,6 @@ module.exports = function(Chart) { hitRadius: custom.hitRadius ? custom.hitRadius : helpers.valueAtIndexOrDefault(dataset.pointHitRadius, index, pointElementOptions.hitRadius) } }); - - point._model.skip = custom.skip ? custom.skip : (isNaN(point._model.x) || isNaN(point._model.y)); }, updateBezierControlPoints: function() { var me = this; From 5ebea1e35f4010a7aa46b506e37a7dd23f841b84 Mon Sep 17 00:00:00 2001 From: etimberg Date: Fri, 30 Mar 2018 15:50:30 -0400 Subject: [PATCH 03/15] Update documentation of spanGaps option --- docs/charts/radar.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/charts/radar.md b/docs/charts/radar.md index b8a41c8384c..476b1daf4a9 100644 --- a/docs/charts/radar.md +++ b/docs/charts/radar.md @@ -88,6 +88,7 @@ All point* properties can be specified as an array. If these are set to an array | `pointHoverBorderColor` | `Color/Color[]` | Point border color when hovered. | `pointHoverBorderWidth` | `Number/Number[]` | Border width of point when hovered. | `pointHoverRadius` | `Number/Number[]` | The radius of the point when hovered. +| `spanGaps` | `Boolean` | If true, lines will be drawn between points with no or null data. If false, points with `NaN` data will create a break in the line ### pointStyle The style of point. Options are: From f97694d735f62a98edd3d1a9dbc6ec9f2ff75062 Mon Sep 17 00:00:00 2001 From: etimberg Date: Fri, 30 Mar 2018 15:51:37 -0400 Subject: [PATCH 04/15] Revert sample changes --- samples/charts/radar.html | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/samples/charts/radar.html b/samples/charts/radar.html index 9a7112bb8ee..7eda09a7fb4 100644 --- a/samples/charts/radar.html +++ b/samples/charts/radar.html @@ -15,7 +15,7 @@ -
+
@@ -56,7 +56,7 @@ randomScalingFactor(), randomScalingFactor(), randomScalingFactor(), - null, + randomScalingFactor(), randomScalingFactor(), randomScalingFactor(), randomScalingFactor() @@ -64,7 +64,6 @@ }] }, options: { - spanGaps: true, legend: { position: 'top', }, From 648cf1e99e2dd14df4142884a473a04841e078f2 Mon Sep 17 00:00:00 2001 From: etimberg Date: Fri, 30 Mar 2018 15:52:17 -0400 Subject: [PATCH 05/15] Remove commented code --- src/controllers/controller.radar.js | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/src/controllers/controller.radar.js b/src/controllers/controller.radar.js index f4086cbaa04..55d28e56824 100644 --- a/src/controllers/controller.radar.js +++ b/src/controllers/controller.radar.js @@ -152,25 +152,6 @@ module.exports = function(Chart) { model.controlPointNextX = capControlPoint(controlPoints.next.x, area.left, area.right); model.controlPointNextY = capControlPoint(controlPoints.next.y, area.top, area.bottom); } - // helpers.each(meta.data, function(point, index) { - // var model = point._model; - // var controlPoints = helpers.splineCurve( - // helpers.previousItem(meta.data, index, true)._model, - // model, - // helpers.nextItem(meta.data, index, true)._model, - // model.tension - // ); - - // // Prevent the bezier going outside of the bounds of the graph - // model.controlPointPreviousX = Math.max(Math.min(controlPoints.previous.x, chartArea.right), chartArea.left); - // model.controlPointPreviousY = Math.max(Math.min(controlPoints.previous.y, chartArea.bottom), chartArea.top); - - // model.controlPointNextX = Math.max(Math.min(controlPoints.next.x, chartArea.right), chartArea.left); - // model.controlPointNextY = Math.max(Math.min(controlPoints.next.y, chartArea.bottom), chartArea.top); - - // // Now pivot the point for animation - // point.pivot(); - // }); }, setHoverStyle: function(point) { From 029b12bca5079ec23ec831ea7b55d2b79c618c56 Mon Sep 17 00:00:00 2001 From: etimberg Date: Fri, 30 Mar 2018 16:11:11 -0400 Subject: [PATCH 06/15] Some tests for the spanGaps functionality in radar charts --- .../controller.radar/span-gaps-end-true.json | 28 ++++++++++++++++++ .../controller.radar/span-gaps-end-true.png | Bin 0 -> 3204 bytes .../span-gaps-middle-false.json | 28 ++++++++++++++++++ .../span-gaps-middle-false.png | Bin 0 -> 3207 bytes .../span-gaps-middle-true.json | 28 ++++++++++++++++++ .../span-gaps-middle-true.png | Bin 0 -> 3260 bytes 6 files changed, 84 insertions(+) create mode 100644 test/fixtures/controller.radar/span-gaps-end-true.json create mode 100644 test/fixtures/controller.radar/span-gaps-end-true.png create mode 100644 test/fixtures/controller.radar/span-gaps-middle-false.json create mode 100644 test/fixtures/controller.radar/span-gaps-middle-false.png create mode 100644 test/fixtures/controller.radar/span-gaps-middle-true.json create mode 100644 test/fixtures/controller.radar/span-gaps-middle-true.png diff --git a/test/fixtures/controller.radar/span-gaps-end-true.json b/test/fixtures/controller.radar/span-gaps-end-true.json new file mode 100644 index 00000000000..dfe31b1b895 --- /dev/null +++ b/test/fixtures/controller.radar/span-gaps-end-true.json @@ -0,0 +1,28 @@ +{ + "type": "radar", + "data": { + "labels": ["A", "B", "C", "D", "E"], + "datasets": [{ + "label": "Dataset", + "backgroundColor": "#FF6384", + "borderColor": "#FF6384", + "pointBackgroundColor": "#FF6384", + "data": [10, 20, 30, 50, null] + }] + }, + "options": { + "spanGaps": true, + "legend": { + "display": false + }, + "title": { + "display": false + }, + "scale": { + "display": false, + "ticks": { + "beginAtZero": true + } + } + } +} \ No newline at end of file diff --git a/test/fixtures/controller.radar/span-gaps-end-true.png b/test/fixtures/controller.radar/span-gaps-end-true.png new file mode 100644 index 0000000000000000000000000000000000000000..e28c1c5a29656dbf6721a2853225d0298af63b71 GIT binary patch literal 3204 zcmds3`B&4|62C|-tq4&869r8RibmN|P(cl`4+4>}ri~)9M6fD|g0dRcmRBl^U`mip zr7U3+6h*eM1qD*JMD{hTLK+?fNCF{3;C-?E1K!W?o-^NbXU?5_zIW#HnVA@STT7)~ z2X_GglrG}Ui2%rbg7&hnzJ$I%-Ymxfu$yqv{QDn+pDu8H;(wZPQCKRQQl*=zs@S{7 zb{)*HF}g+aI&lh3kA{~FKglXxRqlAew!NaM=X9;yx@E|OGlZpII$EI=@aU*lSKpvG zQCm$t$Ec#V&{50f@#B|oi|Nr<2DuFHCo-wK+_f#H@;O6JwItlMRni$2z!8NlcUGr` zRTM#g^MAD>yUsX}`aYJW9p7*Pk!nWOH@!qJ>5Zd}+k*KaBZ$OOKmx>lm5{vCi)Wqm zEpj!e_cco39vo7`W`6RS5P+a05u&Q2IFB~`hOnt|@;#!EoYn{xo1m+?t8J-6f!Fx@ zia>|+v70RT;2CXdyK$Z*rpjBxeF8&otSGTz^pl}dZnxGTV%ae*sS|_v~K=`47W>9 zve}t&G@nFmH}!yZMuEEvpSLse^*+=%9L1uhmE0p!OqH!U`aGNPYLh*varJ=BD7=(W z6~4@J_mY^dT(Yxp?n=-5Y)}v zj&E`$1+|2!Ow~d?! z)5mYr#A(eW3Em=CYnQS!p`4zx$}|M3dkgDo#K&Jz<^((fq!(8gh-R8CgLS{_sjC-X zk!PmIp6JK5!Bmlxr&?E$dSPRrG!J@YJ8bFTO!TjDR+(o&aoXTp*)Mo$%#?iXB@7gwO}b3K-E#gkFGudfc~vGOxtdaIewjifNv-UhUJNZ! zO!glz4cH9ki?(g3h@!QLCss*V;-?MB!<_5t5bE82<0fAjkV#GR&s3qcAX%^jTyi#AaKRvkgoUCJLXaFd zd4gD9yvAJB=4KEikg8qe2uF>(g_A>me-wvxVWH5cv7lx zx|vmOm$sm%$5jNy5AobZII_R~C*SoK1j!C?Q#U;@EI0J+TIuRZ4o$EVTr$rM^?^l~ z`#i|@*9X4++3dyn#)4I}n=V%gJWa0RC-`ZVhlCgu$p}de&I}|lKH2qFv00(K(i7_j zslmf417QzynT;8>A59A=xl zaRCkG`Kl0rVA1ynMMK?~9n6cGGwl?E-*X;w=`~+O z!eh4aFOiUs{D!p|BQfkiF!k23O|!!N>)m0c{+VE@_8;^M#6e;gdClpxw;WSVmp;+MWc;{{8hO{u~gWm0IVgNer)oY=O!&!GTD$ znvG=a@b1Zn`Rf$^b2)?=x@_ScURo$LGoC6GUA78RVj^N`*h`^bu(Tw}f`gH06_i_l zl$=JQk@R_Yn7qL@ljC3$U-ACz=r=aNAQkd>(@QIgna8I_L};K#a7`O>pfdFR-VdIbxO zdlKBA$I!OW>32_ezmwEX3?3_*o;JPmAW4CI3fCsWAe#0PB+Uh)&U>28f z=54CIH{RhXOvzy{#^uQxyX$sbfU>R@Ah`@drAm}Zy{~RlQ}3SwmNXrB?I8xV_bJ*D zy2MRxfygfTGc5B0GgVMndkE*p#^bdkju1Dix7*exm^g~#j`c<@&xbsZr(yRO)_n&h zv(En}@U?L7Syj}W$)_0PZdU>|)MCQf2FzW?^k}z>9Pt9uEJW?+VB`^ESx}`8r`%vFoFoA5{rx9ZMH* zF^J)P(#l&xA6y&Oo*@q$)zCG*uDKh*FpHoPp?&W{cAPgrC{l&&!|{t=yavsgk(?_V zt=&8&a9jJv$Uw_-gN{C?=>?UgH3P$yE!gP2kt6Fsy^Y`a&8zFHmTeLH0@fALkasraEx^s&>{K<@=y+*j4u5P)Qyn;7V~zhY5IPF8 z@LEjJ-XdD-))t8m046>*&jrcaQu^c+zurS-*jdcIyaxrn_-CjxkPb_riDBGwZZ4I( z>_X3kgBFWkZr=+d0ZX$yGm#e2hdT}IFZ|soE8fX((Fex9L3a!kiK+KAc#$=Qgb zbAlk}>+%4z_jA95Wi~S-P7%irsMjF%WjcVll~GXSC5&kt%}?y`b`ex<1sQP0EUxxFOvs)l%{&HG*v#M08ss7M@4}D~JmXL7`GX!LS&)2#74H$`V1)1Q05+6ct)fP-tXd)LK~tp42ER zLLej%!s-IKKuEYMf+$2Hf`TEvUVsliy#UY;IO=&QDD}YtFYD&Hb6L8d_5R7~9;3se z^{t)X6yV zd$OzTaNxHa#}G$}FB0q$)*Blg#)rh5iV%#VV}6-uwYVlKKV}G}M_HQl>s&bE2cOE4 zS0?z&>Cj>RADgnJX>_hJvajRm=sM6)xis$MbYa}_pd%yxx3~mlU(JOs`BPn>^RZ*W zqO8q5+~0>{N=R}G_wOxEM#(3ug~z+>xUWsj@m5|uQv|}P-wf!yR)kjvCUfqn9)EB@ z2!Cwi+*^^e1Br$sH6fJDM9N~Mg<#wQpR)z2`I(~1AV{WZ(jF|{q&kjoH06LcdnY^Y z-QQgNaC-Mp;WJ+|V=(e(kI`z9^caQdiesU0>NrZK4`uNVMjnVw8TEM=;By;o99%~3 z7v~MH9uAT(5!zUmmSxq|zZ#(2_W|QwO4W>7y|HvLHIv!yfMcO?+2`RKazu4fjc5NR z@BYY=;R!f0#{-vfW>{WLNHW2*+~}EyC<#Y`cwyxGF7C6-z2vxvEw=^;R9ypbV+_W= zi3pY!U>0g@F$cUm>HuZZ0C?ncDvnH{k1N2W5)+~n2i_cVz%RyZE57SH=3R;mWy5+o_+g6|0u z9zlZkoK;)n)MqJ+9kg*vx=Ky!cu13sSI-XS?a%TJ3d`AplRgSoS6n3>UDuK{*%cPK z9q+mW$={Ad59#i9+mp5*xAG$;^Ef3lmXaAiEI(d7tNsC3Rz177h+dvY^dT>1+v7YO zEn^}~5c_*y^!fYD3on1Yw+qx;WjD&NV0dX*A^Y^#3>o*_!TGd3xQQJ|&D*J|FxExQ zAATwG^60G|s`<2k0sWR?tY0U?`2v z52rxxxx$*Xh@geC>V9Y2Oleo@QG+8Dru?n0oKD+i)l9Z9t+eOXRG7iC#=!*1--2g3 z;j&YPc`vCX1kefHKk#oXBe8&pHpQz?iXhxyCww$rTY9-9pl5NY?tR+CIh%*FnTK-H z50}jfhgnvZH8}_OcBr+fr0;>wG1+7bEheCZzRJ6+`EcsXr0H`v7uN0==Y--9MP&%7 zCHuV_9LYDtE3L4C6`%gZCy^l6EC0)4EqO5fbxu7q^-4bsdc-OcLE?`UzB)rzQjJM2 zHL~PyxC`Oy?vJ{38s>)fFkr*8+3M-8%|w1 zx!cljfC1^KI-$AXAlrt%?2|QRmfPhCiLh?LR77Ab$~W zpY}{`v>GbaYZ-YSDwSa5PiYc#}F%Q_AF-%@W=1HMY+ghi(97=QALHr zOk28>S3jwQNSeR)^iO!7`m(kyvCBClxAm87P4!|xPyhD1XApsy-puo`RwVHPLmv^ip$Xl zTGr{8LMiv0J!hNpiDH}Zi;p-D0u?T>D2(UrNcLwjBd2=Ph5%eK6v7XU0Qyz5&RZ4& zJA#A_M|HM7_#%4ii`E1B?Z)vryXdMi2#4=bEXUGC3U|dU*KwC+b7t@`FVQnjyg|7V zg2rbY7G)T8Z*OhM(PUv6k@}F+3ewFT76-g3d^tTs>wJlki=V1jZ@)U5d{&g92Q?#fnB5qSE2L&@-kJi78UMa8EUCU^fMM4^UtA1Zt}eH|-c z_{594D2t6)0lI+54rc}_9bA3+Rv@(PZ1M>wRjJi%s_ZqaG7qy*`wH>Jy0)KW=N=38n0q&SSmP$J%$p(3 zq&;gMORfw_kOXF(=&L6#c5oeZa>?Y`y>^k1c`$`4)B|1v8dDViB$F5-EK(P6rP{fZ z(T`jX;<723_RU{SR(q(idLU~jeYs(>hsmuQ3rcSSZ=B8Xqu-%~aDPUX>=>*v@i|7S z!pIjT+Fj8uwQHVcPhQ1lBxmW+Q53{Yj3{m0kNkYPiA@C8hOkC0XDd+PC@Nu3VS4+$ zyB-f^rm#ws*HRUtx3anK`|x}$*c9zB~RvFO@X^u<|KD_6QM_llvRLo-B@O~fbN!BSt&2B3qZG%a2;N1sSQ zxmy9_(4iHZq|Pv3&U&CT^0eTi@)bgnjT3P0RBQqIPu5t&sUyDN_$eL{=^kL;XLCWF z$DXCGKw-QeM+fLcXqx&iB#SLTijmRgt4zS#+t;ifo>c7xs zbbqQ429E50aUbE$Z|GZaB39@E{c_e%1lOU8@N^@vk7(X1Mn=ejQ@lkkp!-b$G12by za_yZ87|?G_6_1p9zl66NzP0+>(Mq;S>TTN*sZfD^GIBzhxfj|a`IzXjR`;928W%U* zir`3u%wm*DlYM|i`R9F6^&fa{ljKL*21bZSnC2;MvNTxKK>l#n{AT#-5h{dB{2+9D z&4F*cGy~jN?OaDBE(PN9Io&9$oPAR90JOw-@ze@y_E1ipY#S7_@ZD)bm~h+|$}A&K zuEX11L+a)e_hxy3P^r1V*}I?9kU7L4A+wx7<>;JO|AIAhD2FL)2e}j0jeU*MRw_pu z*oKA@lrtN$e?;8nniLs@4Tfv8P340A@kFG(A` zzXAUV+BwoL%K${7$%6<~{fyPvV?PoMq#8VY0B>Ida84IgJo`t;r;1Yw1uR!9kJ{At zJxTtBJ8A$-f2T=Cb~A_A9WuNY(A{}|It|MGh1Lq_L*b5Y1f~?)xM8%tO_EPj8demq z1B`x#48KSl(DDsIVzr4p6YCdg1sV3~OIU)WSnIphLGI|cz!pmp1x~hye3}STY=`BZ z%d^h;>{6hvr#5c_p*1w=1?67Fauat{2iOK4bMo=&FPRUP;aQEcRv57P0g_@?Ltj_B z3=dhmpr693m+^f5#ehAO)7_kwU7hc+EJ4(Drs(Tbq~x#8y(At~@pbytPF~qqs?KO0 z4U1HCfLuWsBkSzjw%U4;MmeJv#T{%bIX^Zsw={B_bpS-Ajfl6G-yfIirFDAOPNz@I z!lM2{rUT<>j}G13os8_YB6Mx$a#6s59g)dM1IFfa=~4lUCG_9%zc0Csf6?gOSoF1P THqT|PML+5l;MsII>gs<0|3~h( literal 0 HcmV?d00001 diff --git a/test/fixtures/controller.radar/span-gaps-middle-true.json b/test/fixtures/controller.radar/span-gaps-middle-true.json new file mode 100644 index 00000000000..8cdc2b94a59 --- /dev/null +++ b/test/fixtures/controller.radar/span-gaps-middle-true.json @@ -0,0 +1,28 @@ +{ + "type": "radar", + "data": { + "labels": ["A", "B", "C", "D", "E"], + "datasets": [{ + "label": "Dataset", + "backgroundColor": "#FF6384", + "borderColor": "#FF6384", + "pointBackgroundColor": "#FF6384", + "data": [10, 20, 30, null, 40] + }] + }, + "options": { + "spanGaps": true, + "legend": { + "display": false + }, + "title": { + "display": false + }, + "scale": { + "display": false, + "ticks": { + "beginAtZero": true + } + } + } +} \ No newline at end of file diff --git a/test/fixtures/controller.radar/span-gaps-middle-true.png b/test/fixtures/controller.radar/span-gaps-middle-true.png new file mode 100644 index 0000000000000000000000000000000000000000..3972f069d0e8d2a3fbcbdfcbefc3b87e7d1af562 GIT binary patch literal 3260 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 Vkw`-v&spC6khd?U_Pg*O{sjPE`pf_T literal 0 HcmV?d00001 From 2214af1d0b2db7aca8c31759c60b27d97d1d7eff Mon Sep 17 00:00:00 2001 From: etimberg Date: Fri, 30 Mar 2018 16:17:20 -0400 Subject: [PATCH 07/15] Fix line & filler plugin when looping & first point is skipped --- src/elements/element.line.js | 10 +++++-- src/plugins/plugin.filler.js | 17 ++++++++++- .../controller.radar/span-gaps-start-true.png | Bin 0 -> 3375 bytes .../span-gaps.start-true.json | 28 ++++++++++++++++++ 4 files changed, 52 insertions(+), 3 deletions(-) create mode 100644 test/fixtures/controller.radar/span-gaps-start-true.png create mode 100644 test/fixtures/controller.radar/span-gaps.start-true.json diff --git a/src/elements/element.line.js b/src/elements/element.line.js index 1500d353c96..92c325597ea 100644 --- a/src/elements/element.line.js +++ b/src/elements/element.line.js @@ -34,9 +34,15 @@ module.exports = Element.extend({ var lastDrawnIndex = -1; var index, current, previous, currentVM; - // If we are looping, adding the first point again + // If we are looping, adding the first non-skipped point again if (me._loop && points.length) { - points.push(points[0]); + for (index = 0; index < points.length; ++ index) { + current = points[index]; + if (!current._view.skip) { + points.push(current); + break; + } + } } ctx.save(); diff --git a/src/plugins/plugin.filler.js b/src/plugins/plugin.filler.js index eb8dad4c3b0..2c06a9eb53e 100644 --- a/src/plugins/plugin.filler.js +++ b/src/plugins/plugin.filler.js @@ -220,10 +220,25 @@ function doFill(ctx, points, mapper, view, color, loop) { var len0 = 0; var len1 = 0; var i, ilen, index, p0, p1, d0, d1; + var loopOffset = 0; + + if (loop) { + // Find the first non-skipped point and make + // sure we get back to that because the first + // point could be the one we are skipping + for (i = 0; i < count; ++i) { + p0 = points[i]._view; + if (isDrawable(p0)) { + // Add one to make sure we go over the length + loopOffset = i + 1; + break; + } + } + } ctx.beginPath(); - for (i = 0, ilen = (count + !!loop); i < ilen; ++i) { + for (i = 0, ilen = (count + loopOffset); i < ilen; ++i) { index = i % count; p0 = points[index]._view; p1 = mapper(p0, index, view); diff --git a/test/fixtures/controller.radar/span-gaps-start-true.png b/test/fixtures/controller.radar/span-gaps-start-true.png new file mode 100644 index 0000000000000000000000000000000000000000..dad944fc18971d92b89c9cd246c8ac75fcafe9b4 GIT binary patch literal 3375 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 F{{(5dIfMWJ literal 0 HcmV?d00001 diff --git a/test/fixtures/controller.radar/span-gaps.start-true.json b/test/fixtures/controller.radar/span-gaps.start-true.json new file mode 100644 index 00000000000..8dd592c5785 --- /dev/null +++ b/test/fixtures/controller.radar/span-gaps.start-true.json @@ -0,0 +1,28 @@ +{ + "type": "radar", + "data": { + "labels": ["A", "B", "C", "D", "E"], + "datasets": [{ + "label": "Dataset", + "backgroundColor": "#FF6384", + "borderColor": "#FF6384", + "pointBackgroundColor": "#FF6384", + "data": [null, 20, 30, 50, 40] + }] + }, + "options": { + "spanGaps": true, + "legend": { + "display": false + }, + "title": { + "display": false + }, + "scale": { + "display": false, + "ticks": { + "beginAtZero": true + } + } + } +} \ No newline at end of file From 21fb90f26f80025d1370a78861d0c6f48f5734f7 Mon Sep 17 00:00:00 2001 From: etimberg Date: Tue, 3 Apr 2018 20:31:07 -0400 Subject: [PATCH 08/15] Address code review comments --- src/controllers/controller.radar.js | 5 ++--- src/plugins/plugin.filler.js | 23 +++++++---------------- 2 files changed, 9 insertions(+), 19 deletions(-) diff --git a/src/controllers/controller.radar.js b/src/controllers/controller.radar.js index 55d28e56824..65824fe672c 100644 --- a/src/controllers/controller.radar.js +++ b/src/controllers/controller.radar.js @@ -51,7 +51,7 @@ module.exports = function(Chart) { // Model _model: { // Appearance - spanGaps: dataset.spanGaps ? dataset.spanGaps : me.chart.options.spanGaps, + spanGaps: dataset.spanGaps !== undefined ? dataset.spanGaps : me.chart.options.spanGaps, tension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, lineElementOptions.tension), backgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor), borderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth), @@ -139,8 +139,7 @@ module.exports = function(Chart) { } for (i = 0, ilen = points.length; i < ilen; ++i) { - point = points[i]; - model = point._model; + model = points[i]._model; controlPoints = helpers.splineCurve( helpers.previousItem(points, i, true)._model, model, diff --git a/src/plugins/plugin.filler.js b/src/plugins/plugin.filler.js index 2c06a9eb53e..140e7252214 100644 --- a/src/plugins/plugin.filler.js +++ b/src/plugins/plugin.filler.js @@ -220,31 +220,22 @@ function doFill(ctx, points, mapper, view, color, loop) { var len0 = 0; var len1 = 0; var i, ilen, index, p0, p1, d0, d1; - var loopOffset = 0; - - if (loop) { - // Find the first non-skipped point and make - // sure we get back to that because the first - // point could be the one we are skipping - for (i = 0; i < count; ++i) { - p0 = points[i]._view; - if (isDrawable(p0)) { - // Add one to make sure we go over the length - loopOffset = i + 1; - break; - } - } - } + var loopOffset; ctx.beginPath(); - for (i = 0, ilen = (count + loopOffset); i < ilen; ++i) { + for (i = 0, ilen = count; i < ilen; ++i) { index = i % count; p0 = points[index]._view; p1 = mapper(p0, index, view); d0 = isDrawable(p0); d1 = isDrawable(p1); + if (loop && loopOffset === undefined && d0) { + loopOffset = i + 1; + ilen = count + loopOffset; + } + if (d0 && d1) { len0 = curve0.push(p0); len1 = curve1.push(p1); From 7d04d0abec622d9c589babbba278482e6ecf887d Mon Sep 17 00:00:00 2001 From: etimberg Date: Sun, 20 May 2018 09:34:23 -0400 Subject: [PATCH 09/15] Fix code review comments --- src/controllers/controller.radar.js | 4 ++-- src/elements/element.line.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/controllers/controller.radar.js b/src/controllers/controller.radar.js index 65824fe672c..b99ffa017f2 100644 --- a/src/controllers/controller.radar.js +++ b/src/controllers/controller.radar.js @@ -67,7 +67,7 @@ module.exports = function(Chart) { meta.dataset.pivot(); // Update Points - for (i = 0, ilen = points.length; i < ilen; ++i) { + for (i = 0, ilen = points.length; i < ilen; i++) { me.updateElement(points[i], i, reset); } @@ -75,7 +75,7 @@ module.exports = function(Chart) { me.updateBezierControlPoints(); // Now pivot the point for animation - for (i = 0, ilen = points.length; i < ilen; ++i) { + for (i = 0, ilen = points.length; i < ilen; i++) { points[i].pivot(); } }, diff --git a/src/elements/element.line.js b/src/elements/element.line.js index 92c325597ea..abbe70c2b87 100644 --- a/src/elements/element.line.js +++ b/src/elements/element.line.js @@ -36,7 +36,7 @@ module.exports = Element.extend({ // If we are looping, adding the first non-skipped point again if (me._loop && points.length) { - for (index = 0; index < points.length; ++ index) { + for (index = 0; index < points.length; index++) { current = points[index]; if (!current._view.skip) { points.push(current); From 3e036892740cf6481b70311451812883528f617f Mon Sep 17 00:00:00 2001 From: etimberg Date: Sun, 20 May 2018 09:35:52 -0400 Subject: [PATCH 10/15] Use option helper --- src/controllers/controller.radar.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/controllers/controller.radar.js b/src/controllers/controller.radar.js index b99ffa017f2..dc22f10168c 100644 --- a/src/controllers/controller.radar.js +++ b/src/controllers/controller.radar.js @@ -51,7 +51,7 @@ module.exports = function(Chart) { // Model _model: { // Appearance - spanGaps: dataset.spanGaps !== undefined ? dataset.spanGaps : me.chart.options.spanGaps, + spanGaps: helpers.valueOrDefault(dataset.spanGaps, me.chart.options.spanGaps), tension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, lineElementOptions.tension), backgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor), borderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth), From e869e5c6ce15f06966c022f1c3f21bb65de38dd5 Mon Sep 17 00:00:00 2001 From: Evert Timberg Date: Mon, 25 Jun 2018 18:51:09 -0400 Subject: [PATCH 11/15] Remove unused variable --- src/controllers/controller.radar.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/controllers/controller.radar.js b/src/controllers/controller.radar.js index dc22f10168c..2855644b3d4 100644 --- a/src/controllers/controller.radar.js +++ b/src/controllers/controller.radar.js @@ -125,7 +125,7 @@ module.exports = function(Chart) { var meta = me.getMeta(); var area = me.chart.chartArea; var points = meta.data || []; - var i, ilen, point, model, controlPoints; + var i, ilen, model, controlPoints; // Only consider points that are drawn in case the spanGaps option is used if (meta.dataset._model.spanGaps) { From df4b88083c9586c8defcbee94db601663cbe7d60 Mon Sep 17 00:00:00 2001 From: etimberg Date: Mon, 9 Jul 2018 20:00:42 -0400 Subject: [PATCH 12/15] fix test --- test/specs/element.line.tests.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/specs/element.line.tests.js b/test/specs/element.line.tests.js index f9f351d7db6..89ee8471f3b 100644 --- a/test/specs/element.line.tests.js +++ b/test/specs/element.line.tests.js @@ -1879,6 +1879,9 @@ describe('Chart.elements.Line', function() { }, { name: 'lineTo', args: [19, -5] + }, { + name: 'lineTo', + args: [5, 0] }, { name: 'stroke', args: [], From d066e2a5406e67e1de26bf3a3b30ee20645104f1 Mon Sep 17 00:00:00 2001 From: etimberg Date: Mon, 9 Jul 2018 20:16:16 -0400 Subject: [PATCH 13/15] Update base images --- .../fill-radar-boundary-origin-spline.png | Bin 15638 -> 15472 bytes .../fill-radar-boundary-origin.png | Bin 12866 -> 14317 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/test/fixtures/plugin.filler/fill-radar-boundary-origin-spline.png b/test/fixtures/plugin.filler/fill-radar-boundary-origin-spline.png index 74124a3e7f26734e987839c3c202748eb137620d..b7cfb7e50d7ff7095acd2c7e7b853b18da0dd11b 100644 GIT binary patch literal 15472 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 X7zMU*W#vyMF+fgAS+Y_b6!d=pF^8S3 literal 15638 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 M(#ld*62<}l1Et}jfdBvi diff --git a/test/fixtures/plugin.filler/fill-radar-boundary-origin.png b/test/fixtures/plugin.filler/fill-radar-boundary-origin.png index 2c07f7f0b2c2bd996ed549ee512779905de26883..2a98723e0acfb04f462768bd9e3b9615e32493ae 100644 GIT binary patch literal 14317 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

(v|o#t6EE*5(1T@maB#+Cj%AZsy#{ z;CUB_g+ZZPG$w#N@Yz323dtNESoUx@mC_bZCk@KRx<>W8U2ZLfq+(ld1F-DxE~K-? ztSjtAH~($R}x_F zPcW{P-YF*Lxu2`x8bhd3(LvMAiu-`-AnaY1YI0V$I9u!v?U4}E{w%zAn#4VK$RnE$ z9M$l9Sr8YScPb$XWnLMZ%Z3T8lMfs~_3p)+@Ob)2^4AyCM|PMjN=h3B?JOabkM#hz z5midaQ^PBDLTLH`*!DRDUy$0ULig6jQ$}dtCeK=1eyk2qQ#oOe<+fDsSc^=ytI%X; z>_T)Pc=*|mJ;N{_nJ|olVk+e1&!=Oz9Za4wn=OxdXPGT~V@jVQKG}~~v^BCPmIH=+ zG*YfTz?no!)%|pER9Of@Wj+TLvUO@vZdjdR9`(P?{7mkhb5b&|Hv>i5A9ofd-&_&_ z*CytR*bXpy%!U?K=>3yfFr!&OR2D`3*KAcJBR3JHsuZC$-j~A^hY+?bXq&}HM{|K& zzVQwCaD=gbNPi7vclBC@_?}N}p6{@y{qYDrR?yeat6d-A<*?+pwK|*(z?@tsWSKjF z3vXU$Um5;O7Es8XtIE%a;4{S{nzp*Q z{uquMAV});Y7&N7*>{g~fb$VE??gr01Z@g+43>yi<*%#pBaws#ksNG*2~B{`?zMHm zbVDUEvyW5MuhSbQfSwM1BA|A|RJz3FZu2gt^oa2a{hSr!r_M~@@VmAUy!)yw@B0y8 zqrd{xOS(o93-sYS{nk5XI;q!d_P{^sh_$J&IXySJ(7nqYaMu@~a)8;y3{yIpaQ!{M zOdg_54L7ycLk@_i(1{}cE%vY1H<$pvb@JcwsHVA)zBl6s|AQC`Lv(2W&~Qf`V^IZ+ zzVJD%7Y|7Hnbp7NaYfQu3!oD7eDe0d0=%|=|+Z)*Ts zpr1j$}#mVPAHk0q_cUz-<|U<>t@CgYTWs?gS@Y~*)#BJT?I zpwmv5+a2`N!WKjOn3RHlaAhM+GeePB&(*t{;=rgu2@1u;36+4>_)t!DHadK4;b3|w zfhzfLG+Nj?s6^n!IwoQQ2@zZiWHC89k|O&b6ty3gaN!~+&_1hd zcRN`r$#+Un0x-RJEsR9AI~0vlbA29VE>aBWdHyG literal 12866 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 From 3e055c08708a6a1a943f4fd8c76bd4e68237fe7c Mon Sep 17 00:00:00 2001 From: etimberg Date: Sun, 29 Jul 2018 17:30:29 -0400 Subject: [PATCH 14/15] Revert fix that broke tests & do it a better way --- src/controllers/controller.radar.js | 2 +- src/scales/scale.radialLinear.js | 4 ++-- .../fill-radar-boundary-origin-spline.png | Bin 15472 -> 15638 bytes .../fill-radar-boundary-origin.png | Bin 14317 -> 12866 bytes 4 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/controllers/controller.radar.js b/src/controllers/controller.radar.js index 2855644b3d4..7dbbc6f6437 100644 --- a/src/controllers/controller.radar.js +++ b/src/controllers/controller.radar.js @@ -105,7 +105,7 @@ module.exports = function(Chart) { _model: { x: reset ? scale.xCenter : pointPosition.x, // value not used in dataset scale, but we want a consistent API between scales y: reset ? scale.yCenter : pointPosition.y, - skip: custom.skip || isNaN(pointPosition.x) || isNaN(pointPosition.y), + skip: custom.skip || isNaN(dataset.data[index]), // Appearance tension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, me.chart.options.elements.line.tension), diff --git a/src/scales/scale.radialLinear.js b/src/scales/scale.radialLinear.js index 3f03ee0d260..e36b4e13539 100644 --- a/src/scales/scale.radialLinear.js +++ b/src/scales/scale.radialLinear.js @@ -428,8 +428,8 @@ module.exports = function(Chart) { getDistanceFromCenterForValue: function(value) { var me = this; - if (value === null || isNaN(value)) { - return NaN; + if (value === null) { + return 0; // null always in center } // Take into account half font size + the yPadding of the top value diff --git a/test/fixtures/plugin.filler/fill-radar-boundary-origin-spline.png b/test/fixtures/plugin.filler/fill-radar-boundary-origin-spline.png index b7cfb7e50d7ff7095acd2c7e7b853b18da0dd11b..74124a3e7f26734e987839c3c202748eb137620d 100644 GIT binary patch literal 15638 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 M(#ld*62<}l1Et}jfdBvi literal 15472 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 X7zMU*W#vyMF+fgAS+Y_b6!d=pF^8S3 diff --git a/test/fixtures/plugin.filler/fill-radar-boundary-origin.png b/test/fixtures/plugin.filler/fill-radar-boundary-origin.png index 2a98723e0acfb04f462768bd9e3b9615e32493ae..2c07f7f0b2c2bd996ed549ee512779905de26883 100644 GIT binary patch literal 12866 zcmeHu^;=Y5)bE*L=pJcNTDn0H2N=4$yG0raX&6GfL_$#-M7kse9F*>q?rxCocl_qjjKd7jxT_FA8{*52!^6Q!;yhmS*r0{{TNg1odQ0Dw@BAOH&k^<(Vz?G*sf z0t(U++TN!70Y0(Rn<hsu}uO}1Uv}UA=I$|6M)H{#g#!1$3`50q7k9Q z*^njk^|1mi)Y@TD6k{H6GC*DG-{cXETHA!l0w$0}KoOxSYH2805cmZkgKR?yaIO5i zJ<5t&yY)01OPB&BfIwHwL`3GFGHCyIl_~ZoFpdLqND(yfSoFs#^pt09`~%FiwBjJC>LfvJjcRNW%o2@Cy02)2w#A2f$_EFnhAn zB9X88<_*4{PmtpSIlKLKwvUOtLEPilOAO&Hl_^U(`Q}VcFc`Ta@Mj_}_Y?7NQ>txQ za$`=-a8a3zPb|_3ZPJxY;kgiVe9>>2=)8LqIpyy_WBC)6g}&;ckJUAKD3++_wZJ?y zCn2(HNOYg0GUtZfIG#OHffs00TADn-xS)w9n1{@4-ggtJGeH>vRa_AZ|7~{1H%3jCK;Z;JJTV8y;2m zsMh?j1r*Nw3%Be3ekwcdB3d@qu0V{H6;_I`2#`%>v{z!9KSGEw;QM*SFBVb51g4VD z3xvYZ(gxBx;_vT9?#*E=`T$g`aLHOT8)Ckr>*rmWwZxpl=o$givRM;&CZvYp4D-wr zBvvKL?YTLTZHZcaaJ_YY&6WJzO{`$JUQ0e0in#jm-iMg`kIxbv=FhqAWh)!ri?|vg zDqEvhB}f+j%WCZBo?CHJ0iFz=*bJMx(E;36SAAKlnC1^H4nZ-P5x4WzpaGAx7pC@f}C8l@Fu$_ZyiTA7|>`rjpaeXLMc7zBOcE0zzxA z0{j=rCGtD)z4A1|TWXak<^>HGPNdZw*b+6R`BdCb&Q?it>_*lHOZOvscs@C0IX<2_ zU#~+CrDOYafQ}_e=qu)nUoqXODv6EE-oKE#t?Va!c!r^zK^gqAz050bRrW-3UQ&7> z>20ivqf(8deRGo~Z225^yU#7@*z!lD?yx0b%>Md&O)1v#xz87xnm#I4&{nAefiY>+ zlvSJV&Yb7qL8Q^)bTK6;wX>+;Dilonm!4Kt?w1y>O&k7VL+xGd*xNW#^-$9H zq_pkaOTRYlXAN{Rp$M^b3t`u@3&OxpVkW&8ZktCLy=}ikRko3`^_l*=eozB&cQ5yK zfRYv|DSvK^&(;T|LKPUN@<)HLktVIJ53wSE{w)$sF2qxQm;if$P6GDz_N(F7+xaK+ zWl_=6ZPqoJKsVT1=reUu@kjZx8%9^RQlw$W-=!|I&c1qOjk>l_b?`92gE^@7%Y(mL zpxRu=Xj%}jafVSR)$*snD&R0femuYFBI5dmeXaVEhzkOtqo<~mM9a+(*Px>Ugv*;G ze<)9XD31jdJCOgr^+fCT``V$pI#?YJa4)^vxhbk+BZ=H)uzJr7`nmA|xm^W*%Zs52?shj;C@v$>JiA~xXOw#FDSCYIGDcTMbY9I%Xh^94 zv7(3~iYz0|AF3_=EH4-i`(aAOjz|(hk?MQ-Mp5zb!tx_RQRQ?c?jC1RXZB8RE!lgCznofE?>-B$V z%gAf4-3362F(MP+#O%nX9J;oBN(*0IBJQ0Ak%M=ecg8mjGz)VwXlxi+I(jGgK(Exr&vPud}T1EvGLLK&fR;VNp#Fqr`=z z_B^~~)kR>6U-6l?7Loa}cfU*rMRH< zK(4msz2k3xYFVN~u;_8me{06#c?f_|xiubCBe!iaLN7PxE2O&k?a8c|F1K&2*KScp zUMA#d=>u}rgt7=nEl~|z*p7pO(v8-whd$?hM=DC;=CHKLpFuw~6e(Z=6x*URv-tuq zA~a4CcP6pG`ge@3ytmde9oGGaM!{&7=!z2*Td%=O$XXEXgU1~Txp9Rq-#gh?!#8fn ztVU&t;pZRBTbmu7pHZhXKO7?TgDYORGNnlLj6hroHtT*YKO+umy47_*$ZGtj0|17t0Z{fv#Bc}2|SS9ukRc9GH-yi$O1T7KWv%%F{W?5=ohUCO^G>r6|g2PH36kGaWT2g<2TD_@C?DinSNeN#m zd}C8fgj{sJR2rD}9bc%S}O;>h`3ygt}oOMnm`RMJiz09&={u?ZvLs z|0C%5z?r@4l-;Du_XRujAD;eb&DTE+FuR0rNHRUruOV2ZB$)FoYvRqzu=)p%;;Yg> z9UpF(Zm}l|g8USYXG4sGbgzHtVAI|xRIbIv*7_f{>-{Ua?8{%Rxh^WOgZhJ&Sl@Gp z$68@8Q4iMsSY9ZFcxbxa>`a$LcS|Y+=_Xb2fvn#sHniX_vnK@2%#79LxE7^U_6w#7 zjNXZNs9~0gsC7Y6czMfXE^i_}y?8b@=@3DPxBJ#k{w@3wx?(VZMGZFYF+U6*GAxJj z+0ny%@lsZh0r_%rvZu@X;4SG*Q!>XgsJi&wVBzNt!;Q$1;kQ3E=>V|5tn^pM{5$(G zTeY*)B>E(IQ$Ny*LBltL@k{{0932o{dQJXtyQ13IC$^oE%}iN_lRO!htUbM@Ne{Ro zs3PugQ?de9?-+|YZ%kV5vvG-Dp=zig>Ifv6{V1bLzp{G0R_lP|HQip5gY{X=CvIS>Ow5$Zy-?dNay%2$X5LiH#I|#L2(iwOIc2{OCX#x;|p@rHQ@p zQOsQc0!_%g>P1@>WH@SYOpy&V@4Y8`w)DPDm$d^M{9D;fyb;}8_t<(aO8acELT=7E zI61!hw1NZ+vHt$W{p`;2QLb%@wt_^`kF5rbOU{Hts&%7LiY<9CEjkVEE)h5MP_!j!m<88&>%&iUtMXvf8DINmX_g!FNV_ljq3_VYQAv@D82^Us`dn!W zOM0X?6I23)|5-VdR5dlx>7gK)Hp-`Ezc18kK{dFGJPZ0oJ0Ek>no8BQj z7G)=<=JB0ix#x{tIt0xh0~d`_3jLkyh$eDX;#^7o}Xl$BJV()vrK;Pj9nAFLy`C0iy!3Q{*2b+B<@<0M^zIiP^E&iRr5pPq05KjgWrXsd;M{%`)+sE56&_uqhQfy zb(rBS27YPc%KoBPjK{YkEp)VBmr7@96Ez(n@o-_(ofIbH1+BrZr1KWgPoG=9WozaS;| zFMq`In}=vZT(2IdJ$~k;3U!efTx|ZT1u-dwhkvpybV7>tnfX zCR}2=1>uAft#H^3>DwLof0<;JLqCB;_UFy!Pltp*(kHD<9C%J83jLGpO{!m9sM)}_d}BD-l3&S> z5*XuMHG*4V9nD?D2Cv$_{yQ~Q*L)!Hu3?juf0o~z477#9$uF;`vzV`{oO0BkkmLna z#RkVS00h*$3-5mbFM`~35F0mMlgw$wlCsWFeo?enM2JkXAl5lObzY(94@@bH)&sW4 zZl5ngcaJ*X{C8ApS|0QZGAqX!Zl8E$MB5}N{ZN#LR|ES;xqt$dJdSx-Ak4PsbQb5k z8kayodoaJ?P|hkAsviCY)&kz86@!x_Wp8lXN_bgEQyC=_+iA- z0}LomFUf%y4LnIy$8Sx20|2!7Kt%Dw^c0KheGcWo>&{m^E>?t0F z1n^4#w&3VV`=fcgFvVP+zH85;B{@{?@;aRp*9>^^4?+1);e!-`D2XG-8}k0eDjK{R z49T|1ws03PPu~jnyJPC-as3t*1!Gl8{fpXG*<)CUWn{)6W~(-7_NRq_IDZ(ukIuph%%EwDCU7%+h-XG%y@bP%}RvLI*WKJVVb`VLU+R-jdXNg!W2~ z3x1*lQta$)Iq@RgNxhX)v)NguWC;UG%~23{heWtAshfRweEDui zX-A{42w^V*uC9s!nXVbO)v*B|225NXx14?4GdvPWK(`Wwp8Cj*V>@ad!S8kI0p(8I z@JLhSJMOc+v27P%mV)Pn)fGx~`u2;dU(9_rNL0TZVx6Nu?Y|UrS}@EdYbdbIw9@XN@H9OK^r;M$Nir@D%QIJcL-1#ttY^ zw?y5V%gxZp1~g39;vdqA5y!AgJE6G`)WTzKRKn3f)37H3RFjkBf^u!ucBi_dqmt?` zbq}rqlF=L7#jMCgTe___M=-QhSu`{3w^-@xsK^IWkIV(#FxP+qk|arl0{5Xcwq}>b=VbmVm|6zN*n)M0*i2d_p^VV0X=7d$q*kLtQt;}jJq%3|8@YqZ zIR4MxWD7-ae5ArVOB5XYSm@arPX`qF0gc4~C!R~0YQNyekGE1KIPUdYJCy2@Kmp3{ zk}lY_T3W&)b*AB%yXhg!MDG@9Jkyi$-_rdcGC~`6^Z6((35*{Df4L7UF63Q0mKZ|gir~HV0yCzy zu(9uLR@tOmx!<*xC==-snl+b?Vpos+Qq>RQa^`-7A%qBiaz`OH2?$Pck608Nro*<{ zC6pCSyK2*U)pqaQ@Ic+`;C}E&iSWj|sr{Yz0Ssp~{G4Y6s$jRwV1J0YXG{?E>04}z zL;8?b3h=`EL{MM_Vvh22SEZ9ccx7(o5|L(%n)x^J$(-t9-UKKD53KnK;U>5~-@Mzo z{kT@t=HBG^U3jhyc(iz`c0V76)`*2vBzq9hC-=#f)2O@FPN)!@2xt|6J&tYE)E~&U zvnRlhHr=Jf`sKbAlxW&a66<4l5yh|ov?d(h6l(-%;>s6QllZ;S^FQ=XoF~9wiqR7r zf^&gc!aKy#!lQEgr3idU*2Ub0dmf2`DvTgnJO@hOj6cGEtO!^nSRE-6v0J^8+pwF? zd-t7{VoDN2sH7~(7vbi9)yy&OX6x>#R_)8HT`Zm0$6uKV^jBVP-l#G&(iUQt1*zpa z+7P{zE10pRjqW?*9L#eJ#A_oACg=#u@igslwxw9=FrAt?9$Gg3@%Uii-QYIP&SQ)| zFA}?dm-p>)mh|)-)F1nk zENuArrOcDG%EbMDx6jPsgq^ayT1NP_sdFYlhtacQh}lfug}&@*+8N#+W!9AM(Q3E; zo%a$QxdCtMSe!mH0xv;X8ORl#a@%A(FS#mzfNUi);Dmm4QmwCJ28v*acaqJS5NW+| z1Lsc!T}IDJ_?%5sJ{J!+zP3|?p#}Nx7OPK;eNo?0o8*h1c9M>?#E8Tt%40q1!=rfL zZvn>Vr&;DDjgp*pUh1){*>u_PMsX#WBLl+MPmR>T(muIHt};RiIvhgEdLgx6cZWZO zG!DCqT9d*;zqcy(xv`UO+_A{6rJr1{M)!QBCa5kVSZmM*J~6@Sq-o`O|V+=7Xx z3sS$2+UQ}TZk3n@mEop4Ju+Zx=VtC6u6h-1uE_z}(iIU88$_zb^Dz;QhOk(km(z7D zT;JR6?K`C`@8DDG(5Z<+o1$B3+E3v`3~D!c(ml8^*xar7((GhPg~}JqL1PUrGv6dt zTErJU#F?&+7?gH3zfTudRX0*>J)!Bt8$}CC=#Mw$X(Ros$`OrijiK2pfRUh9_ui+< zjx6rZLT^G^U!%Wyfr4#cEvy@t$jZ(-m5)egzAWg;keL#)f@k9S8*H(&;8CBH+%IJ) zSCT_q=Quj#-y_+G!&Vly{*0t+3(IcU%nYR=rUJ>oeZITfl*d^4i*q@_Ud<5kDm`g= zJoLp??o++KdA2IY9+!gpV9ZX~(~#Vc_r^d_a9)elR6e~Be2;&LFik}(wFhlF{r~hi zK1UT%V<$G2b`m*KmM{0k#?k5DG!2#eePwP_`%9E(ErvVLw_amJPW5M{J_V0M-{+itM@a8F~LX4`|>b|`~zdS zx!uX@+9kE^OfU2O-TUj>#L!xBjv0hE6)i-`8bej}dnl>Nu8m1ZpN=@SWr-X^vr>bt ziqPM}_K$kqmph^$3Xq641p)4-j4LN66;yTc4?{OfP7hR6Kz#FWv|*!m$tZ=w?7VV} zXeUwZ#eA?v82JcACps_sCpae=e_eH6lsAaRg_1@pr>sY&vwQqOP+6JMg_LS#{c$?of*4l6scrBRb1reatD`5QhBtaaW;l3WA^Qyzjk1t z{5L!9O9sD{Jjtt{l{q;np)T;2<1+=M6r!_5Od!7Jhe{23`*}J&Gq;loDa{8i{&zzh zjC5;w5g7}u`nBT}dS5UGK3lfbG7#&n>-&tR^tjOQ{Q9UD8943-9!B$!|BA(KE!N@a zVD#@EJ3H@c^sKC&3`+ZWH4sn2v)aCh<3=`n!!zh^!w@8%Jmi(hwkrBt?yI)R=Vw{y z!3~po;_7ta8(_kfjkxC`+0a-=l(r4OfxlF>$%wrASY4=o0Crrv ze^ptY;JwFO8vcfch`1Ytj5*W0{x68wwe{3x1})AaKGQQ&TfOi%5gT{+;jPh3uijdmdvWf^`Y$wI$r{_EDnE z6xsd(r)b%Y+1wd-+GwJ_LNuj`miGoi6*FSy(Y`26yG2xgy7aCoKW$I_cg{V#jZcp) zSXmxV1kl=aLaU;2l=b-3-&SocJjyaq4lzrNNmw*zaJ4lKWqg*6yp7<>B&KIrcTbU8 zSDK#njt24RtG6(ldrF!CPuS?O@J+*1=Vz1t1zQ}dskjsNo^GCnF4(OfeV4~@GkoO| zpo{Cz1vu84@C!ZY7%*+AKD-Os2^g}UOXH0HyFO=oSKSEY7b$M)Wn6{Q%^JaGgiRe zF3W;z0sx5b{>=hlg`*cL@1Ny5B-M;3fLDW&RotchwfT+Y{Yw>NNHb_s4fNoQmtU z-9D-F3YIijgMH7o#z$MMAD?9cqw}L_NO7YU3A?nceXML;6BWFVPYS+fGo5C9k{t+V zfpM0@TKgwc@i^ek{ySX9^O?(2!xiqRj%NdCR^DgOQ}E(jyvHQt>n33$ zmLqHMfV&bt`JBvAR4&wg@I9tti*P{pSubADgzh0W9B=DV@=%bxM*IgcFcvk)Y*5Km zU;ezg_DpK8^pliuSp>UUf{I|o&bx%6b~NHc4-=LQJd7(3B$Kl;Rc@F5?#)r>d{p{E z^foeA$WHnpUkyJKAl~v`R1HTay=2k+9E>Js`OxzOk#rSR65eupWY9c%`>eHUpWv-n za(anAZV!TVp_5-|)$fL3%I9XGFp7nbPHY{QS+7@eTYH${$TaQOmbA()twl%8{p&L) zsBZtx{qy{VM{wOLH%jl;*9*8R!ioabr2pRaq>COoPCjM~y*5&$e{suZYQhOS=5lQy zpMAXe%RTkugUTLdbCk)+QK7N-!Q{;{RA`U1{^Of>kJxQ2#3-?#lHC+mJRaD}&tRs{ z%>?0lXx9ZyV;k7rbD+%BQa;DwK;C>KBVtr@ZSJAI{gFUcophu--bXruxnG8#Vvubl z>SvReeRuRQnU?nNk@BY|uz-uUTh*4y@R@0x#wYrng)KSS^zvflx7*tA!+JEeBo#fp zFxy`rKqf0R-+jP5Adk~-3k|lQdeVOvFA7}UG>W&Pq%3eEgUT`9c8s84v$eVAL(mOB z{OsXZ)_1kM!9;+X$pO05drM~P%te3eH}t!%m50Dzg^h#tzOg-)JxTGpZ>-1MK!oxX zJH$CkEkJ2uz3CTK|M-@lxGGe#&!Sl}9fp~GP5250GwW$(srB{RNtz#LPcsd(LMXpUT)xQfw$;%_`fz>QDd36dU?EZuXdbAp5Lip z^VeSc0OF}0pai7+fWA1J7Or+Ori+U~Z~W=vNPCEy%`I)l{v+N}6(N43rAlm6jy4~W zDpN@N$E^XZVx`g#4qcv%rTXi&R!*6~DfkInF`mOn`tw9*Zp+n4^fV=RUw%$ws@0|8Sa*MbC!X}<#R<4le!zNwOb zeH#eMya>}|FX@!7t-=iUF)RJb%~vummObzYsRp)nDK<$XT}QdfWJ_ca!CSkL3DEV1 z()2d{#nCvzM3UVHQl1RC=C5eMUKv76@of5jw$=RgnkNj>iKq*7KjC;CB}zLP&m0m% zdiQrSzSajUukx-?oLzcR*UkYKOp5^r7%{V1#X-OPskU>nmTgab@x8HWF$2$ryVN`H z@$b(9Tdq@gn9*eYY1Gd9a}32+xT@DAx_hXoAPoX{EUty2v+ob24j7Pb> zTNyPyMGy}EK?EFY(D1oEg6cg*P?GJ@Vya%uxw@czo70Mhb&ukRzz6{TZ@mg4UcL z)h`g5TU$~>8H4fxdXz|f;t5;yCO5*bwc}uD`1@>d0YiWNZOpuA%2a@q&OSoYRbxz- z?;IXR@#Un;-j|^!bM5zkMltpZ9{X*-VJl-`LZAtdJh1k?PXq)f{si439mKQw2&LCExU#(7| z2L;Ka4~nRl`Zjv$a_}&DJYT8JH<_2nlptJ(Cp>CDyb$(e-rawLux;%ttSZXS@Ow%g zn7#MTAv?HzV-ICPbGR;sp2+yY%I&cyjTXW>LJ@rto$pz+-ek|~A+(x&LQV~0n@s=P z#OKOR-*U^V_7ElK^?{<-Rv))8;Y@@uY3qO~>Px}aGKbT7;q*eW&Zu7}Gfy7AV{_*D z&YIx;*3;;s)J4K)A*~BSdHp=S7a-dRk~1fboFrz1s>gv%8(Xx-&meY}x0HRM;$1`d zYA*_8H(k((g({c1eg}2_T+9moQ5nO3!JHH>bcS)i^sJ(DC(DIcXDkqQ7R=OJQPO7c z-f=Xmy;hWg!v4cF!-{~bY+qq$uH8pE?Z1%Wcja=FJZ{THYa4&Y>B%sIqRhz7cN`LR z?`eo|&>oL|dU$gGdW?n2leZxtdeuvIB)8AxT8H9(sq6_>yGmTE0M>oPkM((2lULl* z0l^FLAn?{@d-4lP0eOW-h%X>@1Z^ZySHIgjX>MLUf{)wPF@T0~sd!M!ZHYM{~-E%o7 z;}>WkGJa}ba$EG%xqD4#>4nnN`|su&qyM6FW-qu<^oJ{|qlqcL7i`;1Q4Zt8>8{(x zXx2hnHC|snzWtoR3lZ#k;UE0lD}weywB*hC6Y~0OHwiDjg3jsJ4qxw!e!lvmEPiyF zT^Ag)Se*Y~Um{iz9M%9>Y>_te=_sQ@W~Ujl7H50O>|fGIvmcF@vAfCh?s|H0`OT`N zuGd^SvUT_CyfFu472iov{ETMD4r8mKe79M7uN1}38}L4QRIxJQ$y%x`tzMWTjPw*4 zitA(-CJLk})LCEqaj|o_vDhZ${A@`t<%{%0(i}L{<$g7=l2VGEOlLqQ&Q(I~t`?0~ zVW}u#0?&zQI_Vj}4l3$0<^rj$@7SUTP6lA8=cgl-r4OSTXmljKek}sd8Wcj zr^_>V4Lbwzyg@X8thA6cT;#9{de3ZoDN?)mc*=8=B?a=t6NPK>qr%w@jiQFNX@O#L zG2}K#3+eEb^>@?|hsF@xtp#2DZ2!#`jc*XIP3W)$37spk_ZN^`_+)En;jW8iLT+v$ zW8Z*FY~Y#MPkMIL`Sf(Wele#IlD#FI&V6dMl#g}k7B?5e*(P+PB4aaDVKubmq&d;m zzc|88RcY7lD`OxadbS_1#R~f9!=oMRNi5t3_{;|={tDUDsPe$Jz1GGnNq9XGLat`Q z=tEh0taUf;HHhMG9>>{aL3Rjq>C?K{EVG66!j9{ubY)D|1DrV82l})Wj=V zcLFOq^ZImH3p~8vy)!#9i)3)7bumFIjQc#01tpyb`bkNs1r&ZQ6$%RJaCg~bSA1Q$ zrj_;d+8-z18E#`VOHy;Xz2rm=B#PW&J9a|sYNtd6RF3fE8s^}p+NG8b-dV`pocr7?zk~aV6 zaa(W+;eqY9L%2)~zFL6qmQHp(n<6%x(-NciC)%Ec&MTpf;Eo!k-p{N*Op-ttR`o+a z69h_iTNX5fnU<{t{qV(A{B*o9qBW6I0Xv)M)Wg|t+f>)QqxBRI4n7j!1sFB`$b*Sg z{l`N#uytJcqH`G4?zj`?B)|JNkNLPm5A&Hg=_<+#m>o4$IA4q8$v3!C|duJB( zJd&vO>e~4d`XY}i#k`75i%c!s(;Bqzb-48Yhu#|!yAG$KY8XRM=CQ(YOf<$eqZY6yr)L-sKHE0 z`vCH(J+L+B7G?H>9WtLofC^heg=x7qqSfX$Q&g&5;8%l6)^(?|x+2iIQc`?zf%t<* zYw#ulw4w$wBe~zHu(x*z(;@mbU0+W}G7#|Y#bge1UPEH8T0mKo#$r4a;oFbraLhHl z2mZTI!d!8WcVvT^?dRjRACp8I79dnynYVdC8F%vJdT;5psKNxF%19GDjP-?hU;#oE z0AEmqgLzKz%58Pp(+=K&T)u(ergtsK zb!I>*g1YZP@BG_AoTYn(-*J-%i{kf>s^v~e75@-z4APe74*7G^&&M5Sm75>-`58^GeOR~ zVnq9i^sY3h(Q~pHoChpOU+}86A~^92n%K?i#6!M#G=dj3sLq3-r_$0&a0x~#j0zJN zUy+$R+qff1PJqHR?Tk8f!^{+oNpWj%KR)lmt*5%0lt$tfBs zn))|F|3{PKL`3}rwsofGP}I>{lLIj~n;%WlfLNm@<7sh;Nwcx0$WiOgCpb+gW#D9} s$7&)C)RcVy>i_@0^#2_T1V0dt2;V);5z#S5eH#KO$f!z}OPYuL54%Fp2LJ#7 literal 14317 zcmeHu)nA-XtoH(oEMBw}x8hLTwMcO&?(XhVWPt+39a@}H+`ahX?(XjH4)6B&dCz}v zF3;8TTx2HSWRgrKGYL~tkU~TLfD8Zt(4@bJe+2+wpuaExBn0S3*SXLf03ZWMi;Jpy z>Yw;}MH0>ZTB~R(K0C zbo3T{EOz?d?tb}Cj2$9ywtM;cQ}#5#(EcrmZ!KR_iC`+T7rH=m4^m=|JXoa#QBoTiXB<1*H< z9hH=3Uy#A={8)4p;c5UH@atD4Zdhu7TO^}RN6;N$A7LB>X3sSlplM_lc5C#teo{r5 z|Hc40SM|KOUn3^H{X)_cDRe@W5Z|e7qXb*oaZD902xtXpkGLMM`0Sf+oyTn`Ofc9Z zA)+$_vHM<6=QBju$d&+DvTBZObkG5=#bqbQ-|qD(LCZ!Ej$cK+*U46I>r+93zZ^p_ zyEi0uvHy}V<^!PS|-u4wyj?29Qz+VY!!a- zWZaLGXbA+Pt?p+PA_tAj>`v<$a5dhhv(7s3gHbg+{K^a_e}IOS)L!TERK_vzOO}=U zft&qRt4Y`ziyu7{>UU#quCHa0z_l6xvw9(cn)j%-^IP@HR=>(-G+_iaIA6)CX8L@>r3kT&)KXLGkMEC=g>6_>dN@-zg3m_ICZDJ4I*0;+Pz{P;oumi zV>Ta2hDcYzeyD7Q1Q|?@kKW4D!l)WjkO+Wg$wm38JVSvOnwMz@nHOm3MEe6Art}}v zZh#^PWKOp3rA0Ss}p7Bolysdq4DZo1x@3-@hy4b5k3`e8^QMj6tp{3D6>m9Pz_lqxQ zi2zs4ABc*hC*REanbdi1FN@<$S_x_F#U<}z>SgT*#xXa311l#V;@1e%KI*`RG?IRl zGl2)Z+Z;LDdQ$Tb4a5Q?z(W07T>YyZr=_L6WkOg6c1HVc603z(VG<%?K69O~6F?E> zLvc*6Y5GcyJC~Cxn~~hmNa5Kj{$v>>vNet5EjE+55b0k#$t(jrOzLD&*B1UE!Vw2O ztLP`h@&Jat$G%dI?(O;k$a+Fht5|=!iD0VU6xznY_q8mFH}|ilV4&3_ zZi}-T%dNZRKePm1KIg>sotPJof4{9S1dIlc!pky)tcVkofw5~?j0kWjH8&fy4-G2D z@TUF9D7P=xk*Ka5FzFq?)Deb-%2;H1PoR>ns{}D&^V2NiG(7Zqd%JPO15O=4%bC}j zDxTrCpmZz-GO?ByUmt%}me;hE)d}D^mOjPa3;zgPCo~{F>h#&WS<8rr9KM6L+HrA}aQ zlc6g!kv7?zyGSWyPvE|IFnik)mM3b8pVyIUb1ZhvdGtjkWvQTEzRq^GDswg9r!>Gz zkBvmpx`kChz8=U)!tkjph;-T}Xv7w(mi3N=7vX^(gNw6XO77GU3^WfJeG`WxwbGyA z00tzocIuzjw&^n7g1@w*aLGm?R&xI5*w25gCyV)00gn^@eRNP6huL(=$1%O2&ntA-K@4fqV>AubB>uO29pF27D zIhpJO@<`Y~^v0IIhtE8v*C`D}8P|A8&wrzEeE>w0d{wJ&k54)&iz#v=V+CsXluHX? zfXgizuhy{lQ%+AE?f#y$v8bvp#BH(y_d5~F?k~K_0R8R=I}*=ZYtCUE|I1l@{=RD) z;=V_BcPc1H!&PDezWc`njn5NGGr-x>E{|wL|2*9#&5LxXV2Fyv4~%m?Do)0Ou3{S3SRIt+beZOc3rqJ++~U?Pd@}Q(ny!?k+A-40aZJb0m++MXG=en zk^wF`JuEbNV@-n%tm?`2UiU*9RPV9#Kh-wIiuLLS3k^|Vx1OUk6@C^&xDMvjx)&a2}$N*eea>Od-Sv8lwWpU-L8kH{Cs_{ zc9_3pktZI|7VPkFr2JNi7d!Tn=EBd8mS=Ozw7f8tsu%vfuAjXQjbVqUI^*0_eDpI> z9NlGB|3iXtmD*=kSjPdS76NtDcweu0J@-!dFiQIlrY36hsrD8t4vD@C#~IUAa(9hv z@v+TgYLz{(!bUU|fJDGci*!10X6$Wf45Ne>P{1NMT|jHE9?>#lmCMLaJ^+H>)8F}i zP4oT5#6;(LTUH_Y*vbCEMnV7DakvSpu%G>o(jMn#I-v{Yr1(w<%*Gd8?GOXgA%Yr$ zF{m*55R`W;Er>IKD0eAeQs0wY!MsIK5rV_@?rXddY@Hw1(U}`)eg8b&+11ZnATYQX zr7i;!M@Z+&m_kvKoCUPHhi;#J%#VEW0MGLifK1zbw+J_B(}L&Gh7NUCa7yn}>Q|Qx zH3F*Im+0>5Oi$k~xlgMk_{RK>+#f_st$&b3j}}=GWmXRj{gJ>RsJ>^@_cM^yVfd$K z{Z3gy`@d=l-+UgQ3o>e!EM)W1vRd8$NR1-6?cmmSR$BWy^2YH$(&he1t8NRf7yo-F zW15QFs0)|;m7i5$?K|}nqe?`S1ek?0FoAoz*SewIB97P-w_=eZx+4w<30gzQ*03{f zc?vx{rBz#@p=nz9)e-tQy*+<%R#s)|IM!pxhK;qH(41R#ipt=Q&Nb5He0=%Ngwl9G z?|m58d^*zUdN(eCTRbrRhsSF;pj;H zp0_#rL-@~M|7n-1(PE(HMbl>Zs)N)=soL4``ZfTaT)E`xQtW|Jb%FXXYKjh5wWL8G0$fLY6*hzYxf96|E zo1BgVj>o(rYF6IlVG{GPsrtWk-^33+(P6#NG;qJQJber%RW6hS9J|_>$tWvZcYziwm$Ax^tJ9&y{wIa z{RB;w3F7W-?231RA*-McEB;#WhNUBR7+G}kf)x>A1K!Z!w*+#QmdF$qb><=;kODPe zCPKu)XDjN3*P)zNdKjH(jb4_-xgguxPm~VVR!0uL2{DbENOZ-^unF#1JG8)IAmjA! zyNPW>o33Ll@<2d!^0#g3zunFE&T6WgTEbe!KYXuEo_Sie68fEh=V(4%D`BI3vM}Z9 z@L%L+ymlQ()CDD%8FTTD8ra#VW(Dx%aGWpYPg5NRzxSZwMjz1}8J9GmSesb)$=T9K z;+1|3R3>UombjrtPa=zI3)J8`v98%dg6`P2uNXg=mS{MEM^ z-vY5f3vZ8FN6B2GTvs%%5l=Szm7yo*VP^Zj40z#d1GU+pD6pY1P*Gj29P)h6HAS$` z^Dh%+@fe`U$}0xY#V>IRo@0hlm8NEK(|BsLPbBwNjT?7O_pNp1|#&E>wUd5 zH0`Bci@=$_auHSM`-Hy~HUZC4-Q}$&XFK_-qY^2awY702Z`{k z>Vi`oz%hVw$=h8zOzw5Z5hUSQ6p`$YFwKnvQ+Y=)yk;&-X=swJR(tRE{_Z_zb)_pajFIs}BX})a4ocEuC1Uxre7#`s@N?>apEj)DG zi+D{NK&o=2iVEA>H52McaRKN{t* z(wf0VQRei7{OTNfd!~wP`19gX;Y7 zMS!hmkg)Zw1d-xi-2NHjlXkdH?}&^SFaIN(kUe6FwR&ID%xaRx>E0YGgYcBCFnRz1 z4Tz-S4<^;re&}~%07J7N(+LEnm z2w42h^Mr~+>c0{&JZ^R*=z=A%J(G)JIlkQl=xZV2xW#Mbw9g8i`oG`?PgFmT4Q0%8 zk`9DOWF`C2yCLHp1!0P^*$K9cf=Tm=Km^1VmFpkqZw8GI@p= z6eGt{c{Vnd^wlpqP2x<3={|xY!n~cE6^AZ`Sxnj(NVE^XSdTgqW#05rcHQ9e!bcb# zhA`e4`xr6w8WYvdiM{W|hNBQm&ZFgaR`?Rz3oU+dMB>(5ThcGyi8!T$@w7e@S zq*?Upk3;k>RwsL_d87);y57le;@;IlM;Qx^*$jhKZiPld@5`3yG}Dp#!wsE{5G6T@ zFC-@T@p}ApcGl*sc>&3Ma2b*SRE*am<6c_mq~1?Tp|MD65|i8`i5`4^UUg zR%pyqH*KFX$g@lG!AAsa29VkHbc-3hqbQu5G%5*g?ha}<-2X#MF{}(cxAWoG3~k!# z0W+z?(-PaE_ey${>|)k-8e01@8axg#GiN#PH;y)IpB~rugovvgSbqt=KL6Ng`!ti! zi(d*#AQK-C9oScov^y7-GZ|AN^3A{hIBjd#y@vh8=aTZd|9VSK>KyxlUXoV?-xax$G| zNBrSyol;~aA7dL6=lT-MZNofCuEU4tJW|O<{GK`Q1|uOJjn|3g?#zcT^$I#7N;#~b ze#@Q`*rw7Y`g9kvmJCSe8g)iAmGD>9=FbK!y0||yqw>D8=?gjJ3q?~v(}S8I7?n@S z?V7mRjfA1id9E4x{XEb-`y;>qLBZsXe_PhWsi$X=pw>j0lt(x=Uj^rAQVp6iVMTJg z#l{e-$=XlEg<(8Kxf2mF6`}yV1@n64Y}5Cj*g;hJBkn-HaDc+rwLZFT#}IRHF+ffB zpkl_T-P9Pb_&nF6^CKZ!+b`lf1#J2Uf*je#mo-_e>bG*#vrC~x4BnN{o+2jA%4z8$ zWq;{Fj-i0G-3}c|)&DTN{D7&+iFbe+Nzp^}_~bm-&63jxCR_EI=e(>IA4-ZVQ+4O4 z*mxs^XBjgJHW44`ckKI_TH;5kTM)n>9P&VYM*CYKm5+ChzuwxmZ0Pq8rM=Gjzc5_9R*-JacPyw+l(3K$lF30+u{F!|EBqoZ z(~q@u-?2^Rl|L0T1ITAWgNyXLnJ8fisyhRtK$!W0=fjulZhKlBSS(WSAOz`N-(hNu zgbkpp%9;4u1hqgj_4ke2%-m#!>p<$65OtYYLf(KG(>ObbJW*p5R)@6cj{%`!`5Q6< zjRcL;HC$Q{XtI{j{<5w?LW`3PPwE{s^HQudT)2^BRE4K)#<^gDo{-eaJIcIHBV>go zncuFe@pKY8f>-Y^GhiwGv`f$kCg!XOu;*DbMKo`CKK-zDM*NMP@#O(#^5VxQ?*Y zO&87DT?(N2qa^25EEHhapC5;-dD1yXZ|Lv2)Tw# z=u2EK@ICas$O?aCe7oXV;pJNaNeX_B%>-$d0vkyPycY-0ks6#tT&l+ff07(d?cvY6 zT4a(4s5iKwLQ4eFY%%d5L3?6ow)6~f3|+@>k=^o@FKQe`qe0k#wYzpHVR>0LcqL3M zbs4$zy3=*xay_#TFluKjK~tN2vm+vk-iWs-MLcIe+TvX0gbGu*13L`& z^K*3L#e7u%d_YzGL*pq|b3Ejq7Mh0S?1wCv5+v8U)6SxUQx>Oip`kiGomcXJ_=j8y zy{P`_ALi?Hbzy)P7m)lGD0zw#Z=zwL->AtO0+2C-r3YqqOP6;PAn26C`+kd$I0=?D zPm1sk9xH3SuAwMlK9sFT<$O;f5^p6V96%lBX}V#j|=*HPI3Mv=+$ zJpra_VY@RlADi%XOQYssRyc433Po>3!2F>pjUJxjFPB;34+PXs!>PhuCKwhz?Iw4( z*;3&x%28&~WeP*|-rqTEm^ZSFn_A5yyDzilI=lqNgY~pI9{LrdzEr~+B zv@*!6^RR&^*hnoH>C-;W*=FhPwp&R5ilV+mf0>d#tWzv5h6a_d-baW1P$FGRd%#T zva|V9=wlD+&!nfja-;R4KtF(s$UIR|G#S{~127nn9t#1Aorsw%H`Kb-Y9X63Hq-qj zKlU&KlyMX81+xBQkKPGB-Y7#?kbd1_2$tjJoc6Z5OIj)owDRyECTv_Ar=9?a z%Q#F$qi!xpHLWOQNGn%w4flO18|<)cweVc>VsiaCWnOA z2vJz-QZX@AyFYome27gUF=V6I_C%KxV^%WbiB{T7@jOkwZG=PtXo?#lKMs{_GXF*4 zpYS^B;Wld5>K||@U@mC}(#%wJ3O=ZmUEL%R5!?U0u9V52oXx8Ae5-|54Lx{rP*hct7Z}ZcLQUt3e-@=7qA&TcSh{#teqX zP5Il?q0Iphmevz~-ckjZ5@s^yy<9W4PG4HJysX;}X2+wfu-6KIIrqr@=8oAawZSl| zvxiIniX#6Az@GFk9{x`>DL->WAa1o(mGx(29O;mF%s8Dv(FwPPS55(cUbw7Y)urt( z=LdI@nGEjn8dK0>2o3fFc?p0;0(M9oQ^tF9sV^WUj-^5 z1V0TIJBbtLlZonl(7Hs+{BD3nMUqlU9ALtXH^gwsvIa*rhJ4-;y6JpMO5Pb2OHIzk ziE3l0W%?vYW|@(LBdJW45)T@F`bcO$6Sb4!l{9~a=N^5)4~ngT9aGSlEXc?zvx22f zLRgl|wIqj`6b>WTTx27O^A+o8feU8-7j6w~Qt2Ab5wuHomp1r8lz$(w(PATJx|?7Mc7XW>C+oLs-LIz{VS|s_od$880Q~H zz`6_|%$2Vz>>H+It_jC@bDow#B3(NcGnUdgJBc8rIb%vZVO*97pQJ8+f}rZ5RsBh6OwMGpfME0kh_^w>-I zBL7(j&bio7<}w;N`Hjl$3zqRhimqhLsJpZu-8OC`f`a=2y8lO6pSY1cGj(a{($XiJ zQ|Z4`didJC40IypXHLgCs$(2>@LsS$#Q^^nS^w9Mw@|tq>!W^4K&)-oXDZ)b|OKkoySMasm=MNL#+}pHAzv}Su zG=JOh>mid27@~A?vma1v@YYcp{-uHL9-L|Q0eOrgdL}9OA44ai`$_p+*M@}jRB8ap za}c1@9aaYgREep#U8=PcPv|v~nfI8#;W(T!iU0h$V$Qv8+?;D?djtcpQ z4(TiM-l)Jl#97{RNNMx(lJZ#4vkcEz^a9#(i%`!Ok$~=FNKzT2Gwupi%UzF!vDTLe z>x+vWLk@SxHo>KzbrK`u9^pgodX@wxE_e3NRu2clAkE}QI>+iw9w5`B)p(46xQL3Sr5YKxnr1Wd#INhhS2oF?_ z1Lw#?VNkz5VjG*)_cr%<Rqmm0WK&0m7xb+9~QU_Rg7CGO+p!bDw3{ zX$ek>s>v+3mt$M=S6)e>HBWAiB@V1`tE8egDv?Y;W^0a`UtMj9G%T$;!g93aK!OP7 zRR=Tb+FiNLgjxW_kA5cP*sUazGOGiYHA#26;gvp`h9s97Wkunp#Y0zQC?K-Cj|v%c zc`CRZUo=L z&D`FaB>1i;h8yF_O{oP;a?NunbDuG!3VwN$24F!36y>M9uz_YqhP`${1n@%qQq zdu)#>H)1AcfWa&^6~Dq@Dg`*@{44YwMut1E39KNiWh!ORQ!*4xvkFVn5}ZNou+C6F{ziX` zX3&!v{8iJNKeV%>>x>j#R?A-m2ljM%cMXH~Pld-o!r^O+SI|{?O9FUVe*IUxT1biM zD^rP<%D=t%?#=E3o{0;DL#vE1jD+DA6?AB~UJ2lMp?0yQt&|@t1#%h;QqH>((94mZYr1W<9QjnlAdrC^rFa1 zQ-9ldMZe7wHm@t%e{nhe>Rj$kepG^86OjEA&C{&Wa8qSy6&qe=sIIr@ywo4<6}o$V zIiIP?(#&rdAfEYmG}2=;jfWdoFd3v%%2#i@r#{tUzrgt)bczX&2#dB z;jU8mR!m4;bA4rQj4^43bQ5CHf!(&*3OLWD)t~}I`1HVkb6W>{tijz^UtwAI&IX3K zdu!2uIQ6(#@fLo@P^Ier8ydD{YYdB>E8L;T;VbPAI^F@-gIqn|Sp3!|wGkeSSaO&j z@>hqszg2J=pJktVg0p|#%%DJP@Wl626BaY>0VCDMcMr)EEhY?1q zPr8V=4uRgsY?m~4dH!&frZOw;MfmjTRpnXLa?bn1<@_!dgDR6W31U!SWQ_O!Q$2J)oS;~1?d#v^RVUAtlhImom@C=TK zrS3v14cYs+zMpJmZ8>`7RlY3<6Ma95xChJJT+7DuQ~gQF2!oNnZceN_n4nKm%*2pK zz|(f%8cy-RB9n(3)8iD28A(=V|L5c+#>hBz9N2~g&bomd@xp^8e=6?4c9Sv$S20et z8WsdPifXxLwY4#E?MZ2vEzXbJZb15{mQwFUXhE;wYm=J zsB)pkkMs!GRMPUn7D8M@BU^-ksO8fI9 z4W{WE^4n>4=H8H98eDEm1Wkp+yNQh4H@_?leao)d=H%sevZY|hkHj2Qw_sJm#}>0| z-RHYen~L}8q&NI$vw@VA>PX=2BH^#6ve`Sl&WVVI(eV7kLEHk|%Pax<=<~^QI~C`B z&De!giKHSCuRV*)J+lKSo=O^gWoXsjXCaQqowqXAw08?KCKzApa*D1D__)cB$B(9; zhWpWCE4 z56W0J-=5!y+GSOU5&HhNJZ=7%q(Z+byEQUlGKr^iV~Ce#fiTy(Z$@~f$_a{?p$DO{RIjkW-^-RNZtiPJ*-=UdV&{z7}^DtNrr~EH9f`{ zU(@-0YjVtpG;YzhBoCf24E78E1gMbyDyvzzEXn-mCN0llG6936JFJHJ_wqk3z0oW$ z;GQ&Mw){5?9MYr`Hdb$_o_}$l>-6^4kiNI=EVpS*TI?v^yQ)HT6Z^QHB5@WKGRqpf z2umvD4yR%#;eu2;bv6f)){~Gf{g5^5SDXoG3q9j}T<0%!gB&fr5d+tCZv1wFDx5mJgvGA^I&2yHzwiFTtr&QufctwHbjd< zGm3c2I#>IQk}mh#W|!M@KE1^q0TK8Mp+0q8{8Mm4Rx3z)gqI!-W-O{OtmbMBs+j+I zfU=#W<8?*%Cj|Ne)xPAoyd8MRYuKe1@)rK)`U!C~wpNEipmXd(MwV8I>E|Aii-C3Bi)#UudIHhZvGZU zdT%gD!2xIo!*6))Yy8pZpF0DEJ3n*xP1xx(1(;;j=X!L{KD_53P}`(JJtpWn(X-xr zCRpDNO*LJtRaV0Wr@|?PFfu58Eae+4>F#v^h+;VUv_`J2$K@+JwHWU$@+|HNb(-wz z8y*lMZv~7EEkvuqW>k$yQbycw&;R5ig*eZtogkIE!;%^Fem=4QqiPM4bMJX@{sl?dKSUn^eeiJd*b79mj@gCD}wl5qKqTApQ2086*;@Z#o||PW9p(Jh6^u@&>a5~^iY`%U^$)bv;7IMYys3+t`HI6U}---5_IdihL0S_YWuqmr? zv*tQgeixGbR3TpZ)cb-gh5Lo=ZX&$xu|&Fey}~^X zpYpe8VctUUgjt0w51T8>Qt61%8rxA9h!7D-a5X~%s!IUyBFGH`+S3-(2~@l)nm(%T ztSE!>Fg;N`C*g4-U*2qo<>WR0GxrWi~j6cE*_YAt@F4zdo3oxRoP*R_Nq@DaZc|#2Wxu{ClY$H#ejLtAp z5hPVBkjyxSd5f6B+BH8rmX=?EO9V`si8GQ@8d+`EiGaaWyxCnT5WvC4`rF{ z9i*|>7KDDODBh{Uk>3Ob9`spKEzlaf|48q|8~8p>;&;W8z*(p2&2o6-^H9N28>I5q zdWTe&*~1dMxmcFVcI{2*jZcMd5H&4F5_6AKIB8y&C>nS(ndbwu;i)4Q)8Udor`@

(v|o#t6EE*5(1T@maB#+Cj%AZsy#{ z;CUB_g+ZZPG$w#N@Yz323dtNESoUx@mC_bZCk@KRx<>W8U2ZLfq+(ld1F-DxE~K-? ztSjtAH~($R}x_F zPcW{P-YF*Lxu2`x8bhd3(LvMAiu-`-AnaY1YI0V$I9u!v?U4}E{w%zAn#4VK$RnE$ z9M$l9Sr8YScPb$XWnLMZ%Z3T8lMfs~_3p)+@Ob)2^4AyCM|PMjN=h3B?JOabkM#hz z5midaQ^PBDLTLH`*!DRDUy$0ULig6jQ$}dtCeK=1eyk2qQ#oOe<+fDsSc^=ytI%X; z>_T)Pc=*|mJ;N{_nJ|olVk+e1&!=Oz9Za4wn=OxdXPGT~V@jVQKG}~~v^BCPmIH=+ zG*YfTz?no!)%|pER9Of@Wj+TLvUO@vZdjdR9`(P?{7mkhb5b&|Hv>i5A9ofd-&_&_ z*CytR*bXpy%!U?K=>3yfFr!&OR2D`3*KAcJBR3JHsuZC$-j~A^hY+?bXq&}HM{|K& zzVQwCaD=gbNPi7vclBC@_?}N}p6{@y{qYDrR?yeat6d-A<*?+pwK|*(z?@tsWSKjF z3vXU$Um5;O7Es8XtIE%a;4{S{nzp*Q z{uquMAV});Y7&N7*>{g~fb$VE??gr01Z@g+43>yi<*%#pBaws#ksNG*2~B{`?zMHm zbVDUEvyW5MuhSbQfSwM1BA|A|RJz3FZu2gt^oa2a{hSr!r_M~@@VmAUy!)yw@B0y8 zqrd{xOS(o93-sYS{nk5XI;q!d_P{^sh_$J&IXySJ(7nqYaMu@~a)8;y3{yIpaQ!{M zOdg_54L7ycLk@_i(1{}cE%vY1H<$pvb@JcwsHVA)zBl6s|AQC`Lv(2W&~Qf`V^IZ+ zzVJD%7Y|7Hnbp7NaYfQu3!oD7eDe0d0=%|=|+Z)*Ts zpr1j$}#mVPAHk0q_cUz-<|U<>t@CgYTWs?gS@Y~*)#BJT?I zpwmv5+a2`N!WKjOn3RHlaAhM+GeePB&(*t{;=rgu2@1u;36+4>_)t!DHadK4;b3|w zfhzfLG+Nj?s6^n!IwoQQ2@zZiWHC89k|O&b6ty3gaN!~+&_1hd zcRN`r$#+Un0x-RJEsR9AI~0vlbA29VE>aBWdHyG From dce87c12bc501f696fd9b4ab04caa6140b0d9628 Mon Sep 17 00:00:00 2001 From: etimberg Date: Sun, 29 Jul 2018 17:49:15 -0400 Subject: [PATCH 15/15] Rename test file + treat null as a gap --- src/controllers/controller.radar.js | 2 +- .../{span-gaps.start-true.json => span-gaps-start-true.json} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename test/fixtures/controller.radar/{span-gaps.start-true.json => span-gaps-start-true.json} (100%) diff --git a/src/controllers/controller.radar.js b/src/controllers/controller.radar.js index 7dbbc6f6437..19cf39c3cd2 100644 --- a/src/controllers/controller.radar.js +++ b/src/controllers/controller.radar.js @@ -105,7 +105,7 @@ module.exports = function(Chart) { _model: { x: reset ? scale.xCenter : pointPosition.x, // value not used in dataset scale, but we want a consistent API between scales y: reset ? scale.yCenter : pointPosition.y, - skip: custom.skip || isNaN(dataset.data[index]), + skip: custom.skip || isNaN(dataset.data[index]) || dataset.data[index] === null, // Appearance tension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, me.chart.options.elements.line.tension), diff --git a/test/fixtures/controller.radar/span-gaps.start-true.json b/test/fixtures/controller.radar/span-gaps-start-true.json similarity index 100% rename from test/fixtures/controller.radar/span-gaps.start-true.json rename to test/fixtures/controller.radar/span-gaps-start-true.json