Skip to content

Commit cd5f09f

Browse files
committed
replace pie helpers with ax ticktext - fixup and added tests
1 parent a2e6e5b commit cd5f09f

File tree

5 files changed

+169
-13
lines changed

5 files changed

+169
-13
lines changed

src/traces/bar/plot.js

+20-12
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,13 @@ var svgTextUtils = require('../../lib/svg_text_utils');
1818
var Color = require('../../components/color');
1919
var Drawing = require('../../components/drawing');
2020
var Registry = require('../../registry');
21+
var tickText = require('../../plots/cartesian/axes').tickText;
2122

2223
var attributes = require('./attributes');
2324
var attributeText = attributes.text;
2425
var attributeTextPosition = attributes.textposition;
2526
var style = require('./style');
2627
var helpers = require('./helpers');
27-
var pieHelpers = require('../pie/helpers');
2828

2929
// padding in pixels around text
3030
var TEXTPAD = 3;
@@ -175,6 +175,9 @@ module.exports = function plot(gd, plotinfo, cdModule, traceLayer) {
175175
};
176176

177177
function appendBarText(gd, plotinfo, bar, calcTrace, i, x0, x1, y0, y1) {
178+
var xa = plotinfo.xaxis;
179+
var ya = plotinfo.yaxis;
180+
178181
var fullLayout = gd._fullLayout;
179182
var textPosition;
180183

@@ -199,7 +202,7 @@ function appendBarText(gd, plotinfo, bar, calcTrace, i, x0, x1, y0, y1) {
199202
var trace = calcTrace[0].trace;
200203
var orientation = trace.orientation;
201204

202-
var text = getText(calcTrace, i, fullLayout);
205+
var text = getText(calcTrace, i, xa, ya);
203206
textPosition = getTextPosition(trace, i);
204207

205208
// compute text position
@@ -225,7 +228,6 @@ function appendBarText(gd, plotinfo, bar, calcTrace, i, x0, x1, y0, y1) {
225228
// so that we can get correctly inside text scaling
226229
var di = bar.datum();
227230
if(orientation === 'h') {
228-
var xa = plotinfo.xaxis;
229231
if(xa.type === 'log' && di.s0 <= 0) {
230232
if(xa.range[0] < xa.range[1]) {
231233
x0 = 0;
@@ -234,7 +236,6 @@ function appendBarText(gd, plotinfo, bar, calcTrace, i, x0, x1, y0, y1) {
234236
}
235237
}
236238
} else {
237-
var ya = plotinfo.yaxis;
238239
if(ya.type === 'log' && di.s0 <= 0) {
239240
if(ya.range[0] < ya.range[1]) {
240241
y0 = ya._length;
@@ -470,14 +471,14 @@ function getTransform(textX, textY, targetX, targetY, scale, rotate) {
470471
return transformTranslate + transformScale + transformRotate;
471472
}
472473

473-
function getText(calcTrace, index, fullLayout) {
474+
function getText(calcTrace, index, xa, ya) {
474475
var trace = calcTrace[0].trace;
475476

476477
var value;
477478
if(!trace.textinfo || trace.textinfo === 'none') {
478479
value = helpers.getValue(trace.text, index);
479480
} else {
480-
value = calcTextinfo(calcTrace, index, fullLayout);
481+
value = calcTextinfo(calcTrace, index, xa, ya);
481482
}
482483

483484
return helpers.coerceString(attributeText, value);
@@ -488,19 +489,26 @@ function getTextPosition(trace, index) {
488489
return helpers.coerceEnumerated(attributeTextPosition, value);
489490
}
490491

491-
function calcTextinfo(calcTrace, index, fullLayout) {
492+
function calcTextinfo(calcTrace, index, xa, ya) {
492493
var trace = calcTrace[0].trace;
494+
var isHorizontal = (trace.orientation === 'h');
495+
496+
function formatNumber(v) {
497+
var sAxis = isHorizontal ? xa : ya;
498+
var hover = false;
499+
return tickText(sAxis, +v, hover).text;
500+
}
501+
493502
var textinfo = trace.textinfo;
494503
var cdi = calcTrace[index];
495504

496-
var separators = fullLayout.separators;
497505
var parts = textinfo.split('+');
498506
var text = [];
499507

500508
var hasFlag = function(flag) { return parts.indexOf(flag) !== -1; };
501509

502510
if(hasFlag('label')) {
503-
if(trace.orientation === 'h') {
511+
if(isHorizontal) {
504512
text.push(trace.y[index]);
505513
} else {
506514
text.push(trace.x[index]);
@@ -517,9 +525,9 @@ function calcTextinfo(calcTrace, index, fullLayout) {
517525
var final = cdi.v;
518526
var initial = final - delta;
519527

520-
if(hasFlag('initial')) text.push(pieHelpers.formatPieValue(initial, separators));
521-
if(hasFlag('delta')) text.push(pieHelpers.formatPieValue(delta, separators));
522-
if(hasFlag('final')) text.push(pieHelpers.formatPieValue(final, separators));
528+
if(hasFlag('initial')) text.push(formatNumber(initial));
529+
if(hasFlag('delta')) text.push(formatNumber(delta));
530+
if(hasFlag('final')) text.push(formatNumber(final));
523531
}
524532

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

src/traces/waterfall/calc.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ module.exports = function calc(gd, trace) {
8989
cdi.id = String(trace.ids[i]);
9090
}
9191

92-
cdi.v = trace.base + previousSum;
92+
cdi.v = (trace.base || 0) + previousSum;
9393
}
9494

9595
if(cd.length) cd[0].hasTotals = hasTotals;
52.3 KB
Loading
Loading

test/image/mocks/waterfall_axis.json

+148
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
{
2+
"data": [
3+
{
4+
"type": "waterfall",
5+
"orientation": "v",
6+
"x": [
7+
"A",
8+
"B",
9+
"C"
10+
],
11+
"y": [
12+
5,
13+
-4,
14+
3
15+
],
16+
"measure": [ "a", "r", "r"],
17+
"textposition": "auto",
18+
"textinfo": "initial+delta+final",
19+
"xaxis": "x",
20+
"yaxis": "y"
21+
},
22+
{
23+
"type": "waterfall",
24+
"orientation": "v",
25+
"x": [
26+
"A",
27+
"B",
28+
"C"
29+
],
30+
"y": [
31+
500,
32+
-400,
33+
300
34+
],
35+
"base": 100,
36+
"measure": [ "a", "r", "r"],
37+
"textposition": "auto",
38+
"textinfo": "initial+delta+final",
39+
"xaxis": "x2",
40+
"yaxis": "y2"
41+
},
42+
{
43+
"type": "waterfall",
44+
"orientation": "h",
45+
"x": [
46+
50000,
47+
-40000,
48+
30000
49+
],
50+
"y": [
51+
"A",
52+
"B",
53+
"C"
54+
],
55+
"base": 10000,
56+
"measure": [ "a", "r", "r"],
57+
"textposition": "auto",
58+
"textinfo": "initial+delta+final",
59+
"xaxis": "x3",
60+
"yaxis": "y3"
61+
},
62+
{
63+
"type": "waterfall",
64+
"orientation": "h",
65+
"x": [
66+
5000000,
67+
-4000000,
68+
3000000
69+
],
70+
"y": [
71+
"A",
72+
"B",
73+
"C"
74+
],
75+
"base": 1000000,
76+
"measure": [ "a", "r", "r"],
77+
"textposition": "auto",
78+
"textinfo": "initial+delta+final",
79+
"xaxis": "x4",
80+
"yaxis": "y4"
81+
}
82+
],
83+
"layout": {
84+
"width": 800,
85+
"height": 800,
86+
"dragmode": "pan",
87+
"xaxis": {
88+
"type": "category",
89+
"domain": [
90+
0,
91+
0.48
92+
],
93+
"autorange": true
94+
},
95+
"xaxis2": {
96+
"type": "category",
97+
"domain": [
98+
0.52,
99+
1
100+
],
101+
"autorange": "reversed"
102+
},
103+
"xaxis3": {
104+
"domain": [
105+
0,
106+
0.48
107+
],
108+
"autorange": true
109+
},
110+
"xaxis4": {
111+
"domain": [
112+
0.52,
113+
1
114+
],
115+
"autorange": "reversed"
116+
},
117+
"yaxis": {
118+
"domain": [
119+
0,
120+
0.48
121+
],
122+
"autorange": "reversed"
123+
},
124+
"yaxis2": {
125+
"domain": [
126+
0.52,
127+
1
128+
],
129+
"autorange": true
130+
},
131+
"yaxis3": {
132+
"type": "category",
133+
"domain": [
134+
0.52,
135+
1
136+
],
137+
"autorange": "reversed"
138+
},
139+
"yaxis4": {
140+
"type": "category",
141+
"domain": [
142+
0,
143+
0.48
144+
],
145+
"autorange": true
146+
}
147+
}
148+
}

0 commit comments

Comments
 (0)