From 1a9db4783c94be828d29b28d6aa4c18822b93b7e Mon Sep 17 00:00:00 2001 From: Jukka Kurkela Date: Wed, 20 Nov 2019 02:01:32 +0200 Subject: [PATCH] Remove _ctx from Element (#6764) * Remove _ctx from Element * Sort --- docs/getting-started/v3-migration.md | 1 + src/controllers/controller.bar.js | 2 +- src/controllers/controller.line.js | 5 +++-- src/core/core.datasetController.js | 10 +++++----- src/elements/element.arc.js | 3 +-- src/elements/element.line.js | 3 +-- src/elements/element.point.js | 3 +-- src/elements/element.rectangle.js | 3 +-- test/specs/element.point.tests.js | 8 ++------ 9 files changed, 16 insertions(+), 22 deletions(-) diff --git a/docs/getting-started/v3-migration.md b/docs/getting-started/v3-migration.md index 0d1cecc60..3dfd79bd0 100644 --- a/docs/getting-started/v3-migration.md +++ b/docs/getting-started/v3-migration.md @@ -82,6 +82,7 @@ Chart.js 3.0 introduces a number of breaking changes. Chart.js 2.0 was released #### Removal of private APIs +* `Element._ctx` * `Element._model.datasetLabel` * `Element._model.label` * `Point._model.tension` diff --git a/src/controllers/controller.bar.js b/src/controllers/controller.bar.js index b4b2582b6..c368b2d1b 100644 --- a/src/controllers/controller.bar.js +++ b/src/controllers/controller.bar.js @@ -484,7 +484,7 @@ module.exports = DatasetController.extend({ for (; i < ilen; ++i) { if (!isNaN(me._getParsed(i)[vScale.id])) { - rects[i].draw(); + rects[i].draw(me._ctx); } } diff --git a/src/controllers/controller.line.js b/src/controllers/controller.line.js index a8acfd11c..f92839742 100644 --- a/src/controllers/controller.line.js +++ b/src/controllers/controller.line.js @@ -229,6 +229,7 @@ module.exports = DatasetController.extend({ draw: function() { var me = this; + var ctx = me._ctx; var chart = me.chart; var meta = me._cachedMeta; var points = meta.data || []; @@ -237,12 +238,12 @@ module.exports = DatasetController.extend({ var ilen = points.length; if (me._showLine) { - meta.dataset.draw(); + meta.dataset.draw(ctx); } // Draw the points for (; i < ilen; ++i) { - points[i].draw(area); + points[i].draw(ctx, area); } }, diff --git a/src/core/core.datasetController.js b/src/core/core.datasetController.js index a389a5930..6e4ef71ce 100644 --- a/src/core/core.datasetController.js +++ b/src/core/core.datasetController.js @@ -282,6 +282,7 @@ helpers.extend(DatasetController.prototype, { const me = this; let meta; me.chart = chart; + me._ctx = chart.ctx; me.index = datasetIndex; me._cachedMeta = meta = me.getMeta(); me._type = meta.type; @@ -371,9 +372,7 @@ helpers.extend(DatasetController.prototype, { }, createElement: function(type) { - return type && new type({ - _ctx: this.chart.ctx - }); + return type && new type(); }, /** @@ -768,17 +767,18 @@ helpers.extend(DatasetController.prototype, { }, draw: function() { + const ctx = this._ctx; const meta = this._cachedMeta; const elements = meta.data || []; const ilen = elements.length; let i = 0; if (meta.dataset) { - meta.dataset.draw(); + meta.dataset.draw(ctx); } for (; i < ilen; ++i) { - elements[i].draw(); + elements[i].draw(ctx); } }, diff --git a/src/elements/element.arc.js b/src/elements/element.arc.js index 7ab475506..7706a5e73 100644 --- a/src/elements/element.arc.js +++ b/src/elements/element.arc.js @@ -148,8 +148,7 @@ class Arc extends Element { }; } - draw() { - var ctx = this._ctx; + draw(ctx) { var vm = this._view; var pixelMargin = (vm.borderAlign === 'inner') ? 0.33 : 0; var arc = { diff --git a/src/elements/element.line.js b/src/elements/element.line.js index 1a2658eed..f57b8b2bf 100644 --- a/src/elements/element.line.js +++ b/src/elements/element.line.js @@ -145,10 +145,9 @@ class Line extends Element { super(props); } - draw() { + draw(ctx) { const me = this; const vm = me._view; - const ctx = me._ctx; const spanGaps = vm.spanGaps; let closePath = me._loop; let points = me._children; diff --git a/src/elements/element.point.js b/src/elements/element.point.js index ed8eef64b..a6cb6a946 100644 --- a/src/elements/element.point.js +++ b/src/elements/element.point.js @@ -67,9 +67,8 @@ class Point extends Element { }; } - draw(chartArea) { + draw(ctx, chartArea) { const vm = this._view; - const ctx = this._ctx; const pointStyle = vm.pointStyle; const rotation = vm.rotation; const radius = vm.radius; diff --git a/src/elements/element.rectangle.js b/src/elements/element.rectangle.js index 1bbde1e12..d6a07790c 100644 --- a/src/elements/element.rectangle.js +++ b/src/elements/element.rectangle.js @@ -136,8 +136,7 @@ class Rectangle extends Element { super(props); } - draw() { - var ctx = this._ctx; + draw(ctx) { var vm = this._view; var rects = boundingRects(vm); var outer = rects.outer; diff --git a/test/specs/element.point.tests.js b/test/specs/element.point.tests.js index b3ea7631d..199998dd0 100644 --- a/test/specs/element.point.tests.js +++ b/test/specs/element.point.tests.js @@ -74,11 +74,7 @@ describe('Chart.elements.Point', function() { it ('should not draw if skipped', function() { var mockContext = window.createMockContext(); - var point = new Chart.elements.Point({ - _datasetIndex: 2, - _index: 1, - _ctx: mockContext - }); + var point = new Chart.elements.Point(); // Attach a view object as if we were the controller point._view = { @@ -90,7 +86,7 @@ describe('Chart.elements.Point', function() { skip: true }; - point.draw(); + point.draw(mockContext); expect(mockContext.getCalls()).toEqual([]); }); -- 2.47.2