]> git.ipfire.org Git - thirdparty/Chart.js.git/commitdiff
Fix tooltip for 'dataset' mode (#6961)
authorJukka Kurkela <jukka.kurkela@gmail.com>
Tue, 21 Jan 2020 14:48:58 +0000 (16:48 +0200)
committerEvert Timberg <evert.timberg+github@gmail.com>
Tue, 21 Jan 2020 14:48:58 +0000 (09:48 -0500)
src/core/core.controller.js
src/core/core.interaction.js
test/specs/core.interaction.tests.js

index 3f1749f2f98d09c07d6f29bef1294028933a129e..3d4ca427c386993eb17d2f6393c74acbaa012503 100644 (file)
@@ -888,10 +888,6 @@ class Chart {
                if (mode === 'dataset') {
                        meta = this.getDatasetMeta(items[0].datasetIndex);
                        meta.controller['_' + prefix + 'DatasetHoverStyle']();
-                       for (i = 0, ilen = meta.data.length; i < ilen; ++i) {
-                               meta.controller[prefix + 'HoverStyle'](meta.data[i], items[0].datasetIndex, i);
-                       }
-                       return;
                }
 
                for (i = 0, ilen = items.length; i < ilen; ++i) {
index 3afce48fccc11119a12786b9cf801cfa38f8bd17..3e130e02fd6c5c354c29ccc8c995ac6c48154770 100644 (file)
@@ -228,7 +228,12 @@ export default {
                        let items = options.intersect ? getIntersectItems(chart, position, axis) : getNearestItems(chart, position, axis);
 
                        if (items.length > 0) {
-                               items = [{datasetIndex: items[0].datasetIndex}]; // when mode: 'dataset' we only need to return datasetIndex
+                               const datasetIndex = items[0].datasetIndex;
+                               const data = chart.getDatasetMeta(datasetIndex).data;
+                               items = [];
+                               for (let i = 0; i < data.length; ++i) {
+                                       items.push({element: data[i], datasetIndex, index: i});
+                               }
                        }
 
                        return items;
index ea892c8176e999eb7dcf8144643d3214e0e65329..6f8dc2269c5ded0ac0915c26d55ae95a6ed95d2b 100644 (file)
@@ -227,8 +227,8 @@ describe('Core.Interaction', function() {
                                        y: point.y
                                };
 
-                               var elements = Chart.Interaction.modes.dataset(chart, evt, {intersect: true});
-                               expect(elements).toEqual([{datasetIndex: 0}]);
+                               var elements = Chart.Interaction.modes.dataset(chart, evt, {intersect: true}).map(item => item.element);
+                               expect(elements).toEqual(meta.data);
                        });
 
                        it ('should return an empty array if nothing found', function() {
@@ -283,8 +283,8 @@ describe('Core.Interaction', function() {
                                        y: chart.chartArea.top
                                };
 
-                               var elements = Chart.Interaction.modes.dataset(chart, evt, {axis: 'x', intersect: false});
-                               expect(elements).toEqual([{datasetIndex: 0}]);
+                               var elements = Chart.Interaction.modes.dataset(chart, evt, {axis: 'x', intersect: false}).map(item => item.element);
+                               expect(elements).toEqual(chart.getDatasetMeta(0).data);
                        });
 
                        it ('axis: y gets correct items', function() {
@@ -297,8 +297,8 @@ describe('Core.Interaction', function() {
                                        y: chart.chartArea.top
                                };
 
-                               var elements = Chart.Interaction.modes.dataset(chart, evt, {axis: 'y', intersect: false});
-                               expect(elements).toEqual([{datasetIndex: 1}]);
+                               var elements = Chart.Interaction.modes.dataset(chart, evt, {axis: 'y', intersect: false}).map(item => item.element);
+                               expect(elements).toEqual(chart.getDatasetMeta(1).data);
                        });
 
                        it ('axis: xy gets correct items', function() {
@@ -311,8 +311,8 @@ describe('Core.Interaction', function() {
                                        y: chart.chartArea.top
                                };
 
-                               var elements = Chart.Interaction.modes.dataset(chart, evt, {intersect: false});
-                               expect(elements).toEqual([{datasetIndex: 1}]);
+                               var elements = Chart.Interaction.modes.dataset(chart, evt, {intersect: false}).map(item => item.element);
+                               expect(elements).toEqual(chart.getDatasetMeta(1).data);
                        });
                });
        });