From: Tanner Linsley Date: Mon, 2 Nov 2015 05:43:44 +0000 (-0700) Subject: Tooltip's label mode now uses average position of all points X-Git-Tag: 2.0.0-beta1~33^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d46524aedc5c5ec9baab077b89af2ffdcbbc3a13;p=thirdparty%2FChart.js.git Tooltip's label mode now uses average position of all points --- diff --git a/src/core/core.tooltip.js b/src/core/core.tooltip.js index b93bbe17b..03b833dff 100644 --- a/src/core/core.tooltip.js +++ b/src/core/core.tooltip.js @@ -193,6 +193,34 @@ return lines; }, + getAveragePosition: function(elements){ + + if(!elements.length){ + return false; + } + + var xPositions = []; + var yPositions = []; + + helpers.each(elements, function(el){ + var pos = el.tooltipPosition(); + xPositions.push(pos.x); + yPositions.push(pos.y); + }); + + var x = 0, y = 0; + for (var i = 0; i < xPositions.length; i++) { + x += xPositions[i]; + y += yPositions[i]; + } + + return { + x: Math.round(x / xPositions.length), + y: Math.round(y / xPositions.length) + }; + + }, + update: function(changed) { var ctx = this._chart.ctx; @@ -214,7 +242,7 @@ index: element._index, datasetIndex: element._datasetIndex, }); - tooltipPosition = this._active[0].tooltipPosition(); + tooltipPosition = this.getAveragePosition(this._active); } else { helpers.each(this._data.datasets, function(dataset, datasetIndex) { if (!helpers.isDatasetVisible(dataset)) { @@ -238,7 +266,7 @@ }); }, this); - tooltipPosition = this._active[0].tooltipPosition(); + tooltipPosition = this.getAveragePosition(this._active); tooltipPosition.y = this._active[0]._yScale.getPixelForDecimal(0.5); }