From: Jukka Kurkela Date: Mon, 28 Sep 2020 13:51:28 +0000 (+0300) Subject: Make dataset animations obey chart level disable (#7820) X-Git-Tag: v3.0.0-beta.2~1^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c4243683faaa8a6e6195f54ed0320ead7bf6b942;p=thirdparty%2FChart.js.git Make dataset animations obey chart level disable (#7820) --- diff --git a/src/core/core.datasetController.js b/src/core/core.datasetController.js index a211216dd..3d8bfdf7e 100644 --- a/src/core/core.datasetController.js +++ b/src/core/core.datasetController.js @@ -804,9 +804,9 @@ export default class DatasetController { const info = {cacheable: true}; const context = me._getContext(index, active); - const datasetAnim = resolve([me._config.animation], context, index, info); const chartAnim = resolve([chart.options.animation], context, index, info); - let config = mergeIf({}, [datasetAnim, chartAnim]); + const datasetAnim = resolve([me._config.animation], context, index, info); + let config = chartAnim && mergeIf({}, [datasetAnim, chartAnim]); if (config[mode]) { config = Object.assign({}, config, config[mode]); diff --git a/test/specs/core.datasetController.tests.js b/test/specs/core.datasetController.tests.js index 1da76a5d5..4e375df3a 100644 --- a/test/specs/core.datasetController.tests.js +++ b/test/specs/core.datasetController.tests.js @@ -624,43 +624,82 @@ describe('Chart.DatasetController', function() { // Remove test from global defaults delete Chart.defaults.elements.line.globalTest; }); - }); - it('should resove names in object notation', function() { - Chart.defaults.elements.line.global = 'global'; + it('should resove names in object notation', function() { + Chart.defaults.elements.line.global = 'global'; - const chart = acquireChart({ - type: 'line', - data: { - datasets: [{ - data: [1], - datasetTest: 'dataset' - }] - }, - options: { - elements: { - line: { - element: 'element' + const chart = acquireChart({ + type: 'line', + data: { + datasets: [{ + data: [1], + datasetTest: 'dataset' + }] + }, + options: { + elements: { + line: { + element: 'element' + } } } - } + }); + + const controller = chart.getDatasetMeta(0).controller; + + expect(controller._resolveOptions( + { + dataset: 'datasetTest', + element: 'elementTest', + global: 'globalTest'}, + {type: 'line'}) + ).toEqual({ + dataset: 'dataset', + element: 'element', + global: 'global' + }); + + // Remove test from global defaults + delete Chart.defaults.elements.line.global; }); + }); + + describe('_resolveAnimations', function() { + it('should resolve to empty Animations when globally disabled', function() { + const chart = acquireChart({ + type: 'line', + data: { + datasets: [{ + data: [1], + animation: { + test: {duration: 10} + } + }] + }, + options: { + animation: false + } + }); - const controller = chart.getDatasetMeta(0).controller; - - expect(controller._resolveOptions( - { - dataset: 'datasetTest', - element: 'elementTest', - global: 'globalTest'}, - {type: 'line'}) - ).toEqual({ - dataset: 'dataset', - element: 'element', - global: 'global' + const controller = chart.getDatasetMeta(0).controller; + + expect(controller._resolveAnimations(0)._properties.size).toEqual(0); }); - // Remove test from global defaults - delete Chart.defaults.elements.line.global; + it('should resolve to empty Animations when disabled at dataset level', function() { + const chart = acquireChart({ + type: 'line', + data: { + datasets: [{ + data: [1], + animation: false + }] + } + }); + + const controller = chart.getDatasetMeta(0).controller; + + expect(controller._resolveAnimations(0)._properties.size).toEqual(0); + }); }); });