From: Jukka Kurkela Date: Tue, 29 Dec 2020 07:02:03 +0000 (+0200) Subject: Line: Update points directly, when possible (#8246) X-Git-Tag: v3.0.0-beta.8~23 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dd570f676dc8258e18bc920997e6d039eb2830b7;p=thirdparty%2FChart.js.git Line: Update points directly, when possible (#8246) --- diff --git a/src/controllers/controller.line.js b/src/controllers/controller.line.js index c3ecf7991..e536f5d49 100644 --- a/src/controllers/controller.line.js +++ b/src/controllers/controller.line.js @@ -51,25 +51,25 @@ export default class LineController extends DatasetController { const includeOptions = me.includeOptions(mode, sharedOptions); const spanGaps = valueOrDefault(me._config.spanGaps, me.chart.options.spanGaps); const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY; + const directUpdate = me.chart._animationsDisabled || reset || mode === 'none'; let prevParsed = start > 0 && me.getParsed(start - 1); for (let i = start; i < start + count; ++i) { const point = points[i]; const parsed = me.getParsed(i); - const x = xScale.getPixelForValue(parsed.x, i); - const y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(_stacked ? me.applyStack(yScale, parsed) : parsed.y, i); - const properties = { - x, - y, - skip: isNaN(x) || isNaN(y), - stop: i > 0 && (parsed.x - prevParsed.x) > maxGapLength - }; + const properties = directUpdate ? point : {}; + const x = properties.x = xScale.getPixelForValue(parsed.x, i); + const y = properties.y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(_stacked ? me.applyStack(yScale, parsed) : parsed.y, i); + properties.skip = isNaN(x) || isNaN(y); + properties.stop = i > 0 && (parsed.x - prevParsed.x) > maxGapLength; if (includeOptions) { properties.options = sharedOptions || me.resolveDataElementOptions(i, mode); } - me.updateElement(point, i, properties, mode); + if (!directUpdate) { + me.updateElement(point, i, properties, mode); + } prevParsed = parsed; }