From 103957c4e074a53febdf04eb9b73cf0ce2ee9f92 Mon Sep 17 00:00:00 2001 From: Adam Templeton Date: Tue, 28 Jun 2016 14:15:12 -0500 Subject: [PATCH] adds x-axis hover option for charts and tooltips, highlights all dots on x-axis upon x-axis hover --- src/core/core.controller.js | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/src/core/core.controller.js b/src/core/core.controller.js index bce768810..28de61bd7 100644 --- a/src/core/core.controller.js +++ b/src/core/core.controller.js @@ -421,6 +421,40 @@ 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); + elementsArray.push(meta.data[found._index]); + } + }, me); + + return elementsArray; + }, + getElementsAtEventForMode: function(e, mode) { var me = this; switch (mode) { @@ -430,6 +464,8 @@ module.exports = function(Chart) { return me.getElementsAtEvent(e); case 'dataset': return me.getDatasetAtEvent(e); + case 'x-axis': + return me.getElementsAtXAxis(e); default: return e; } @@ -547,6 +583,7 @@ module.exports = function(Chart) { break; case 'label': case 'dataset': + case 'x-axis': // elements = elements; break; default: