]> git.ipfire.org Git - thirdparty/Chart.js.git/commitdiff
Performance optimizations when animations are disabled (#6710)
authorJukka Kurkela <jukka.kurkela@gmail.com>
Sun, 10 Nov 2019 02:57:54 +0000 (04:57 +0200)
committerEvert Timberg <evert.timberg+github@gmail.com>
Sun, 10 Nov 2019 02:57:54 +0000 (21:57 -0500)
* Don't copy _model when animations are disabled

* Review comments

src/controllers/controller.bar.js
src/controllers/controller.bubble.js
src/controllers/controller.doughnut.js
src/controllers/controller.line.js
src/controllers/controller.polarArea.js
src/controllers/controller.radar.js
src/core/core.controller.js
src/core/core.element.js

index 12ca5a534741620d9848c80ef94fbaf8860e1281..6d89e0708b5c6086a713b8416cf0d53f6c16bb2c 100644 (file)
@@ -256,7 +256,7 @@ module.exports = DatasetController.extend({
 
                me._updateElementGeometry(rectangle, index, reset, options);
 
-               rectangle.pivot();
+               rectangle.pivot(me.chart._animationsDisabled);
        },
 
        /**
index 48c0a2ee46dff968b8cb8a38e70d1e8edfad2cbd..50a9b2d0435316f45c84c27378ac8c00a080655c 100644 (file)
@@ -122,7 +122,7 @@ module.exports = DatasetController.extend({
                        y: y,
                };
 
-               point.pivot();
+               point.pivot(me.chart._animationsDisabled);
        },
 
        /**
index 8df290ad4026c56f35120865ba6754e18d2c527a..4b29d422617775988172c3dec43a54c0d0eab5e8 100644 (file)
@@ -271,7 +271,7 @@ module.exports = DatasetController.extend({
                        model.endAngle = model.startAngle + model.circumference;
                }
 
-               arc.pivot();
+               arc.pivot(chart._animationsDisabled);
        },
 
        calculateTotal: function() {
index 59793279eb4ed3fb0a9e249e8c0146ba8d420ac6..d73332e7571851644818d03d15defa439751f632 100644 (file)
@@ -103,7 +103,7 @@ module.exports = DatasetController.extend({
 
                // Now pivot the point for animation
                for (i = 0, ilen = points.length; i < ilen; ++i) {
-                       points[i].pivot();
+                       points[i].pivot(me.chart._animationsDisabled);
                }
        },
 
index 2e172ff80fccd28395ab91c4556da50367e377f0..b4c5ba480158ba8de2d93db86aef2b866061227b 100644 (file)
@@ -220,7 +220,7 @@ module.exports = DatasetController.extend({
                        }
                });
 
-               arc.pivot();
+               arc.pivot(chart._animationsDisabled);
        },
 
        countVisibleElements: function() {
index 1a0bee2fadaa0c1da33c2910791d926942024273..049c6cf8efafaa665906f4095e9047f259d52c45 100644 (file)
@@ -75,6 +75,7 @@ module.exports = DatasetController.extend({
                var line = meta.dataset;
                var points = meta.data || [];
                var config = me._config;
+               var animationsDisabled = me.chart._animationsDisabled;
                var i, ilen;
 
                // Compatibility: If the properties are defined with only the old name, use those values
@@ -90,7 +91,7 @@ module.exports = DatasetController.extend({
                // Model
                line._model = me._resolveDatasetElementOptions();
 
-               line.pivot();
+               line.pivot(animationsDisabled);
 
                // Update Points
                for (i = 0, ilen = points.length; i < ilen; ++i) {
@@ -102,7 +103,7 @@ module.exports = DatasetController.extend({
 
                // Now pivot the point for animation
                for (i = 0, ilen = points.length; i < ilen; ++i) {
-                       points[i].pivot();
+                       points[i].pivot(animationsDisabled);
                }
        },
 
index ad841ca6ec7f22de64b4b4c3c752b3efc72dc785..e3fce696504ee7769ec4e18fe29878fb9044611c 100644 (file)
@@ -116,6 +116,14 @@ function initConfig(config) {
        return config;
 }
 
+function isAnimationDisabled(config) {
+       return !config.animation || !(
+               config.animation.duration ||
+               (config.hover && config.hover.animationDuration) ||
+               config.responsiveAnimationDuration
+       );
+}
+
 function updateConfig(chart) {
        var newOptions = chart.options;
 
@@ -129,6 +137,7 @@ function updateConfig(chart) {
                newOptions);
 
        chart.options = chart.config.options = newOptions;
+       chart._animationsDisabled = isAnimationDisabled(newOptions);
        chart.ensureScalesHaveIDs();
        chart.buildOrUpdateScales();
 
@@ -692,9 +701,11 @@ helpers.extend(Chart.prototype, /** @lends Chart */ {
                var me = this;
                var i, ilen;
 
-               for (i = 0, ilen = (me.data.datasets || []).length; i < ilen; ++i) {
-                       if (me.isDatasetVisible(i)) {
-                               me.getDatasetMeta(i).controller.transition(easingValue);
+               if (!me._animationsDisabled) {
+                       for (i = 0, ilen = (me.data.datasets || []).length; i < ilen; ++i) {
+                               if (me.isDatasetVisible(i)) {
+                                       me.getDatasetMeta(i).controller.transition(easingValue);
+                               }
                        }
                }
 
index 89bbc59d07a3a689baceed1f489d26b03d38b97d..dc98270c866c283bd48f62802fbf50dccb8fdfab 100644 (file)
@@ -63,8 +63,13 @@ class Element {
                this.hidden = false;
        }
 
-       pivot() {
+       pivot(animationsDisabled) {
                var me = this;
+               if (animationsDisabled) {
+                       me._view = me._model;
+                       return me;
+               }
+
                if (!me._view) {
                        me._view = helpers.extend({}, me._model);
                }