Fix tooltip for 'dataset' mode (#6961)

This commit is contained in:
Jukka Kurkela 2020-01-21 16:48:58 +02:00 committed by Evert Timberg
parent 5aaff3a1aa
commit fb19b77e4b
3 changed files with 14 additions and 13 deletions

View 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) {

View 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;

View 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);
});
});
});