@@ -115,18 +115,34 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
115115
116116 var bgColor = Color . combine ( plot_bgcolor , layoutOut . paper_bgcolor ) ;
117117
118- var axLayoutIn , axLayoutOut ;
118+ var axName , axLayoutIn , axLayoutOut ;
119119
120120 function coerce ( attr , dflt ) {
121121 return Lib . coerce ( axLayoutIn , axLayoutOut , layoutAttributes , attr , dflt ) ;
122122 }
123123
124- axesList . forEach ( function ( axName ) {
125- var axLetter = axName . charAt ( 0 ) ;
124+ function getCounterAxes ( axLetter ) {
125+ var list = { x : yaList , y : xaList } [ axLetter ] ;
126+
127+ return list . map ( axisIds . name2id ) ;
128+ }
129+
130+ function getOverlayableAxes ( axLetter , axName ) {
131+ var list = { x : xaList , y : yaList } [ axLetter ] ;
132+
133+ return list . filter ( function ( axName2 ) {
134+ return axName2 !== axName && ! ( layoutIn [ axName2 ] || { } ) . overlaying ;
135+ } )
136+ . map ( axisIds . name2id ) ;
137+ }
126138
139+ for ( i = 0 ; i < axesList . length ; i ++ ) {
140+ axName = axesList [ i ] ;
127141 axLayoutIn = layoutIn [ axName ] || { } ;
128142 axLayoutOut = { } ;
129143
144+ var axLetter = axName . charAt ( 0 ) ;
145+
130146 var defaultOptions = {
131147 letter : axLetter ,
132148 font : layoutOut . font ,
@@ -142,10 +158,8 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
142158
143159 var positioningOptions = {
144160 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 )
161+ counterAxes : getCounterAxes ( axLetter ) ,
162+ overlayableAxes : getOverlayableAxes ( axLetter , axName )
149163 } ;
150164
151165 handlePositionDefaults ( axLayoutIn , axLayoutOut , coerce , positioningOptions ) ;
@@ -157,14 +171,14 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
157171 if ( ! layoutIn [ axName ] && axLayoutIn . type !== '-' ) {
158172 layoutIn [ axName ] = { type : axLayoutIn . type } ;
159173 }
160-
161- } ) ;
174+ }
162175
163176 // quick second pass for range slider and selector defaults
164177 var rangeSliderDefaults = Registry . getComponentMethod ( 'rangeslider' , 'handleDefaults' ) ,
165178 rangeSelectorDefaults = Registry . getComponentMethod ( 'rangeselector' , 'handleDefaults' ) ;
166179
167- xaList . forEach ( function ( axName ) {
180+ for ( i = 0 ; i < xaList . length ; i ++ ) {
181+ axName = xaList [ i ] ;
168182 axLayoutIn = layoutIn [ axName ] ;
169183 axLayoutOut = layoutOut [ axName ] ;
170184
@@ -181,9 +195,10 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
181195 }
182196
183197 coerce ( 'fixedrange' ) ;
184- } ) ;
198+ }
185199
186- yaList . forEach ( function ( axName ) {
200+ for ( i = 0 ; i < yaList . length ; i ++ ) {
201+ axName = yaList [ i ] ;
187202 axLayoutIn = layoutIn [ axName ] ;
188203 axLayoutOut = layoutOut [ axName ] ;
189204
@@ -196,5 +211,5 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
196211 ) ;
197212
198213 coerce ( 'fixedrange' , fixedRangeDflt ) ;
199- } ) ;
214+ }
200215} ;
0 commit comments