@@ -929,6 +929,54 @@ describe('Test gl3d drag and wheel interactions', function() {
929
929
. catch ( failTest )
930
930
. then ( done ) ;
931
931
} ) ;
932
+
933
+ it ( '@gl should fire plotly_relayouting events' , function ( done ) {
934
+ var sceneLayout , sceneTarget , relayoutCallback , relayoutingCallback ;
935
+
936
+ var mock = {
937
+ data : [
938
+ { type : 'scatter3d' , x : [ 1 , 2 , 3 ] , y : [ 2 , 3 , 1 ] , z : [ 3 , 1 , 2 ] }
939
+ ] ,
940
+ layout : {
941
+ scene : { camera : { projection : { type : 'orthographic' } , eye : { x : 0.1 , y : 0.1 , z : 1 } } } ,
942
+ width : 400 , height : 400
943
+ }
944
+ } ;
945
+
946
+ var nsteps = 10 ;
947
+ function _drag ( target , start , end , n ) {
948
+ return new Promise ( function ( resolve ) {
949
+ mouseEvent ( 'mousedown' , start [ 0 ] , start [ 1 ] , { element : target , buttons : 1 } ) ;
950
+ var dx = ( end [ 0 ] - start [ 0 ] ) / n ;
951
+ var dy = ( end [ 1 ] - start [ 1 ] ) / n ;
952
+ for ( var i = 1 ; i <= n ; i ++ ) {
953
+ mouseEvent ( 'mousemove' , start [ 0 ] + dx * n , start [ 1 ] + dy * n , { element : target , buttons : 1 } ) ;
954
+ }
955
+ mouseEvent ( 'mouseup' , end [ 0 ] , end [ 1 ] , { element : target , buttons : 1 } ) ;
956
+ setTimeout ( resolve , 0 ) ;
957
+ } ) ;
958
+ }
959
+
960
+ Plotly . plot ( gd , mock )
961
+ . then ( function ( ) {
962
+ relayoutCallback = jasmine . createSpy ( 'relayoutCallback' ) ;
963
+ gd . on ( 'plotly_relayout' , relayoutCallback ) ;
964
+
965
+ relayoutingCallback = jasmine . createSpy ( 'relayoutingCallback' ) ;
966
+ gd . on ( 'plotly_relayouting' , relayoutingCallback ) ;
967
+
968
+ sceneLayout = gd . _fullLayout . scene ;
969
+ sceneTarget = gd . querySelector ( '.svg-container .gl-container #scene canvas' ) ;
970
+
971
+ return _drag ( sceneTarget , [ 200 , 200 ] , [ 100 , 100 ] , nsteps ) ;
972
+ } )
973
+ . then ( function ( ) {
974
+ expect ( relayoutCallback ) . toHaveBeenCalledTimes ( 1 ) ;
975
+ expect ( relayoutingCallback ) . toHaveBeenCalledTimes ( nsteps ) ;
976
+ } )
977
+ . catch ( failTest )
978
+ . then ( done ) ;
979
+ } ) ;
932
980
} ) ;
933
981
934
982
describe ( 'Test gl3d relayout calls' , function ( ) {
0 commit comments