mirror of
https://github.com/chartjs/Chart.js.git
synced 2024-10-06 12:19:08 +02:00
Make sure bezier control points are updated (#7710)
* Make sure bezier control points are updated * Test
This commit is contained in:
parent
6ad17c0294
commit
689befa807
@ -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';
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user