diff --git a/src/controllers/controller.polarArea.js b/src/controllers/controller.polarArea.js index 92642a32fef..b717eca7c25 100644 --- a/src/controllers/controller.polarArea.js +++ b/src/controllers/controller.polarArea.js @@ -33,6 +33,30 @@ export default class PolarAreaController extends DatasetController { this.updateElements(arcs, 0, arcs.length, mode); } + /** + * @protected + */ + getMinMax() { + const meta = this._cachedMeta; + const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY}; + + meta.data.forEach((element, index) => { + const parsed = this.getParsed(index).r; + + if (!isNaN(parsed) && this.chart.getDataVisibility(index)) { + if (parsed < range.min) { + range.min = parsed; + } + + if (parsed > range.max) { + range.max = parsed; + } + } + }); + + return range; + } + /** * @private */ diff --git a/test/specs/controller.polarArea.tests.js b/test/specs/controller.polarArea.tests.js index 340c58413cd..a5266e21521 100644 --- a/test/specs/controller.polarArea.tests.js +++ b/test/specs/controller.polarArea.tests.js @@ -1,6 +1,24 @@ describe('Chart.controllers.polarArea', function() { describe('auto', jasmine.fixture.specs('controller.polarArea')); + it('should update the scale correctly when data visibility is changed', function() { + var expectedScaleMax = 1; + var chart = window.acquireChart({ + type: 'polarArea', + data: { + datasets: [ + {data: [100]} + ], + labels: ['x'] + } + }); + + chart.toggleDataVisibility(0); + chart.update(); + + expect(chart.scales.r.max).toBe(expectedScaleMax); + }); + it('should be registered as dataset controller', function() { expect(typeof Chart.controllers.polarArea).toBe('function'); });