Skip to content

Commit f7a3d65

Browse files
nagixsimonbrunel
authored andcommitted
Fix hover animations and optimize pivot() (chartjs#6129)
1 parent b7565e6 commit f7a3d65

File tree

3 files changed

+31
-22
lines changed

3 files changed

+31
-22
lines changed

src/core/core.element.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ helpers.extend(Element.prototype, {
6666
pivot: function() {
6767
var me = this;
6868
if (!me._view) {
69-
me._view = helpers.clone(me._model);
69+
me._view = helpers.extend({}, me._model);
7070
}
7171
me._start = {};
7272
return me;
@@ -80,7 +80,7 @@ helpers.extend(Element.prototype, {
8080

8181
// No animation -> No Transition
8282
if (!model || ease === 1) {
83-
me._view = model;
83+
me._view = helpers.extend({}, model);
8484
me._start = null;
8585
return me;
8686
}

test/specs/core.element.tests.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ describe('Core element tests', function() {
1818
element.transition(0.25);
1919

2020
expect(element._view).toEqual(element._model);
21+
expect(element._view).not.toBe(element._model);
2122
expect(element._view.objectProp).toBe(element._model.objectProp); // not cloned
2223

2324
element._model.numberProp = 100;
@@ -40,5 +41,11 @@ describe('Core element tests', function() {
4041
},
4142
colorProp: 'rgb(64, 64, 0)',
4243
});
44+
45+
// Final transition clones model into view
46+
element.transition(1);
47+
48+
expect(element._view).toEqual(element._model);
49+
expect(element._view).not.toBe(element._model);
4350
});
4451
});

test/specs/core.tooltip.tests.js

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -137,11 +137,11 @@ describe('Core.Tooltip', function() {
137137
footer: [],
138138
caretPadding: 2,
139139
labelColors: [{
140-
borderColor: 'rgb(255, 0, 0)',
141-
backgroundColor: 'rgb(0, 255, 0)'
140+
borderColor: globalDefaults.defaultColor,
141+
backgroundColor: globalDefaults.defaultColor
142142
}, {
143-
borderColor: 'rgb(0, 0, 255)',
144-
backgroundColor: 'rgb(0, 255, 255)'
143+
borderColor: globalDefaults.defaultColor,
144+
backgroundColor: globalDefaults.defaultColor
145145
}]
146146
}));
147147

@@ -338,8 +338,8 @@ describe('Core.Tooltip', function() {
338338
caretPadding: 2,
339339
labelTextColors: ['#fff'],
340340
labelColors: [{
341-
borderColor: 'rgb(255, 0, 0)',
342-
backgroundColor: 'rgb(0, 255, 0)'
341+
borderColor: globalDefaults.defaultColor,
342+
backgroundColor: globalDefaults.defaultColor
343343
}]
344344
}));
345345

@@ -488,11 +488,11 @@ describe('Core.Tooltip', function() {
488488
caretPadding: 2,
489489
labelTextColors: ['labelTextColor', 'labelTextColor'],
490490
labelColors: [{
491-
borderColor: 'rgb(255, 0, 0)',
492-
backgroundColor: 'rgb(0, 255, 0)'
491+
borderColor: globalDefaults.defaultColor,
492+
backgroundColor: globalDefaults.defaultColor
493493
}, {
494-
borderColor: 'rgb(0, 0, 255)',
495-
backgroundColor: 'rgb(0, 255, 255)'
494+
borderColor: globalDefaults.defaultColor,
495+
backgroundColor: globalDefaults.defaultColor
496496
}]
497497
}));
498498

@@ -547,6 +547,7 @@ describe('Core.Tooltip', function() {
547547

548548
// Check and see if tooltip was displayed
549549
var tooltip = chart.tooltip;
550+
var globalDefaults = Chart.defaults.global;
550551

551552
expect(tooltip._view).toEqual(jasmine.objectContaining({
552553
// Positioning
@@ -568,11 +569,11 @@ describe('Core.Tooltip', function() {
568569
afterBody: [],
569570
footer: [],
570571
labelColors: [{
571-
borderColor: 'rgb(0, 0, 255)',
572-
backgroundColor: 'rgb(0, 255, 255)'
572+
borderColor: globalDefaults.defaultColor,
573+
backgroundColor: globalDefaults.defaultColor
573574
}, {
574-
borderColor: 'rgb(255, 0, 0)',
575-
backgroundColor: 'rgb(0, 255, 0)'
575+
borderColor: globalDefaults.defaultColor,
576+
backgroundColor: globalDefaults.defaultColor
576577
}]
577578
}));
578579

@@ -629,6 +630,7 @@ describe('Core.Tooltip', function() {
629630

630631
// Check and see if tooltip was displayed
631632
var tooltip = chart.tooltip;
633+
var globalDefaults = Chart.defaults.global;
632634

633635
expect(tooltip._view).toEqual(jasmine.objectContaining({
634636
// Positioning
@@ -646,8 +648,8 @@ describe('Core.Tooltip', function() {
646648
afterBody: [],
647649
footer: [],
648650
labelColors: [{
649-
borderColor: 'rgb(0, 0, 255)',
650-
backgroundColor: 'rgb(0, 255, 255)'
651+
borderColor: globalDefaults.defaultColor,
652+
backgroundColor: globalDefaults.defaultColor
651653
}]
652654
}));
653655
});
@@ -1088,11 +1090,11 @@ describe('Core.Tooltip', function() {
10881090
caretPadding: 2,
10891091
labelTextColors: ['labelTextColor', 'labelTextColor'],
10901092
labelColors: [{
1091-
borderColor: 'rgb(255, 0, 0)',
1092-
backgroundColor: 'rgb(0, 255, 0)'
1093+
borderColor: globalDefaults.defaultColor,
1094+
backgroundColor: globalDefaults.defaultColor
10931095
}, {
1094-
borderColor: 'rgb(0, 0, 255)',
1095-
backgroundColor: 'rgb(0, 255, 255)'
1096+
borderColor: globalDefaults.defaultColor,
1097+
backgroundColor: globalDefaults.defaultColor
10961098
}]
10971099
}));
10981100
});

0 commit comments

Comments
 (0)