@@ -15,26 +15,43 @@ var Lib = require('../../lib');
15
15
16
16
17
17
module . exports = function handlePositionDefaults ( containerIn , containerOut , coerce , options ) {
18
- var counterAxes = options . counterAxes || [ ] ,
19
- overlayableAxes = options . overlayableAxes || [ ] ,
20
- letter = options . letter ;
18
+ var counterAxes = options . counterAxes || [ ] ;
19
+ var overlayableAxes = options . overlayableAxes || [ ] ;
20
+ var letter = options . letter ;
21
+ var grid = options . grid ;
22
+
23
+ var dfltAnchor , dfltDomain , dfltSide , dfltPosition ;
24
+
25
+ if ( grid ) {
26
+ dfltDomain = grid . _domains [ letter ] [ grid . _axisMap [ containerOut . _id ] ] ;
27
+ dfltAnchor = grid . _anchors [ containerOut . _id ] ;
28
+ if ( dfltDomain ) {
29
+ dfltSide = grid [ letter + 'side' ] . split ( ' ' ) [ 0 ] ;
30
+ dfltPosition = grid . domain [ letter ] [ dfltSide === 'right' || dfltSide === 'top' ? 1 : 0 ] ;
31
+ }
32
+ }
33
+
34
+ // Even if there's a grid, this axis may not be in it - fall back on non-grid defaults
35
+ dfltDomain = dfltDomain || [ 0 , 1 ] ;
36
+ dfltAnchor = dfltAnchor || ( isNumeric ( containerIn . position ) ? 'free' : ( counterAxes [ 0 ] || 'free' ) ) ;
37
+ dfltSide = dfltSide || ( letter === 'x' ? 'bottom' : 'left' ) ;
38
+ dfltPosition = dfltPosition || 0 ;
21
39
22
40
var anchor = Lib . coerce ( containerIn , containerOut , {
23
41
anchor : {
24
42
valType : 'enumerated' ,
25
43
values : [ 'free' ] . concat ( counterAxes ) ,
26
- dflt : isNumeric ( containerIn . position ) ? 'free' :
27
- ( counterAxes [ 0 ] || 'free' )
44
+ dflt : dfltAnchor
28
45
}
29
46
} , 'anchor' ) ;
30
47
31
- if ( anchor === 'free' ) coerce ( 'position' ) ;
48
+ if ( anchor === 'free' ) coerce ( 'position' , dfltPosition ) ;
32
49
33
50
Lib . coerce ( containerIn , containerOut , {
34
51
side : {
35
52
valType : 'enumerated' ,
36
53
values : letter === 'x' ? [ 'bottom' , 'top' ] : [ 'left' , 'right' ] ,
37
- dflt : letter === 'x' ? 'bottom' : 'left'
54
+ dflt : dfltSide
38
55
}
39
56
} , 'side' ) ;
40
57
@@ -54,9 +71,9 @@ module.exports = function handlePositionDefaults(containerIn, containerOut, coer
54
71
// in ax.setscale()... but this means we still need (imperfect) logic
55
72
// in the axes popover to hide domain for the overlaying axis.
56
73
// perhaps I should make a private version _domain that all axes get???
57
- var domain = coerce ( 'domain' ) ;
58
- if ( domain [ 0 ] > domain [ 1 ] - 0.01 ) containerOut . domain = [ 0 , 1 ] ;
59
- Lib . noneOrAll ( containerIn . domain , containerOut . domain , [ 0 , 1 ] ) ;
74
+ var domain = coerce ( 'domain' , dfltDomain ) ;
75
+ if ( domain [ 0 ] > domain [ 1 ] - 0.01 ) containerOut . domain = dfltDomain ;
76
+ Lib . noneOrAll ( containerIn . domain , containerOut . domain , dfltDomain ) ;
60
77
}
61
78
62
79
coerce ( 'layer' ) ;
0 commit comments