]> git.ipfire.org Git - thirdparty/Chart.js.git/commitdiff
Make dataset animations obey chart level disable (#7820)
authorJukka Kurkela <jukka.kurkela@gmail.com>
Mon, 28 Sep 2020 13:51:28 +0000 (16:51 +0300)
committerGitHub <noreply@github.com>
Mon, 28 Sep 2020 13:51:28 +0000 (09:51 -0400)
src/core/core.datasetController.js
test/specs/core.datasetController.tests.js

index a211216dd5402046289d3f7cb551938ae3d0356d..3d8bfdf7e596af16ea529819f68f246f48276209 100644 (file)
@@ -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]);
index 1da76a5d5d8175f5c4d61e8d9285005fbcaded9d..4e375df3a1bfaac08645d1f9f1c47305ca3604b5 100644 (file)
@@ -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);
+               });
        });
 });