Make sure bezier control points are updated (#7710)

* Make sure bezier control points are updated
* Test
This commit is contained in:
Jukka Kurkela 2020-08-16 00:06:03 +03:00 committed by GitHub
parent 6ad17c0294
commit 689befa807
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 13 additions and 1 deletions

View File

@ -103,6 +103,11 @@ export default class LineController extends DatasetController {
const lastPoint = data[data.length - 1].size();
return Math.max(border, firstPoint, lastPoint) / 2;
}
draw() {
this._cachedMeta.dataset.updateControlPoints(this.chart.chartArea);
super.draw();
}
}
LineController.id = 'line';

View File

@ -194,6 +194,7 @@ export default class Line extends Element {
this._fullLoop = undefined;
this._points = undefined;
this._segments = undefined;
this._pointsUpdated = false;
if (cfg) {
Object.assign(this, cfg);
@ -203,9 +204,10 @@ export default class Line extends Element {
updateControlPoints(chartArea) {
const me = this;
const options = me.options;
if (options.tension && !options.stepped) {
if (options.tension && !options.stepped && !me._pointsUpdated) {
const loop = options.spanGaps ? me._loop : me._fullLoop;
_updateBezierControlPoints(me._points, options, chartArea, loop);
me._pointsUpdated = true;
}
}
@ -338,6 +340,8 @@ export default class Line extends Element {
ctx.stroke();
ctx.restore();
this._pointsUpdated = false;
}
}

View File

@ -79,6 +79,7 @@ describe('Chart.controllers.line', function() {
});
var meta = chart.getDatasetMeta(0);
spyOn(meta.dataset, 'updateControlPoints');
spyOn(meta.dataset, 'draw');
spyOn(meta.data[0], 'draw');
spyOn(meta.data[1], 'draw');
@ -87,6 +88,8 @@ describe('Chart.controllers.line', function() {
chart.update();
expect(meta.dataset.updateControlPoints.calls.count()).toBeGreaterThanOrEqual(1);
expect(meta.dataset.draw.calls.count()).toBe(1);
expect(meta.data[0].draw.calls.count()).toBe(1);
expect(meta.data[1].draw.calls.count()).toBe(1);
expect(meta.data[2].draw.calls.count()).toBe(1);