Skip to content

Commit 484f21b

Browse files
committed
change the way layout.barcornerradius is handled
1 parent 5dfd686 commit 484f21b

File tree

3 files changed

+68
-39
lines changed

3 files changed

+68
-39
lines changed

Diff for: src/traces/bar/defaults.js

+11-8
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ function supplyDefaults(traceIn, traceOut, defaultColor, layout) {
4747
});
4848

4949
handleStyleDefaults(traceIn, traceOut, coerce, defaultColor, layout);
50-
50+
coerce('marker.cornerradius');
5151
var lineColor = (traceOut.marker.line || {}).color;
5252

5353
// override defaultColor for error bars with defaultLine
@@ -61,16 +61,19 @@ function supplyDefaults(traceIn, traceOut, defaultColor, layout) {
6161
function crossTraceDefaults(fullData, fullLayout) {
6262
var traceIn, traceOut;
6363

64-
function coerce(attr) {
65-
return Lib.coerce(traceOut._input, traceOut, attributes, attr);
64+
function coerce(attr, dflt) {
65+
return Lib.coerce(traceOut._input, traceOut, attributes, attr, dflt);
6666
}
6767

68-
if(fullLayout.barmode === 'group') {
69-
for(var i = 0; i < fullData.length; i++) {
70-
traceOut = fullData[i];
68+
for(var i = 0; i < fullData.length; i++) {
69+
traceOut = fullData[i];
7170

72-
if(traceOut.type === 'bar') {
73-
traceIn = traceOut._input;
71+
if(traceOut.type === 'bar') {
72+
traceIn = traceOut._input;
73+
// This needs to happen here rather than in handleStyleDefaults() because
74+
// it needs to happen after `layout.barcornerradius` has been coerced
75+
coerce('marker.cornerradius', fullLayout.barcornerradius);
76+
if(fullLayout.barmode === 'group') {
7477
handleGroupingDefaults(traceIn, traceOut, fullLayout, coerce);
7578
}
7679
}

Diff for: src/traces/bar/plot.js

+2-4
Original file line numberDiff line numberDiff line change
@@ -232,9 +232,7 @@ function plot(gd, plotinfo, cdModule, traceLayer, opts, makeOnCompleteCallback)
232232
y1 = fixpx(y1, y0, !isHorizontal);
233233
}
234234

235-
// Here is where bar is drawn
236-
// TODO: Implement rounded corners here
237-
235+
// Construct path string for bar
238236
function calcCornerRadius(radiusParam) {
239237
var barWidth = isHorizontal ? Math.abs(y1 - y0) : Math.abs(x1 - x0);
240238
if(!radiusParam) {
@@ -246,7 +244,7 @@ function plot(gd, plotinfo, cdModule, traceLayer, opts, makeOnCompleteCallback)
246244
return Math.max(Math.min(radiusParam, barWidth / 2), 0);
247245
}
248246
}
249-
var r = calcCornerRadius(trace.marker.cornerradius || fullLayout.barcornerradius);
247+
var r = calcCornerRadius(trace.marker.cornerradius);
250248
var bardir = isHorizontal ? Math.sign(x1 - x0) : Math.sign(y0 - y1);
251249
var cornersweep = bardir >= 0 ? 1 : 0;
252250

Diff for: test/image/mocks/bar-rounded-corners.json

+55-27
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,60 @@
11
{
22
"data": [
3-
{
4-
"x": [
5-
"giraffes",
6-
"orangutans",
7-
"monkeys",
8-
"capybaras"
9-
],
10-
"y": [20, -14, 2, 18
11-
],
12-
"type": "bar",
13-
"marker": {"cornerradius": 10}
14-
},
15-
{
16-
"y": [
17-
"giraffes",
18-
"orangutans",
19-
"monkeys",
20-
"capybaras"
21-
],
22-
"x": [20, -4, -12, 18],
23-
"type": "bar",
24-
"orientation": "h",
25-
"xaxis": "x2",
26-
"yaxis": "y2"
27-
}
28-
3+
{
4+
"x": [
5+
"giraffes",
6+
"orangutans",
7+
"monkeys",
8+
"capybaras"
9+
],
10+
"y": [20, -14, 2, 18],
11+
"type": "bar",
12+
"marker": {"cornerradius": 10}
13+
},
14+
{
15+
"y": [
16+
"giraffes",
17+
"orangutans",
18+
"monkeys",
19+
"capybaras"
20+
],
21+
"x": [20, -4, 1, 18],
22+
"type": "bar",
23+
"orientation": "h",
24+
"xaxis": "x2",
25+
"yaxis": "y2"
26+
},
27+
{
28+
"x": [
29+
"giraffes",
30+
"orangutans",
31+
"monkeys",
32+
"capybaras"
33+
],
34+
"y": [20, -14, 2, 18],
35+
"type": "bar",
36+
"marker": {"cornerradius": 10},
37+
"xaxis": "x3",
38+
"yaxis": "y3"
39+
},
40+
{
41+
"x": [
42+
"giraffes",
43+
"orangutans",
44+
"monkeys",
45+
"capybaras"
46+
],
47+
"y": [20, -14, 2, 18],
48+
"type": "bar",
49+
"marker": {"cornerradius": 10},
50+
"xaxis": "x3",
51+
"yaxis": "y3"
52+
}
2953
],
30-
"layout": {"grid": {"rows": 1, "columns": 2, "pattern": "independent"}, "barcornerradius": "30%"}
54+
"layout": {
55+
"grid": {"rows": 2, "columns": 2, "pattern": "independent"},
56+
"barmode": "stack",
57+
"barcornerradius": "50%"
58+
}
3159
}
3260

0 commit comments

Comments
 (0)