Skip to content

Commit 67eda75

Browse files
committed
move legend defaults to own module
1 parent b3af445 commit 67eda75

File tree

2 files changed

+71
-54
lines changed

2 files changed

+71
-54
lines changed

src/components/legend/defaults.js

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
/**
2+
* Copyright 2012-2016, 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+
10+
'use strict';
11+
12+
var Lib = require('../../lib');
13+
var Plots = require('../../plots/plots');
14+
15+
var attributes = require('./attributes');
16+
var helpers = require('./helpers');
17+
18+
19+
module.exports = function legendDefaults(layoutIn, layoutOut, fullData) {
20+
var containerIn = layoutIn.legend || {},
21+
containerOut = layoutOut.legend = {};
22+
23+
var visibleTraces = 0,
24+
defaultOrder = 'normal',
25+
trace;
26+
27+
for(var i = 0; i < fullData.length; i++) {
28+
trace = fullData[i];
29+
30+
if(helpers.legendGetsTrace(trace)) {
31+
visibleTraces++;
32+
// always show the legend by default if there's a pie
33+
if(Plots.traceIs(trace, 'pie')) visibleTraces++;
34+
}
35+
36+
if((Plots.traceIs(trace, 'bar') && layoutOut.barmode==='stack') ||
37+
['tonextx','tonexty'].indexOf(trace.fill)!==-1) {
38+
defaultOrder = helpers.isGrouped({traceorder: defaultOrder}) ?
39+
'grouped+reversed' : 'reversed';
40+
}
41+
42+
if(trace.legendgroup !== undefined && trace.legendgroup !== '') {
43+
defaultOrder = helpers.isReversed({traceorder: defaultOrder}) ?
44+
'reversed+grouped' : 'grouped';
45+
}
46+
}
47+
48+
function coerce(attr, dflt) {
49+
return Lib.coerce(containerIn, containerOut, attributes, attr, dflt);
50+
}
51+
52+
var showLegend = Lib.coerce(layoutIn, layoutOut,
53+
Plots.layoutAttributes, 'showlegend', visibleTraces > 1);
54+
55+
if(showLegend === false) return;
56+
57+
coerce('bgcolor', layoutOut.paper_bgcolor);
58+
coerce('bordercolor');
59+
coerce('borderwidth');
60+
Lib.coerceFont(coerce, 'font', layoutOut.font);
61+
62+
coerce('traceorder', defaultOrder);
63+
if(helpers.isGrouped(layoutOut.legend)) coerce('tracegroupgap');
64+
65+
coerce('x');
66+
coerce('xanchor');
67+
coerce('y');
68+
coerce('yanchor');
69+
Lib.noneOrAll(containerIn, containerOut, ['x', 'y']);
70+
};

src/components/legend/index.js

Lines changed: 1 addition & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -28,60 +28,7 @@ var legend = module.exports = {};
2828
var constants = require('./constants');
2929
legend.layoutAttributes = require('./attributes');
3030

31-
legend.supplyLayoutDefaults = function(layoutIn, layoutOut, fullData) {
32-
var containerIn = layoutIn.legend || {},
33-
containerOut = layoutOut.legend = {};
34-
35-
var visibleTraces = 0,
36-
defaultOrder = 'normal',
37-
trace;
38-
39-
for(var i = 0; i < fullData.length; i++) {
40-
trace = fullData[i];
41-
42-
if(legendGetsTrace(trace)) {
43-
visibleTraces++;
44-
// always show the legend by default if there's a pie
45-
if(Plots.traceIs(trace, 'pie')) visibleTraces++;
46-
}
47-
48-
if((Plots.traceIs(trace, 'bar') && layoutOut.barmode==='stack') ||
49-
['tonextx','tonexty'].indexOf(trace.fill)!==-1) {
50-
defaultOrder = isGrouped({traceorder: defaultOrder}) ?
51-
'grouped+reversed' : 'reversed';
52-
}
53-
54-
if(trace.legendgroup !== undefined && trace.legendgroup !== '') {
55-
defaultOrder = isReversed({traceorder: defaultOrder}) ?
56-
'reversed+grouped' : 'grouped';
57-
}
58-
}
59-
60-
function coerce(attr, dflt) {
61-
return Lib.coerce(containerIn, containerOut,
62-
legend.layoutAttributes, attr, dflt);
63-
}
64-
65-
var showLegend = Lib.coerce(layoutIn, layoutOut,
66-
Plots.layoutAttributes, 'showlegend', visibleTraces > 1);
67-
68-
if(showLegend === false) return;
69-
70-
coerce('bgcolor', layoutOut.paper_bgcolor);
71-
coerce('bordercolor');
72-
coerce('borderwidth');
73-
Lib.coerceFont(coerce, 'font', layoutOut.font);
74-
75-
coerce('traceorder', defaultOrder);
76-
if(isGrouped(layoutOut.legend)) coerce('tracegroupgap');
77-
78-
coerce('x');
79-
coerce('xanchor');
80-
coerce('y');
81-
coerce('yanchor');
82-
Lib.noneOrAll(containerIn, containerOut, ['x', 'y']);
83-
};
84-
31+
legend.supplyLayoutDefaults = require('./defaults');
8532
// -----------------------------------------------------
8633
// styling functions for traces in legends.
8734
// same functions for styling traces in the popovers

0 commit comments

Comments
 (0)