9
9
'use strict' ;
10
10
11
11
var 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 ;
14
15
var layoutAttributes = require ( './layout_attributes' ) ;
15
16
var 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' ) ;
19
18
20
19
var ALMOST_EQUAL = require ( '../../constants/numerical' ) . ALMOST_EQUAL ;
21
20
var FROM_BL = require ( '../../constants/alignment' ) . FROM_BL ;
@@ -30,7 +29,7 @@ exports.handleDefaults = function(layoutIn, layoutOut, opts) {
30
29
// similar to _axisConstraintGroups, but only matching axes
31
30
var matchGroups = layoutOut . _axisMatchGroups = [ ] ;
32
31
33
- var i , group , axId , axName , axIn , axOut ;
32
+ var i , group , axId , axName , axIn , axOut , attr , val ;
34
33
35
34
for ( i = 0 ; i < axIds . length ; i ++ ) {
36
35
axName = id2name ( axIds [ i ] ) ;
@@ -113,13 +112,22 @@ exports.handleDefaults = function(layoutIn, layoutOut, opts) {
113
112
'categoryarray'
114
113
] ;
115
114
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
+
116
124
for ( i = 0 ; i < matchGroups . length ; i ++ ) {
117
125
group = matchGroups [ i ] ;
118
126
119
127
// find 'matching' range attrs
120
128
for ( var j = 0 ; j < matchAttrs . length ; j ++ ) {
121
- var attr = matchAttrs [ j ] ;
122
- var val = null ;
129
+ attr = matchAttrs [ j ] ;
130
+ val = null ;
123
131
var baseAx ;
124
132
for ( axId in group ) {
125
133
axName = id2name ( axId ) ;
@@ -132,13 +140,13 @@ exports.handleDefaults = function(layoutIn, layoutOut, opts) {
132
140
baseAx = axOut ;
133
141
// top priority: explicit value in base axis
134
142
if ( attr in axIn ) {
135
- val = axOut [ attr ] ;
143
+ setAttrVal ( ) ;
136
144
break ;
137
145
}
138
146
}
139
147
if ( val === null && attr in axIn ) {
140
148
// second priority: first explicit value in another axis
141
- val = axOut [ attr ] ;
149
+ setAttrVal ( ) ;
142
150
}
143
151
}
144
152
@@ -159,8 +167,14 @@ exports.handleDefaults = function(layoutIn, layoutOut, opts) {
159
167
// but we still might not have a value, which is fine.
160
168
if ( val !== null ) {
161
169
for ( axId in group ) {
170
+ axOut = layoutOut [ id2name ( axId ) ] ;
162
171
// 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
+ }
164
178
}
165
179
}
166
180
}
@@ -552,11 +566,11 @@ exports.enforce = function enforce(gd) {
552
566
// *are* expanding to the full domain
553
567
var outerMin = rangeCenter - halfRange * factor * 1.0001 ;
554
568
var outerMax = rangeCenter + halfRange * factor * 1.0001 ;
555
- var getPad = makePadFn ( ax ) ;
569
+ var getPad = autorange . makePadFn ( ax ) ;
556
570
557
571
updateDomain ( ax , factor ) ;
558
572
var m = Math . abs ( ax . _m ) ;
559
- var extremes = concatExtremes ( gd , ax ) ;
573
+ var extremes = autorange . concatExtremes ( gd , ax ) ;
560
574
var minArray = extremes . min ;
561
575
var maxArray = extremes . max ;
562
576
var newVal ;
0 commit comments