]> git.ipfire.org Git - thirdparty/Chart.js.git/commitdiff
Fix hover animations and optimize pivot() (#6129)
authorAkihiko Kusanagi <nagi@nagi-p.com>
Thu, 21 Mar 2019 08:03:39 +0000 (16:03 +0800)
committerSimon Brunel <simonbrunel@users.noreply.github.com>
Thu, 21 Mar 2019 08:03:39 +0000 (09:03 +0100)
src/core/core.element.js
test/specs/core.element.tests.js
test/specs/core.tooltip.tests.js

index 665f20c4302c005fdd9258b26bba851f1d02d666..ecfec2c994da2deae0dba015a643769e8465abc5 100644 (file)
@@ -66,7 +66,7 @@ helpers.extend(Element.prototype, {
        pivot: function() {
                var me = this;
                if (!me._view) {
-                       me._view = helpers.clone(me._model);
+                       me._view = helpers.extend({}, me._model);
                }
                me._start = {};
                return me;
@@ -80,7 +80,7 @@ helpers.extend(Element.prototype, {
 
                // No animation -> No Transition
                if (!model || ease === 1) {
-                       me._view = model;
+                       me._view = helpers.extend({}, model);
                        me._start = null;
                        return me;
                }
index ca8f9b03e7cf1da4fffb1a1901f32a14259dd53d..8b72a0ccc5ab659cbe3b97be423807d057aaf635 100644 (file)
@@ -18,6 +18,7 @@ describe('Core element tests', function() {
                element.transition(0.25);
 
                expect(element._view).toEqual(element._model);
+               expect(element._view).not.toBe(element._model);
                expect(element._view.objectProp).toBe(element._model.objectProp); // not cloned
 
                element._model.numberProp = 100;
@@ -40,5 +41,11 @@ describe('Core element tests', function() {
                        },
                        colorProp: 'rgb(64, 64, 0)',
                });
+
+               // Final transition clones model into view
+               element.transition(1);
+
+               expect(element._view).toEqual(element._model);
+               expect(element._view).not.toBe(element._model);
        });
 });
index a55e80eb95223a21633dbdfe09067926f81e9320..6fb4880cb654da77fd50966d1d6e41068ef37279 100755 (executable)
@@ -137,11 +137,11 @@ describe('Core.Tooltip', function() {
                                footer: [],
                                caretPadding: 2,
                                labelColors: [{
-                                       borderColor: 'rgb(255, 0, 0)',
-                                       backgroundColor: 'rgb(0, 255, 0)'
+                                       borderColor: globalDefaults.defaultColor,
+                                       backgroundColor: globalDefaults.defaultColor
                                }, {
-                                       borderColor: 'rgb(0, 0, 255)',
-                                       backgroundColor: 'rgb(0, 255, 255)'
+                                       borderColor: globalDefaults.defaultColor,
+                                       backgroundColor: globalDefaults.defaultColor
                                }]
                        }));
 
@@ -338,8 +338,8 @@ describe('Core.Tooltip', function() {
                        caretPadding: 2,
                        labelTextColors: ['#fff'],
                        labelColors: [{
-                               borderColor: 'rgb(255, 0, 0)',
-                               backgroundColor: 'rgb(0, 255, 0)'
+                               borderColor: globalDefaults.defaultColor,
+                               backgroundColor: globalDefaults.defaultColor
                        }]
                }));
 
@@ -488,11 +488,11 @@ describe('Core.Tooltip', function() {
                        caretPadding: 2,
                        labelTextColors: ['labelTextColor', 'labelTextColor'],
                        labelColors: [{
-                               borderColor: 'rgb(255, 0, 0)',
-                               backgroundColor: 'rgb(0, 255, 0)'
+                               borderColor: globalDefaults.defaultColor,
+                               backgroundColor: globalDefaults.defaultColor
                        }, {
-                               borderColor: 'rgb(0, 0, 255)',
-                               backgroundColor: 'rgb(0, 255, 255)'
+                               borderColor: globalDefaults.defaultColor,
+                               backgroundColor: globalDefaults.defaultColor
                        }]
                }));
 
@@ -547,6 +547,7 @@ describe('Core.Tooltip', function() {
 
                // Check and see if tooltip was displayed
                var tooltip = chart.tooltip;
+               var globalDefaults = Chart.defaults.global;
 
                expect(tooltip._view).toEqual(jasmine.objectContaining({
                        // Positioning
@@ -568,11 +569,11 @@ describe('Core.Tooltip', function() {
                        afterBody: [],
                        footer: [],
                        labelColors: [{
-                               borderColor: 'rgb(0, 0, 255)',
-                               backgroundColor: 'rgb(0, 255, 255)'
+                               borderColor: globalDefaults.defaultColor,
+                               backgroundColor: globalDefaults.defaultColor
                        }, {
-                               borderColor: 'rgb(255, 0, 0)',
-                               backgroundColor: 'rgb(0, 255, 0)'
+                               borderColor: globalDefaults.defaultColor,
+                               backgroundColor: globalDefaults.defaultColor
                        }]
                }));
 
@@ -629,6 +630,7 @@ describe('Core.Tooltip', function() {
 
                // Check and see if tooltip was displayed
                var tooltip = chart.tooltip;
+               var globalDefaults = Chart.defaults.global;
 
                expect(tooltip._view).toEqual(jasmine.objectContaining({
                        // Positioning
@@ -646,8 +648,8 @@ describe('Core.Tooltip', function() {
                        afterBody: [],
                        footer: [],
                        labelColors: [{
-                               borderColor: 'rgb(0, 0, 255)',
-                               backgroundColor: 'rgb(0, 255, 255)'
+                               borderColor: globalDefaults.defaultColor,
+                               backgroundColor: globalDefaults.defaultColor
                        }]
                }));
        });
@@ -1088,11 +1090,11 @@ describe('Core.Tooltip', function() {
                        caretPadding: 2,
                        labelTextColors: ['labelTextColor', 'labelTextColor'],
                        labelColors: [{
-                               borderColor: 'rgb(255, 0, 0)',
-                               backgroundColor: 'rgb(0, 255, 0)'
+                               borderColor: globalDefaults.defaultColor,
+                               backgroundColor: globalDefaults.defaultColor
                        }, {
-                               borderColor: 'rgb(0, 0, 255)',
-                               backgroundColor: 'rgb(0, 255, 255)'
+                               borderColor: globalDefaults.defaultColor,
+                               backgroundColor: globalDefaults.defaultColor
                        }]
                }));
        });