@@ -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,37 @@ 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 }
182+
183+ coerce ( 'fixedrange' ) ;
184+ } ) ;
185+
186+ yaList . forEach ( function ( axName ) {
187+ axLayoutIn = layoutIn [ axName ] ;
188+ axLayoutOut = layoutOut [ axName ] ;
189+
190+ var anchoredAxis = layoutOut [ axisIds . id2name ( axLayoutOut . anchor ) ] ;
191+
192+ var fixedRangeDflt = (
193+ anchoredAxis &&
194+ anchoredAxis . rangeslider &&
195+ anchoredAxis . rangeslider . visible
196+ ) ;
197+
198+ coerce ( 'fixedrange' , fixedRangeDflt ) ;
173199 } ) ;
174200} ;
0 commit comments