From 7b595404e6acbd3fd5cfb1a5f2bf0e214fa4b7e9 Mon Sep 17 00:00:00 2001 From: Michael Date: Sun, 11 Mar 2018 23:07:25 -0400 Subject: [PATCH 1/3] Possible fix for datapoints --- src/core/core.interaction.js | 19 +++++++++++++++++-- src/elements/element.point.js | 6 ++++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/core/core.interaction.js b/src/core/core.interaction.js index be85a080f76..e6df24ea57c 100644 --- a/src/core/core.interaction.js +++ b/src/core/core.interaction.js @@ -37,6 +37,7 @@ function parseVisibleItems(chart, handler) { for (j = 0, jlen = meta.data.length; j < jlen; ++j) { var element = meta.data[j]; if (!element._view.skip) { + element.datasetlength = meta.data.length; handler(element); } } @@ -277,10 +278,23 @@ module.exports = { var position = getRelativePosition(e, chart); var items = []; var intersectsItem = false; + var j; parseVisibleItems(chart, function(element) { - if (element.inXRange(position.x)) { - items.push(element); + if (element.datasetlength < 40) { + if (element.inXRange(position.x)) { + items.push(element); + } + } else if (element.datasetlength >= 40) { + if (element.inXRangeSmall(position.x)) { + items.push(element); + // Cleanup extra elements + if (items.length > 1) { + for (j = 1; j <= items.length; j++) { + items.splice(j, 1); + } + } + } } if (element.inRange(position.x, position.y)) { @@ -293,6 +307,7 @@ module.exports = { if (options.intersect && !intersectsItem) { items = []; } + return items; }, diff --git a/src/elements/element.point.js b/src/elements/element.point.js index eab5b31d453..8a086a338c9 100644 --- a/src/elements/element.point.js +++ b/src/elements/element.point.js @@ -27,6 +27,11 @@ function xRange(mouseX) { return vm ? (Math.abs(mouseX - vm.x) < vm.radius + vm.hitRadius) : false; } +function xRangeSmall(mouseX) { + var vm = this._view; + return vm ? (Math.abs(mouseX - vm.x) < 2) : false; +} + function yRange(mouseY) { var vm = this._view; return vm ? (Math.abs(mouseY - vm.y) < vm.radius + vm.hitRadius) : false; @@ -40,6 +45,7 @@ module.exports = Element.extend({ inLabelRange: xRange, inXRange: xRange, + inXRangeSmall: xRangeSmall, inYRange: yRange, getCenterPoint: function() { From 52977e0756456779e9baf191ce705fe9d25be4de Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 12 Mar 2018 12:42:22 -0400 Subject: [PATCH 2/3] code climate test fix --- src/core/core.interaction.js | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/core/core.interaction.js b/src/core/core.interaction.js index e6df24ea57c..8f6d2766bf4 100644 --- a/src/core/core.interaction.js +++ b/src/core/core.interaction.js @@ -278,7 +278,6 @@ module.exports = { var position = getRelativePosition(e, chart); var items = []; var intersectsItem = false; - var j; parseVisibleItems(chart, function(element) { if (element.datasetlength < 40) { @@ -290,13 +289,10 @@ module.exports = { items.push(element); // Cleanup extra elements if (items.length > 1) { - for (j = 1; j <= items.length; j++) { - items.splice(j, 1); - } + items.splice(1, items.length); } } } - if (element.inRange(position.x, position.y)) { intersectsItem = true; } @@ -307,7 +303,6 @@ module.exports = { if (options.intersect && !intersectsItem) { items = []; } - return items; }, From c98e53338d97ee5942b68c635684995809e56e2c Mon Sep 17 00:00:00 2001 From: Michael Date: Sun, 8 Apr 2018 16:05:41 -0400 Subject: [PATCH 3/3] Removes xRangeSmall and datapoint check --- src/core/core.interaction.js | 16 +++++----------- src/elements/element.point.js | 6 ------ 2 files changed, 5 insertions(+), 17 deletions(-) diff --git a/src/core/core.interaction.js b/src/core/core.interaction.js index 8f6d2766bf4..84073b0ed35 100644 --- a/src/core/core.interaction.js +++ b/src/core/core.interaction.js @@ -280,17 +280,11 @@ module.exports = { var intersectsItem = false; parseVisibleItems(chart, function(element) { - if (element.datasetlength < 40) { - if (element.inXRange(position.x)) { - items.push(element); - } - } else if (element.datasetlength >= 40) { - if (element.inXRangeSmall(position.x)) { - items.push(element); - // Cleanup extra elements - if (items.length > 1) { - items.splice(1, items.length); - } + if (element.inXRange(position.x)) { + items.push(element); + // Cleanup extra elements + if (items.length > 1) { + items.splice(1, items.length); } } if (element.inRange(position.x, position.y)) { diff --git a/src/elements/element.point.js b/src/elements/element.point.js index 8a086a338c9..7d9a6a38d32 100644 --- a/src/elements/element.point.js +++ b/src/elements/element.point.js @@ -23,11 +23,6 @@ defaults._set('global', { }); function xRange(mouseX) { - var vm = this._view; - return vm ? (Math.abs(mouseX - vm.x) < vm.radius + vm.hitRadius) : false; -} - -function xRangeSmall(mouseX) { var vm = this._view; return vm ? (Math.abs(mouseX - vm.x) < 2) : false; } @@ -45,7 +40,6 @@ module.exports = Element.extend({ inLabelRange: xRange, inXRange: xRange, - inXRangeSmall: xRangeSmall, inYRange: yRange, getCenterPoint: function() {