]> git.ipfire.org Git - thirdparty/Chart.js.git/commitdiff
adds x-axis hover option for charts and tooltips, highlights all dots on x-axis upon...
authorAdam Templeton <claytemple@gmail.com>
Tue, 28 Jun 2016 19:15:12 +0000 (14:15 -0500)
committerAdam Templeton <claytemple@gmail.com>
Tue, 28 Jun 2016 19:15:12 +0000 (14:15 -0500)
src/core/core.controller.js

index bce768810abf05bd2f8ef6eea0f091224d7b92a6..28de61bd787df6d06bedcb3a7f44652581cdb992 100644 (file)
@@ -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: