@@ -3020,8 +3020,6 @@ axes.drawLabels = function(gd, ax, opts) {
3020
3020
}
3021
3021
3022
3022
function positionLabels ( s , angle ) {
3023
- var isInside = insideTicklabelposition ( ax ) ;
3024
-
3025
3023
s . each ( function ( d ) {
3026
3024
var thisLabel = d3 . select ( this ) ;
3027
3025
var mathjaxGroup = thisLabel . select ( '.text-math-group' ) ;
@@ -3049,12 +3047,10 @@ axes.drawLabels = function(gd, ax, opts) {
3049
3047
'text-anchor' : anchor
3050
3048
} ) ;
3051
3049
3052
- if ( isInside ) {
3053
- thisText . style ( 'opacity' , 1 ) ; // visible
3050
+ thisText . style ( 'opacity' , 1 ) ; // visible
3054
3051
3055
- if ( ax . _hideOutOfRangeInsideTickLabels ) {
3056
- ax . _hideOutOfRangeInsideTickLabels ( ) ;
3057
- }
3052
+ if ( ax . _adjustTickLabelsOverflow ) {
3053
+ ax . _adjustTickLabelsOverflow ( ) ;
3058
3054
}
3059
3055
} else {
3060
3056
var mjWidth = Drawing . bBox ( mathjaxGroup . node ( ) ) . width ;
@@ -3064,63 +3060,73 @@ axes.drawLabels = function(gd, ax, opts) {
3064
3060
} ) ;
3065
3061
}
3066
3062
3067
- ax . _hideOutOfRangeInsideTickLabels = function ( ) {
3068
- if ( insideTicklabelposition ( ax ) ) {
3063
+ ax . _adjustTickLabelsOverflow = function ( ) {
3064
+ var ticklabeloverflow = ax . ticklabeloverflow ;
3065
+ if ( ! ticklabeloverflow || ticklabeloverflow === 'allow' ) return ;
3066
+
3067
+ var hideOverflow = ticklabeloverflow . indexOf ( 'hide' ) !== - 1 ;
3068
+
3069
+ var isX = ax . _id . charAt ( 0 ) === 'x' ;
3070
+ // div positions
3071
+ var p0 = 0 ;
3072
+ var p1 = isX ?
3073
+ gd . _fullLayout . width :
3074
+ gd . _fullLayout . height ;
3075
+
3076
+ if ( ticklabeloverflow . indexOf ( 'domain' ) !== - 1 ) {
3077
+ // domain positions
3069
3078
var rl = Lib . simpleMap ( ax . range , ax . r2l ) ;
3079
+ p0 = ax . l2p ( rl [ 0 ] ) + ax . _offset ;
3080
+ p1 = ax . l2p ( rl [ 1 ] ) + ax . _offset ;
3081
+ }
3070
3082
3071
- // hide inside tick labels that go outside axis end points
3072
- var p0 = ax . l2p ( rl [ 0 ] ) ;
3073
- var p1 = ax . l2p ( rl [ 1 ] ) ;
3083
+ var min = Math . min ( p0 , p1 ) ;
3084
+ var max = Math . max ( p0 , p1 ) ;
3074
3085
3075
- var min = Math . min ( p0 , p1 ) + ax . _offset ;
3076
- var max = Math . max ( p0 , p1 ) + ax . _offset ;
3086
+ var side = ax . side ;
3077
3087
3078
- var side = ax . side ;
3079
- var isX = ax . _id . charAt ( 0 ) === 'x' ;
3088
+ var visibleLabelMin = Infinity ;
3089
+ var visibleLabelMax = - Infinity ;
3080
3090
3081
- var visibleLabelMin = Infinity ;
3082
- var visibleLabelMax = - Infinity ;
3091
+ tickLabels . each ( function ( d ) {
3092
+ var thisLabel = d3 . select ( this ) ;
3093
+ var mathjaxGroup = thisLabel . select ( '.text-math-group' ) ;
3083
3094
3084
- tickLabels . each ( function ( d ) {
3085
- var thisLabel = d3 . select ( this ) ;
3086
- var mathjaxGroup = thisLabel . select ( '.text-math-group' ) ;
3087
-
3088
- if ( mathjaxGroup . empty ( ) ) {
3089
- var bb = Drawing . bBox ( thisLabel . node ( ) ) ;
3090
- var hide = false ;
3091
- if ( isX ) {
3092
- if ( bb . right > max ) hide = true ;
3093
- else if ( bb . left < min ) hide = true ;
3095
+ if ( mathjaxGroup . empty ( ) ) {
3096
+ var bb = Drawing . bBox ( thisLabel . node ( ) ) ;
3097
+ var adjust = 0 ;
3098
+ if ( isX ) {
3099
+ if ( bb . right > max ) adjust = 1 ;
3100
+ else if ( bb . left < min ) adjust = 1 ;
3101
+ } else {
3102
+ if ( bb . bottom > max ) adjust = 1 ;
3103
+ else if ( bb . top + ( ax . tickangle ? 0 : d . fontSize / 4 ) < min ) adjust = 1 ;
3104
+ }
3105
+
3106
+ var t = thisLabel . select ( 'text' ) ;
3107
+ if ( adjust ) {
3108
+ if ( hideOverflow ) t . style ( 'opacity' , 0 ) ; // hidden
3109
+ } else {
3110
+ t . style ( 'opacity' , 1 ) ; // visible
3111
+
3112
+ if ( side === 'bottom' || side === 'right' ) {
3113
+ visibleLabelMin = Math . min ( visibleLabelMin , isX ? bb . top : bb . left ) ;
3094
3114
} else {
3095
- if ( bb . bottom > max ) hide = true ;
3096
- else if ( bb . top + ( ax . tickangle ? 0 : d . fontSize / 4 ) < min ) hide = true ;
3115
+ visibleLabelMin = - Infinity ;
3097
3116
}
3098
3117
3099
- var t = thisLabel . select ( 'text' ) ;
3100
- if ( hide ) {
3101
- t . style ( 'opacity' , 0 ) ; // hidden
3118
+ if ( side === 'top' || side === 'left' ) {
3119
+ visibleLabelMax = Math . max ( visibleLabelMax , isX ? bb . bottom : bb . right ) ;
3102
3120
} else {
3103
- t . style ( 'opacity' , 1 ) ; // visible
3104
-
3105
- if ( side === 'bottom' || side === 'right' ) {
3106
- visibleLabelMin = Math . min ( visibleLabelMin , isX ? bb . top : bb . left ) ;
3107
- } else {
3108
- visibleLabelMin = - Infinity ;
3109
- }
3110
-
3111
- if ( side === 'top' || side === 'left' ) {
3112
- visibleLabelMax = Math . max ( visibleLabelMax , isX ? bb . bottom : bb . right ) ;
3113
- } else {
3114
- visibleLabelMax = Infinity ;
3115
- }
3121
+ visibleLabelMax = Infinity ;
3116
3122
}
3117
- } // TODO: hide mathjax?
3118
- } ) ;
3123
+ }
3124
+ } // TODO: hide mathjax?
3125
+ } ) ;
3119
3126
3120
- if ( ax . _anchorAxis ) {
3121
- ax . _anchorAxis . _visibleLabelMin = visibleLabelMin ;
3122
- ax . _anchorAxis . _visibleLabelMax = visibleLabelMax ;
3123
- }
3127
+ if ( ax . _anchorAxis ) {
3128
+ ax . _anchorAxis . _visibleLabelMin = visibleLabelMin ;
3129
+ ax . _anchorAxis . _visibleLabelMax = visibleLabelMax ;
3124
3130
}
3125
3131
} ;
3126
3132
0 commit comments