99'use strict' ;
1010
1111var Lib = require ( '../../lib' ) ;
12- var axisIds = require ( './axis_ids' ) ;
13- var id2name = axisIds . id2name ;
12+
13+ var autorange = require ( './autorange' ) ;
14+ var id2name = require ( './axis_ids' ) . id2name ;
1415var layoutAttributes = require ( './layout_attributes' ) ;
1516var scaleZoom = require ( './scale_zoom' ) ;
16- var autorange = require ( './autorange' ) ;
17- var makePadFn = autorange . makePadFn ;
18- var concatExtremes = autorange . concatExtremes ;
17+ var setConvert = require ( './set_convert' ) ;
1918
2019var ALMOST_EQUAL = require ( '../../constants/numerical' ) . ALMOST_EQUAL ;
2120var FROM_BL = require ( '../../constants/alignment' ) . FROM_BL ;
@@ -30,7 +29,7 @@ exports.handleDefaults = function(layoutIn, layoutOut, opts) {
3029 // similar to _axisConstraintGroups, but only matching axes
3130 var matchGroups = layoutOut . _axisMatchGroups = [ ] ;
3231
33- var i , group , axId , axName , axIn , axOut ;
32+ var i , group , axId , axName , axIn , axOut , attr , val ;
3433
3534 for ( i = 0 ; i < axIds . length ; i ++ ) {
3635 axName = id2name ( axIds [ i ] ) ;
@@ -113,13 +112,22 @@ exports.handleDefaults = function(layoutIn, layoutOut, opts) {
113112 'categoryarray'
114113 ] ;
115114 var hasRange = false ;
115+ var hasDayOfWeekBreaks = false ;
116+
117+ function setAttrVal ( ) {
118+ val = axOut [ attr ] ;
119+ if ( attr === 'rangebreaks' ) {
120+ hasDayOfWeekBreaks = axOut . _hasDayOfWeekBreaks ;
121+ }
122+ }
123+
116124 for ( i = 0 ; i < matchGroups . length ; i ++ ) {
117125 group = matchGroups [ i ] ;
118126
119127 // find 'matching' range attrs
120128 for ( var j = 0 ; j < matchAttrs . length ; j ++ ) {
121- var attr = matchAttrs [ j ] ;
122- var val = null ;
129+ attr = matchAttrs [ j ] ;
130+ val = null ;
123131 var baseAx ;
124132 for ( axId in group ) {
125133 axName = id2name ( axId ) ;
@@ -132,13 +140,13 @@ exports.handleDefaults = function(layoutIn, layoutOut, opts) {
132140 baseAx = axOut ;
133141 // top priority: explicit value in base axis
134142 if ( attr in axIn ) {
135- val = axOut [ attr ] ;
143+ setAttrVal ( ) ;
136144 break ;
137145 }
138146 }
139147 if ( val === null && attr in axIn ) {
140148 // second priority: first explicit value in another axis
141- val = axOut [ attr ] ;
149+ setAttrVal ( ) ;
142150 }
143151 }
144152
@@ -159,8 +167,14 @@ exports.handleDefaults = function(layoutIn, layoutOut, opts) {
159167 // but we still might not have a value, which is fine.
160168 if ( val !== null ) {
161169 for ( axId in group ) {
170+ axOut = layoutOut [ id2name ( axId ) ] ;
162171 // TODO: do we also need to (deep) copy rangebreaks?
163- layoutOut [ id2name ( axId ) ] [ attr ] = attr === 'range' ? val . slice ( ) : val ;
172+ axOut [ attr ] = attr === 'range' ? val . slice ( ) : val ;
173+
174+ if ( attr === 'rangebreaks' ) {
175+ axOut . _hasDayOfWeekBreaks = hasDayOfWeekBreaks ;
176+ setConvert ( axOut , layoutOut ) ;
177+ }
164178 }
165179 }
166180 }
@@ -552,11 +566,11 @@ exports.enforce = function enforce(gd) {
552566 // *are* expanding to the full domain
553567 var outerMin = rangeCenter - halfRange * factor * 1.0001 ;
554568 var outerMax = rangeCenter + halfRange * factor * 1.0001 ;
555- var getPad = makePadFn ( ax ) ;
569+ var getPad = autorange . makePadFn ( ax ) ;
556570
557571 updateDomain ( ax , factor ) ;
558572 var m = Math . abs ( ax . _m ) ;
559- var extremes = concatExtremes ( gd , ax ) ;
573+ var extremes = autorange . concatExtremes ( gd , ax ) ;
560574 var minArray = extremes . min ;
561575 var maxArray = extremes . max ;
562576 var newVal ;
0 commit comments