Skip to content

Commit 253212d

Browse files
authored
Merge pull request #2682 from dalle/master
Fix for number 0 treated as invalid in hover (#1)
2 parents 43d81a8 + 1113e33 commit 253212d

File tree

3 files changed

+42
-2
lines changed

3 files changed

+42
-2
lines changed

src/components/drawing/index.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -650,7 +650,7 @@ drawing.textPointStyle = function(s, trace, gd) {
650650
var p = d3.select(this);
651651
var text = Lib.extractOption(d, trace, 'tx', 'text');
652652

653-
if(!text) {
653+
if(!text && text !== 0) {
654654
p.remove();
655655
return;
656656
}

src/components/fx/hover.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -842,7 +842,7 @@ function createHoverText(hoverData, opts, gd) {
842842
else if(d.yLabel === undefined) text = d.xLabel;
843843
else text = '(' + d.xLabel + ', ' + d.yLabel + ')';
844844

845-
if(d.text && !Array.isArray(d.text)) {
845+
if((d.text || d.text === 0) && !Array.isArray(d.text)) {
846846
text += (text ? '<br>' : '') + d.text;
847847
}
848848

test/jasmine/tests/hover_label_test.js

+40
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,46 @@ describe('hover info', function() {
132132
});
133133
});
134134

135+
describe('hover info text with 0', function() {
136+
var mockCopy = Lib.extendDeep({}, mock);
137+
138+
mockCopy.data[0].text = [];
139+
// we treat number 0 as valid text
140+
// see https://github.com/plotly/plotly.js/issues/2660
141+
mockCopy.data[0].text[17] = 0;
142+
mockCopy.data[0].hoverinfo = 'text';
143+
mockCopy.data[0].mode = 'lines+markers+text';
144+
145+
beforeEach(function(done) {
146+
Plotly.plot(createGraphDiv(), mockCopy.data, mockCopy.layout).then(done);
147+
});
148+
149+
it('responds to hover text', function() {
150+
var gd = document.getElementById('graph');
151+
Fx.hover('graph', evt, 'xy');
152+
153+
var hoverTrace = gd._hoverdata[0];
154+
155+
expect(hoverTrace.curveNumber).toBe(0);
156+
expect(hoverTrace.pointNumber).toBe(17);
157+
expect(hoverTrace.x).toBe(0.388);
158+
expect(hoverTrace.y).toBe(1);
159+
expect(hoverTrace.text).toBe(0);
160+
161+
var txs = d3.select(gd).selectAll('.textpoint text');
162+
163+
expect(txs.size()).toBe(1);
164+
165+
txs.each(function() {
166+
expect(d3.select(this).text()).toBe('0');
167+
});
168+
169+
assertHoverLabelContent({
170+
nums: '0'
171+
});
172+
});
173+
});
174+
135175
describe('hover info all', function() {
136176
var mockCopy = Lib.extendDeep({}, mock);
137177

0 commit comments

Comments
 (0)