Skip to content

Commit aa3e4c4

Browse files
kurkleetimberg
authored andcommitted
Tooltip label and value via controller (#6744)
1 parent 931d686 commit aa3e4c4

File tree

6 files changed

+73
-11
lines changed

6 files changed

+73
-11
lines changed

src/controllers/controller.bar.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,25 @@ module.exports = DatasetController.extend({
239239
return parsed;
240240
},
241241

242+
/**
243+
* @private
244+
*/
245+
_getLabelAndValue: function(index) {
246+
const me = this;
247+
const indexScale = me._getIndexScale();
248+
const valueScale = me._getValueScale();
249+
const parsed = me._getParsed(index);
250+
const custom = parsed._custom;
251+
const value = custom
252+
? '[' + custom.start + ', ' + custom.end + ']'
253+
: '' + valueScale.getLabelForValue(parsed[valueScale.id]);
254+
255+
return {
256+
label: '' + indexScale.getLabelForValue(parsed[indexScale.id]),
257+
value: value
258+
};
259+
},
260+
242261
initialize: function() {
243262
var me = this;
244263
var meta;

src/controllers/controller.bubble.js

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,6 @@ defaults._set('bubble', {
2727
title: function() {
2828
// Title doesn't make sense for scatter since we format the data as a point
2929
return '';
30-
},
31-
label: function(item, data) {
32-
var datasetLabel = data.datasets[item.datasetIndex].label || '';
33-
var dataPoint = data.datasets[item.datasetIndex].data[item.index] || {r: '?'};
34-
return datasetLabel + ': (' + item.label + ', ' + item.value + ', ' + dataPoint.r + ')';
3530
}
3631
}
3732
}
@@ -94,6 +89,25 @@ module.exports = DatasetController.extend({
9489
return Math.max(firstPoint, lastPoint) / 2;
9590
},
9691

92+
/**
93+
* @private
94+
*/
95+
_getLabelAndValue: function(index) {
96+
const me = this;
97+
const meta = me._cachedMeta;
98+
const xScale = me.getScaleForId(meta.xAxisID);
99+
const yScale = me.getScaleForId(meta.yAxisID);
100+
const parsed = me._getParsed(index);
101+
const x = xScale.getLabelForValue(parsed[xScale.id]);
102+
const y = yScale.getLabelForValue(parsed[yScale.id]);
103+
const r = parsed._custom;
104+
105+
return {
106+
label: meta.label,
107+
value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'
108+
};
109+
},
110+
97111
/**
98112
* @protected
99113
*/

src/controllers/controller.radar.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,20 @@ module.exports = DatasetController.extend({
7777
return this.chart.scale.id;
7878
},
7979

80+
/**
81+
* @private
82+
*/
83+
_getLabelAndValue: function(index) {
84+
const me = this;
85+
const scale = me._getValueScale();
86+
const parsed = me._getParsed(index);
87+
88+
return {
89+
label: scale._getLabels()[index],
90+
value: '' + scale.getLabelForValue(parsed[scale.id])
91+
};
92+
},
93+
8094
update: function(reset) {
8195
var me = this;
8296
var meta = me.getMeta();

src/core/core.controller.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -432,6 +432,7 @@ helpers.extend(Chart.prototype, /** @lends Chart */ {
432432
meta.type = type;
433433
meta.order = dataset.order || 0;
434434
meta.index = i;
435+
meta.label = '' + dataset.label;
435436

436437
if (meta.controller) {
437438
meta.controller.updateIndex(i);

src/core/core.datasetController.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -717,6 +717,23 @@ helpers.extend(DatasetController.prototype, {
717717
return false;
718718
},
719719

720+
/**
721+
* @private
722+
*/
723+
_getLabelAndValue: function(index) {
724+
const me = this;
725+
const indexScale = me._getIndexScale();
726+
const valueScale = me._getValueScale();
727+
const parsed = me._getParsed(index);
728+
return {
729+
label: indexScale ? '' + indexScale.getLabelForValue(parsed[indexScale.id]) : '',
730+
value: valueScale ? '' + valueScale.getLabelForValue(parsed[valueScale.id]) : ''
731+
};
732+
},
733+
734+
/**
735+
* @private
736+
*/
720737
_update: function(reset) {
721738
var me = this;
722739
me._configure();

src/core/core.tooltip.js

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -206,14 +206,11 @@ function splitNewlines(str) {
206206
*/
207207
function createTooltipItem(chart, item) {
208208
const {datasetIndex, element, index} = item;
209-
const controller = chart.getDatasetMeta(datasetIndex).controller;
210-
const indexScale = controller._getIndexScale();
211-
const valueScale = controller._getValueScale();
212-
const parsed = controller._getParsed(index);
209+
const {label, value} = chart.getDatasetMeta(datasetIndex).controller._getLabelAndValue(index);
213210

214211
return {
215-
label: indexScale ? '' + indexScale.getLabelForValue(parsed[indexScale.id]) : '',
216-
value: valueScale ? '' + valueScale.getLabelForValue(parsed[valueScale.id]) : '',
212+
label: label,
213+
value: value,
217214
index: index,
218215
datasetIndex: datasetIndex,
219216
x: element._model.x,

0 commit comments

Comments
 (0)