From: Pascoual Date: Mon, 9 Nov 2015 23:53:08 +0000 (+0100) Subject: Fix: no tooltips when missing data for one or more dataset X-Git-Tag: 2.0.0-beta1~27^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c4d02a8f9696f547340727ce8663d9eee71ec906;p=thirdparty%2FChart.js.git Fix: no tooltips when missing data for one or more dataset --- 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);