@@ -1251,38 +1251,83 @@ describe('Test polar interactions:', function() {
1251
1251
describe ( 'plotly_relayouting' , function ( ) {
1252
1252
afterEach ( destroyGraphDiv ) ;
1253
1253
1254
- [ 'zoom' ] . forEach ( function ( dragmode ) {
1254
+ it ( 'should emit events on radial drag area' , function ( done ) {
1255
+ var events = [ ] ; var path = [ [ 375 , 200 ] , [ - 100 , 0 ] ] ; var nsteps = 10 ;
1256
+ var relayoutEvents = [ ] ;
1257
+ var fig = Lib . extendDeep ( { } , require ( '@mocks/polar_scatter.json' ) ) ;
1258
+ // to avoid dragging on hover labels
1259
+ fig . layout . hovermode = false ;
1260
+
1261
+ // adjust margins so that middle of plot area is at 300x300
1262
+ // with its middle at [200,200]
1263
+ fig . layout . width = 400 ;
1264
+ fig . layout . height = 400 ;
1265
+ fig . layout . margin = { l : 50 , t : 50 , b : 50 , r : 50 } ;
1266
+
1255
1267
function _drag ( p0 , dp , nsteps ) {
1256
- var node = d3 . select ( '.polar > .draglayer > .maindrag ' ) . node ( ) ;
1268
+ var node = d3 . select ( '.polar > .draglayer > .radialdrag ' ) . node ( ) ;
1257
1269
return drag ( node , dp [ 0 ] , dp [ 1 ] , null , p0 [ 0 ] , p0 [ 1 ] , nsteps ) ;
1258
1270
}
1259
1271
1260
- it ( 'should emit plotly_relayouting events on ' + dragmode , function ( done ) {
1261
- var events = [ ] ; var path = [ [ 150 , 250 ] , [ 175 , 250 ] ] ; var relayoutCallback ;
1262
- var fig = Lib . extendDeep ( { } , require ( '@mocks/polar_scatter.json' ) ) ;
1263
- fig . layout . dragmode = dragmode ;
1272
+ var gd = createGraphDiv ( ) ;
1273
+ Plotly . plot ( gd , fig )
1274
+ . then ( function ( ) {
1275
+ gd . on ( 'plotly_relayout' , function ( e ) {
1276
+ relayoutEvents . push ( e ) ;
1277
+ } ) ;
1278
+ gd . on ( 'plotly_relayouting' , function ( e ) {
1279
+ events . push ( e ) ;
1280
+ } ) ;
1281
+ return _drag ( path [ 0 ] , path [ 1 ] , nsteps ) ;
1282
+ } )
1283
+ . then ( function ( ) {
1284
+ var len = events . length ;
1285
+ expect ( len ) . toEqual ( nsteps ) ;
1286
+ expect ( events [ len - 1 ] [ 'polar.radialaxis.range[1]' ] ) . toBeCloseTo ( 16 , - 1 ) ;
1287
+ expect ( relayoutEvents . length ) . toEqual ( 1 ) ;
1288
+ Object . keys ( relayoutEvents [ 0 ] ) . sort ( ) . forEach ( function ( key ) {
1289
+ expect ( Object . keys ( events [ len - 1 ] ) ) . toContain ( key ) ;
1290
+ } ) ;
1291
+ } )
1292
+ . catch ( failTest )
1293
+ . then ( done ) ;
1294
+ } ) ;
1264
1295
1265
- var gd = createGraphDiv ( ) ;
1266
- Plotly . plot ( gd , fig )
1267
- . then ( function ( ) {
1268
- relayoutCallback = jasmine . createSpy ( 'relayoutCallback' ) ;
1269
- gd . on ( 'plotly_relayout' , relayoutCallback ) ;
1270
- gd . on ( 'plotly_relayouting' , function ( e ) {
1271
- events . push ( e ) ;
1272
- } ) ;
1273
- return _drag ( path [ 0 ] , path [ 1 ] ) ;
1274
- } )
1275
- . then ( function ( ) {
1276
- expect ( events . length ) . toEqual ( path . length - 1 ) ;
1277
- expect ( events [ 0 ] [ 'polar.radialaxis.range' ] ) . toBeCloseToArray ( [ 6 , 11 ] , 0.1 ) ;
1278
- expect ( relayoutCallback ) . toHaveBeenCalledTimes ( 1 ) ;
1279
- } )
1280
- . catch ( failTest )
1281
- . then ( done ) ;
1282
- } ) ;
1296
+ it ( 'should emit events on inner radial drag area' , function ( done ) {
1297
+ var events = [ ] ; var path = [ [ 150 , 250 ] , [ 175 , 250 ] ] ;
1298
+ var relayoutEvents = [ ] ;
1299
+ var fig = Lib . extendDeep ( { } , require ( '@mocks/polar_scatter.json' ) ) ;
1300
+
1301
+ function _drag ( p0 , dp , nsteps ) {
1302
+ var node = d3 . select ( '.polar > .draglayer > .maindrag' ) . node ( ) ;
1303
+ return drag ( node , dp [ 0 ] , dp [ 1 ] , null , p0 [ 0 ] , p0 [ 1 ] , nsteps ) ;
1304
+ }
1305
+
1306
+ var gd = createGraphDiv ( ) ;
1307
+ Plotly . plot ( gd , fig )
1308
+ . then ( function ( ) {
1309
+ gd . on ( 'plotly_relayout' , function ( e ) {
1310
+ relayoutEvents . push ( e ) ;
1311
+ } ) ;
1312
+ gd . on ( 'plotly_relayouting' , function ( e ) {
1313
+ events . push ( e ) ;
1314
+ } ) ;
1315
+ return _drag ( path [ 0 ] , path [ 1 ] ) ;
1316
+ } )
1317
+ . then ( function ( ) {
1318
+ expect ( events . length ) . toEqual ( path . length - 1 ) ;
1319
+ expect ( events [ 0 ] [ 'polar.radialaxis.range' ] ) . toBeCloseToArray ( [ 6 , 11 ] , 0.1 ) ;
1320
+ expect ( relayoutEvents . length ) . toEqual ( 1 ) ;
1321
+ Object . keys ( relayoutEvents [ 0 ] ) . sort ( ) . forEach ( function ( key ) {
1322
+ expect ( Object . keys ( events [ 0 ] ) ) . toContain ( key ) ;
1323
+ } ) ;
1324
+ } )
1325
+ . catch ( failTest )
1326
+ . then ( done ) ;
1283
1327
} ) ;
1284
- it ( 'should emit plotly_relayouting events on angular drag' , function ( done ) {
1285
- var events = [ ] ; var relayoutCallback ;
1328
+
1329
+ it ( 'should emit events on angular drag area' , function ( done ) {
1330
+ var events = [ ] ; var relayoutEvents = [ ] ; var nsteps = 10 ;
1286
1331
var fig = Lib . extendDeep ( { } , require ( '@mocks/polar_scatter.json' ) ) ;
1287
1332
1288
1333
function _drag ( p0 , dp , nsteps ) {
@@ -1295,17 +1340,21 @@ describe('Test polar interactions:', function() {
1295
1340
var gd = createGraphDiv ( ) ;
1296
1341
Plotly . plot ( gd , fig )
1297
1342
. then ( function ( ) {
1298
- relayoutCallback = jasmine . createSpy ( 'relayoutCallback' ) ;
1299
- gd . on ( 'plotly_relayout' , relayoutCallback ) ;
1343
+ gd . on ( 'plotly_relayout' , function ( e ) {
1344
+ relayoutEvents . push ( e ) ;
1345
+ } ) ;
1300
1346
gd . on ( 'plotly_relayouting' , function ( e ) {
1301
1347
events . push ( e ) ;
1302
1348
} ) ;
1303
- return _drag ( dragPos0 , [ 0 , - 110 ] , 10 ) ;
1349
+ return _drag ( dragPos0 , [ 0 , - 110 ] , nsteps ) ;
1304
1350
} )
1305
1351
. then ( function ( ) {
1306
- expect ( events . length ) . toEqual ( 10 ) ;
1352
+ expect ( events . length ) . toEqual ( nsteps ) ;
1307
1353
expect ( events . splice ( - 1 , 1 ) [ 0 ] [ 'polar.angularaxis.rotation' ] ) . toBeCloseTo ( 29 , 0 ) ;
1308
- expect ( relayoutCallback ) . toHaveBeenCalledTimes ( 1 ) ;
1354
+ expect ( relayoutEvents . length ) . toEqual ( 1 ) ;
1355
+ Object . keys ( relayoutEvents [ 0 ] ) . sort ( ) . forEach ( function ( key ) {
1356
+ expect ( Object . keys ( events [ 0 ] ) ) . toContain ( key ) ;
1357
+ } ) ;
1309
1358
} )
1310
1359
. catch ( failTest )
1311
1360
. then ( done ) ;
0 commit comments