From c4d02a8f9696f547340727ce8663d9eee71ec906 Mon Sep 17 00:00:00 2001 From: Pascoual Date: Tue, 10 Nov 2015 00:53:08 +0100 Subject: [PATCH] Fix: no tooltips when missing data for one or more dataset --- src/core/core.controller.js | 6 ++++-- src/core/core.tooltip.js | 36 +++++++++++++++++++++--------------- 2 files changed, 25 insertions(+), 17 deletions(-) diff --git a/src/core/core.controller.js b/src/core/core.controller.js index 8c46fd4df..1d3e42ccb 100644 --- a/src/core/core.controller.js +++ b/src/core/core.controller.js @@ -439,7 +439,8 @@ case 'label': case 'dataset': for (var i = 0; i < this.lastActive.length; i++) { - this.data.datasets[this.lastActive[i]._datasetIndex].controller.removeHoverStyle(this.lastActive[i], this.lastActive[i]._datasetIndex, this.lastActive[i]._index); + if (this.lastActive[i]) + this.data.datasets[this.lastActive[i]._datasetIndex].controller.removeHoverStyle(this.lastActive[i], this.lastActive[i]._datasetIndex, this.lastActive[i]._index); } break; default: @@ -456,7 +457,8 @@ case 'label': case 'dataset': for (var j = 0; j < this.active.length; j++) { - this.data.datasets[this.active[j]._datasetIndex].controller.setHoverStyle(this.active[j]); + if (this.active[j]) + this.data.datasets[this.active[j]._datasetIndex].controller.setHoverStyle(this.active[j]); } break; default: diff --git a/src/core/core.tooltip.js b/src/core/core.tooltip.js index 03b833dff..9b87df388 100644 --- a/src/core/core.tooltip.js +++ b/src/core/core.tooltip.js @@ -203,9 +203,11 @@ var yPositions = []; helpers.each(elements, function(el){ - var pos = el.tooltipPosition(); - xPositions.push(pos.x); - yPositions.push(pos.y); + if(el) { + var pos = el.tooltipPosition(); + xPositions.push(pos.x); + yPositions.push(pos.y); + } }); var x = 0, y = 0; @@ -249,21 +251,25 @@ return; } var currentElement = dataset.metaData[element._index]; - var yScale = element._yScale || element._scale; // handle radar || polarArea charts - - tooltipItems.push({ - xLabel: currentElement._xScale ? currentElement._xScale.getLabelForIndex(currentElement._index, currentElement._datasetIndex) : '', - yLabel: yScale ? yScale.getLabelForIndex(currentElement._index, currentElement._datasetIndex) : '', - index: element._index, - datasetIndex: datasetIndex, - }); + if (currentElement) { + var yScale = element._yScale || element._scale; // handle radar || polarArea charts + + tooltipItems.push({ + xLabel: currentElement._xScale ? currentElement._xScale.getLabelForIndex(currentElement._index, currentElement._datasetIndex) : '', + yLabel: yScale ? yScale.getLabelForIndex(currentElement._index, currentElement._datasetIndex) : '', + index: element._index, + datasetIndex: datasetIndex, + }); + } }); helpers.each(this._active, function(active, i) { - labelColors.push({ - borderColor: active._view.borderColor, - backgroundColor: active._view.backgroundColor - }); + if (active) { + labelColors.push({ + borderColor: active._view.borderColor, + backgroundColor: active._view.backgroundColor + }); + } }, this); tooltipPosition = this.getAveragePosition(this._active); -- 2.47.3