10
10
11
11
var Lib = require ( '../../lib' ) ;
12
12
var attributes = require ( './attributes' ) ;
13
+ var rangeAttributes = require ( './range_attributes' ) ;
14
+ var axisIds = require ( '../../plots/cartesian/axis_ids' ) ;
13
15
14
16
module . exports = function handleDefaults ( layoutIn , layoutOut , axName ) {
15
17
if ( ! layoutIn [ axName ] . rangeslider ) return ;
@@ -27,6 +29,10 @@ module.exports = function handleDefaults(layoutIn, layoutOut, axName) {
27
29
return Lib . coerce ( containerIn , containerOut , attributes , attr , dflt ) ;
28
30
}
29
31
32
+ function coerceRange ( yName , attr , dflt ) {
33
+ return Lib . coerce ( containerIn [ yName ] , containerOut [ yName ] , rangeAttributes , attr , dflt ) ;
34
+ }
35
+
30
36
var visible = coerce ( 'visible' ) ;
31
37
if ( ! visible ) return ;
32
38
@@ -37,7 +43,30 @@ module.exports = function handleDefaults(layoutIn, layoutOut, axName) {
37
43
38
44
coerce ( 'autorange' , ! axOut . isValidRange ( containerIn . range ) ) ;
39
45
coerce ( 'range' ) ;
40
- containerOut . yaxis = containerIn . yaxis ;
46
+
47
+ var subplots = layoutOut . _subplots ;
48
+ var yIds = subplots . yaxis ;
49
+ var yNames = Lib . simpleMap ( yIds , axisIds . id2name ) ;
50
+ for ( var i = 0 ; i < yNames . length ; i ++ ) {
51
+ var yName = yNames [ i ] ;
52
+ if ( ! containerIn [ yName ] ) {
53
+ containerIn [ yName ] = { } ;
54
+ }
55
+ if ( ! containerOut [ yName ] ) {
56
+ containerOut [ yName ] = { } ;
57
+ }
58
+
59
+ if ( containerIn [ yName ] . range && layoutOut [ yName ] . isValidRange ( containerIn [ yName ] . range ) ) {
60
+ coerceRange ( yName , 'rangemode' , 'fixed' ) ;
61
+ } else {
62
+ coerceRange ( yName , 'rangemode' , 'auto' ) ;
63
+ }
64
+
65
+ coerceRange ( yName , 'range' ) ;
66
+ layoutOut [ yName ] . cleanRange ( 'rangeslider.' + yName + '.range' ) ;
67
+ layoutOut [ axName ] . rangeslider [ yName ] . range = layoutOut [ yName ] . rangeslider [ yName ] . range . slice ( ) ;
68
+ delete layoutOut [ yName ] . rangeslider ;
69
+ }
41
70
42
71
// to map back range slider (auto) range
43
72
containerOut . _input = containerIn ;
0 commit comments