From: Jeff Esp Date: Wed, 27 Jul 2016 19:09:13 +0000 (-0400) Subject: Fix #2922 Make the XAxis based hover/tooltip pick the item at the same x-axis value X-Git-Tag: v2.2.0~5 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1e5cdc618806836e1764777c7f8e8ff001ecd1df;p=thirdparty%2FChart.js.git Fix #2922 Make the XAxis based hover/tooltip pick the item at the same x-axis value --- diff --git a/src/core/core.controller.js b/src/core/core.controller.js index 398d40d2b..45009d95e 100644 --- a/src/core/core.controller.js +++ b/src/core/core.controller.js @@ -424,41 +424,44 @@ module.exports = function(Chart) { return elementsArray; }, - getElementsAtXAxis: function(e){ - var me = this; - var eventPosition = helpers.getRelativePosition(e, me.chart); - var elementsArray = []; - - var found = (function() { - if (me.data.datasets) { - for (var i = 0; i < me.data.datasets.length; i++) { - var meta = me.getDatasetMeta(i); - if (me.isDatasetVisible(i)) { - for (var j = 0; j < meta.data.length; j++) { - if (meta.data[j].inLabelRange(eventPosition.x, eventPosition.y)) { - return meta.data[j]; - } - } - } - } - } - }).call(me); - - if (!found) { - return elementsArray; - } - - helpers.each(me.data.datasets, function(dataset, datasetIndex) { - if (me.isDatasetVisible(datasetIndex)) { - var meta = me.getDatasetMeta(datasetIndex); - if(!meta.data[found._index]._view.skip){ - elementsArray.push(meta.data[found._index]); - } - } - }, me); - - return elementsArray; - }, + getElementsAtXAxis: function(e) { + var me = this; + var eventPosition = helpers.getRelativePosition(e, me.chart); + var elementsArray = []; + + var found = (function() { + if (me.data.datasets) { + for (var i = 0; i < me.data.datasets.length; i++) { + var meta = me.getDatasetMeta(i); + if (me.isDatasetVisible(i)) { + for (var j = 0; j < meta.data.length; j++) { + if (meta.data[j].inLabelRange(eventPosition.x, eventPosition.y)) { + return meta.data[j]; + } + } + } + } + } + }).call(me); + + if (!found) { + return elementsArray; + } + + helpers.each(me.data.datasets, function(dataset, datasetIndex) { + if (me.isDatasetVisible(datasetIndex)) { + var meta = me.getDatasetMeta(datasetIndex); + var index = helpers.findIndex(meta.data, function (it) { + return found._model.x === it._model.x; + }); + if(index !== -1 && !meta.data[index]._view.skip) { + elementsArray.push(meta.data[index]); + } + } + }, me); + + return elementsArray; + }, getElementsAtEventForMode: function(e, mode) { var me = this;