Skip to content

Commit b637179

Browse files
committed
add fillHoverText routine
- which handles calc/trace-wide 'hovertext'/'text' precedence logic - use it in hover.js modules
1 parent bc8294d commit b637179

File tree

5 files changed

+44
-29
lines changed

5 files changed

+44
-29
lines changed

src/traces/bar/hover.js

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
var Fx = require('../../components/fx');
1313
var ErrorBars = require('../../components/errorbars');
1414
var Color = require('../../components/color');
15-
15+
var fillHoverText = require('../scatter/fill_hover_text');
1616

1717
module.exports = function hoverPoints(pointData, xval, yval, hovermode) {
1818
var cd = pointData.cd;
@@ -99,11 +99,7 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode) {
9999
pointData.xLabelVal = di.p;
100100
}
101101

102-
if(di.htx) pointData.text = di.htx;
103-
else if(trace.hovertext) pointData.text = trace.hovertext;
104-
else if(di.tx) pointData.text = di.tx;
105-
else if(trace.text) pointData.text = trace.text;
106-
102+
fillHoverText(di, trace, pointData);
107103
ErrorBars.hoverInfo(di, trace, pointData);
108104

109105
return [pointData];

src/traces/scatter/fill_hover_text.js

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
/**
2+
* Copyright 2012-2017, Plotly, Inc.
3+
* All rights reserved.
4+
*
5+
* This source code is licensed under the MIT license found in the
6+
* LICENSE file in the root directory of this source tree.
7+
*/
8+
9+
'use strict';
10+
11+
var Lib = require('../../lib');
12+
13+
/** Fill hover 'pointData' container with 'correct' hover text value
14+
*
15+
* - If trace hoverinfo contains a 'text' flag and hovertext is not set,
16+
* the text elements will be seen in the hover labels.
17+
*
18+
* - If trace hoverinfo contains a 'text' flag and hovertext is set,
19+
* hovertext takes precedence over text
20+
* i.e. the hoverinfo elements will be seen in the hover labels
21+
*
22+
* @param {object} calcPt
23+
* @param {object} trace
24+
* @param {object || array} contOut (mutated here)
25+
*/
26+
module.exports = function fillHoverText(calcPt, trace, contOut) {
27+
var fill = Array.isArray(contOut) ?
28+
function(v) { contOut.push(v); } :
29+
function(v) { contOut.text = v; };
30+
31+
var htx = Lib.extractOption(calcPt, trace, 'htx', 'hovertext');
32+
if(htx && htx !== '') return fill(htx);
33+
34+
var tx = Lib.extractOption(calcPt, trace, 'tx', 'text');
35+
if(tx && tx !== '') return fill(tx);
36+
};

src/traces/scatter/hover.js

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@
66
* LICENSE file in the root directory of this source tree.
77
*/
88

9-
109
'use strict';
1110

1211
var Lib = require('../../lib');
1312
var Fx = require('../../components/fx');
1413
var ErrorBars = require('../../components/errorbars');
1514
var getTraceColor = require('./get_trace_color');
1615
var Color = require('../../components/color');
16+
var fillHoverText = require('./fill_hover_text');
1717

1818
var MAXDIST = Fx.constants.MAXDIST;
1919

@@ -73,11 +73,7 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode) {
7373
yLabelVal: di.y
7474
});
7575

76-
if(di.htx) pointData.text = di.htx;
77-
else if(trace.hovertext) pointData.text = trace.hovertext;
78-
else if(di.tx) pointData.text = di.tx;
79-
else if(trace.text) pointData.text = trace.text;
80-
76+
fillHoverText(di, trace, pointData);
8177
ErrorBars.hoverInfo(di, trace, pointData);
8278

8379
return [pointData];

src/traces/scattergeo/hover.js

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ var Axes = require('../../plots/cartesian/axes');
1414
var BADNUM = require('../../constants/numerical').BADNUM;
1515

1616
var getTraceColor = require('../scatter/get_trace_color');
17+
var fillHoverText = require('../scatter/fill_hover_text');
1718
var attributes = require('./attributes');
1819

19-
2020
module.exports = function hoverPoints(pointData, xval, yval) {
2121
var cd = pointData.cd;
2222
var trace = cd[0].trace;
@@ -98,14 +98,7 @@ function getExtraText(trace, pt, axis) {
9898
}
9999

100100
if(hasText) {
101-
var tx;
102-
103-
if(pt.htx) tx = pt.htx;
104-
else if(trace.hovertext) tx = trace.hovertext;
105-
else if(pt.tx) tx = pt.tx;
106-
else if(trace.text) tx = trace.text;
107-
108-
if(!Array.isArray(tx)) text.push(tx);
101+
fillHoverText(pt, trace, text);
109102
}
110103

111104
return text.join('<br>');

src/traces/scattermapbox/hover.js

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
var Fx = require('../../components/fx');
1313
var getTraceColor = require('../scatter/get_trace_color');
14+
var fillHoverText = require('../scatter/fill_hover_text');
1415
var BADNUM = require('../../constants/numerical').BADNUM;
1516

1617
module.exports = function hoverPoints(pointData, xval, yval) {
@@ -90,14 +91,7 @@ function getExtraText(trace, di) {
9091
}
9192

9293
if(isAll || parts.indexOf('text') !== -1) {
93-
var tx;
94-
95-
if(di.htx) tx = di.htx;
96-
else if(trace.hovertext) tx = trace.hovertext;
97-
else if(di.tx) tx = di.tx;
98-
else if(trace.text) tx = trace.text;
99-
100-
if(!Array.isArray(tx)) text.push(tx);
94+
fillHoverText(di, trace, text);
10195
}
10296

10397
return text.join('<br>');

0 commit comments

Comments
 (0)