From 1422c93dc0c9471abc54f4c9ed4d9826239a05af Mon Sep 17 00:00:00 2001 From: Jacco van den Berg <39033624+LeeLenaleee@users.noreply.github.com> Date: Sun, 22 May 2022 15:50:32 +0200 Subject: [PATCH] Update scale polarArea correctly on data hide (#10340) * give correct range back for polarArea * added test * tab to spaces --- src/controllers/controller.polarArea.js | 24 ++++++++++++++++++++++++ test/specs/controller.polarArea.tests.js | 18 ++++++++++++++++++ 2 files changed, 42 insertions(+) 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'); });