Skip to content

Commit 5829a0a

Browse files
committed
reorg cartesian layout defaults:
- define scoped coerce function once for all axes - only loop over xaxis list for rangeslider / rangeselector defaults
1 parent b823573 commit 5829a0a

File tree

1 file changed

+42
-33
lines changed

1 file changed

+42
-33
lines changed

src/plots/cartesian/layout_defaults.js

Lines changed: 42 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -115,33 +115,39 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
115115

116116
var bgColor = Color.combine(plot_bgcolor, layoutOut.paper_bgcolor);
117117

118+
var axLayoutIn, axLayoutOut;
119+
120+
function coerce(attr, dflt) {
121+
return Lib.coerce(axLayoutIn, axLayoutOut, layoutAttributes, attr, dflt);
122+
}
123+
118124
axesList.forEach(function(axName) {
119-
var axLetter = axName.charAt(0),
120-
axLayoutIn = layoutIn[axName] || {},
121-
axLayoutOut = {},
122-
defaultOptions = {
123-
letter: axLetter,
124-
font: layoutOut.font,
125-
outerTicks: outerTicks[axName],
126-
showGrid: !noGrids[axName],
127-
name: axName,
128-
data: fullData,
129-
bgColor: bgColor,
130-
calendar: layoutOut.calendar
131-
},
132-
positioningOptions = {
133-
letter: axLetter,
134-
counterAxes: {x: yaList, y: xaList}[axLetter].map(axisIds.name2id),
135-
overlayableAxes: {x: xaList, y: yaList}[axLetter].filter(function(axName2) {
136-
return axName2 !== axName && !(layoutIn[axName2] || {}).overlaying;
137-
}).map(axisIds.name2id)
138-
};
139-
140-
function coerce(attr, dflt) {
141-
return Lib.coerce(axLayoutIn, axLayoutOut, layoutAttributes, attr, dflt);
142-
}
125+
var axLetter = axName.charAt(0);
126+
127+
axLayoutIn = layoutIn[axName] || {};
128+
axLayoutOut = {};
129+
130+
var defaultOptions = {
131+
letter: axLetter,
132+
font: layoutOut.font,
133+
outerTicks: outerTicks[axName],
134+
showGrid: !noGrids[axName],
135+
name: axName,
136+
data: fullData,
137+
bgColor: bgColor,
138+
calendar: layoutOut.calendar
139+
};
143140

144141
handleAxisDefaults(axLayoutIn, axLayoutOut, coerce, defaultOptions, layoutOut);
142+
143+
var positioningOptions = {
144+
letter: axLetter,
145+
counterAxes: {x: yaList, y: xaList}[axLetter].map(axisIds.name2id),
146+
overlayableAxes: {x: xaList, y: yaList}[axLetter].filter(function(axName2) {
147+
return axName2 !== axName && !(layoutIn[axName2] || {}).overlaying;
148+
}).map(axisIds.name2id)
149+
};
150+
145151
handlePositionDefaults(axLayoutIn, axLayoutOut, coerce, positioningOptions);
146152

147153
layoutOut[axName] = axLayoutOut;
@@ -158,17 +164,20 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
158164
var rangeSliderDefaults = Registry.getComponentMethod('rangeslider', 'handleDefaults'),
159165
rangeSelectorDefaults = Registry.getComponentMethod('rangeselector', 'handleDefaults');
160166

161-
axesList.forEach(function(axName) {
162-
var axLetter = axName.charAt(0),
163-
axLayoutIn = layoutIn[axName],
164-
axLayoutOut = layoutOut[axName],
165-
counterAxes = {x: yaList, y: xaList}[axLetter];
167+
xaList.forEach(function(axName) {
168+
axLayoutIn = layoutIn[axName];
169+
axLayoutOut = layoutOut[axName];
166170

167-
rangeSliderDefaults(layoutIn, layoutOut, axName, counterAxes);
171+
rangeSliderDefaults(layoutIn, layoutOut, axName);
168172

169-
if(axLetter === 'x' && axLayoutOut.type === 'date') {
170-
rangeSelectorDefaults(axLayoutIn, axLayoutOut, layoutOut, counterAxes,
171-
axLayoutOut.calendar);
173+
if(axLayoutOut.type === 'date') {
174+
rangeSelectorDefaults(
175+
axLayoutIn,
176+
axLayoutOut,
177+
layoutOut,
178+
yaList,
179+
axLayoutOut.calendar
180+
);
172181
}
173182
});
174183
};

0 commit comments

Comments
 (0)