@@ -3102,33 +3102,35 @@ describe('Test axes', function() {
3102
3102
3103
3103
describe ( '*tickson*:' , function ( ) {
3104
3104
var gd ;
3105
+
3105
3106
beforeEach ( function ( ) {
3106
3107
gd = createGraphDiv ( ) ;
3107
3108
} ) ;
3109
+
3108
3110
afterEach ( destroyGraphDiv ) ;
3109
3111
3110
- function getPositions ( query ) {
3111
- var pos = [ ] ;
3112
- d3 . selectAll ( query ) . each ( function ( ) {
3113
- pos . push ( this . getBoundingClientRect ( ) . x ) ;
3114
- } ) ;
3115
- return pos ;
3116
- }
3112
+ it ( 'should respond to relayout' , function ( done ) {
3113
+ function getPositions ( query ) {
3114
+ var pos = [ ] ;
3115
+ d3 . selectAll ( query ) . each ( function ( ) {
3116
+ pos . push ( this . getBoundingClientRect ( ) . x ) ;
3117
+ } ) ;
3118
+ return pos ;
3119
+ }
3117
3120
3118
- function _assert ( msg , exp ) {
3119
- var ticks = getPositions ( 'path.xtick' ) ;
3120
- var gridLines = getPositions ( 'path.xgrid' ) ;
3121
- var tickLabels = getPositions ( '.xtick > text' ) ;
3121
+ function _assert ( msg , exp ) {
3122
+ var ticks = getPositions ( 'path.xtick' ) ;
3123
+ var gridLines = getPositions ( 'path.xgrid' ) ;
3124
+ var tickLabels = getPositions ( '.xtick > text' ) ;
3122
3125
3123
- expect ( ticks ) . toBeCloseToArray ( exp . ticks , 1 , msg + '- ticks' ) ;
3124
- expect ( gridLines ) . toBeCloseToArray ( exp . gridLines , 1 , msg + '- grid lines' ) ;
3125
- expect ( tickLabels . length ) . toBe ( exp . tickLabels . length , msg + '- # of tick labels' ) ;
3126
- tickLabels . forEach ( function ( tl , i ) {
3127
- expect ( tl ) . toBeWithin ( exp . tickLabels [ i ] , 2 , msg + '- tick label ' + i ) ;
3128
- } ) ;
3129
- }
3126
+ expect ( ticks ) . toBeCloseToArray ( exp . ticks , 1 , msg + '- ticks' ) ;
3127
+ expect ( gridLines ) . toBeCloseToArray ( exp . gridLines , 1 , msg + '- grid lines' ) ;
3128
+ expect ( tickLabels . length ) . toBe ( exp . tickLabels . length , msg + '- # of tick labels' ) ;
3129
+ tickLabels . forEach ( function ( tl , i ) {
3130
+ expect ( tl ) . toBeWithin ( exp . tickLabels [ i ] , 2 , msg + '- tick label ' + i ) ;
3131
+ } ) ;
3132
+ }
3130
3133
3131
- it ( 'should respond to relayout' , function ( done ) {
3132
3134
Plotly . plot ( gd , [ {
3133
3135
x : [ 'a' , 'b' , 'c' ] ,
3134
3136
y : [ 1 , 2 , 1 ]
@@ -3172,6 +3174,55 @@ describe('Test axes', function() {
3172
3174
. catch ( failTest )
3173
3175
. then ( done ) ;
3174
3176
} ) ;
3177
+
3178
+ it ( 'should rotate labels to avoid overlaps' , function ( done ) {
3179
+ function _assert ( msg , exp ) {
3180
+ var tickLabels = d3 . selectAll ( '.xtick > text' ) ;
3181
+
3182
+ expect ( tickLabels . size ( ) ) . toBe ( exp . angle . length , msg + ' - # of tick labels' ) ;
3183
+
3184
+ tickLabels . each ( function ( _ , i ) {
3185
+ var t = d3 . select ( this ) . attr ( 'transform' ) ;
3186
+ var rotate = ( t . split ( 'rotate(' ) [ 1 ] || '' ) . split ( ')' ) [ 0 ] ;
3187
+ var angle = rotate . split ( ',' ) [ 0 ] ;
3188
+ expect ( Number ( angle ) ) . toBe ( exp . angle [ i ] , msg + ' - node ' + i ) ;
3189
+ } ) ;
3190
+ }
3191
+
3192
+ Plotly . plot ( gd , [ {
3193
+ x : [ 'A very long title' , 'short' , 'Another very long title' ] ,
3194
+ y : [ 1 , 4 , 2 ]
3195
+ } ] , {
3196
+ xaxis : {
3197
+ domain : [ 0.22 , 0.78 ] ,
3198
+ tickson : 'boundaries' ,
3199
+ ticks : 'outside'
3200
+ } ,
3201
+ width : 500 ,
3202
+ height : 500
3203
+ } )
3204
+ . then ( function ( ) {
3205
+ _assert ( 'base - rotated' , {
3206
+ angle : [ 90 , 90 , 90 ]
3207
+ } ) ;
3208
+
3209
+ return Plotly . relayout ( gd , 'xaxis.range' , [ - 0.5 , 1.5 ] ) ;
3210
+ } )
3211
+ . then ( function ( ) {
3212
+ _assert ( 'narrower range - unrotated' , {
3213
+ angle : [ 0 , 0 ]
3214
+ } ) ;
3215
+
3216
+ return Plotly . relayout ( gd , 'xaxis.tickwidth' , 10 ) ;
3217
+ } )
3218
+ . then ( function ( ) {
3219
+ _assert ( 'narrow range / wide ticks - rotated' , {
3220
+ angle : [ 90 , 90 ]
3221
+ } ) ;
3222
+ } )
3223
+ . catch ( failTest )
3224
+ . then ( done ) ;
3225
+ } ) ;
3175
3226
} ) ;
3176
3227
} ) ;
3177
3228
0 commit comments