@@ -847,16 +847,20 @@ proto.updateRadialDrag = function(fullLayout, polarLayout) {
847
847
var bl = constants . radialDragBoxSize ;
848
848
var bl2 = bl / 2 ;
849
849
var radialDrag = dragBox . makeDragger ( layers , 'radialdrag' , 'move' , - bl2 , - bl2 , bl , bl ) ;
850
- var radialDrag3 = d3 . select ( radialDrag ) ;
851
850
var dragOpts = { element : radialDrag , gd : gd } ;
851
+ var tx = cx + ( radius + bl2 ) * Math . cos ( angle0 ) ;
852
+ var ty = cy - ( radius + bl2 ) * Math . sin ( angle0 ) ;
852
853
853
- radialDrag3 . attr ( 'transform' , strTranslate (
854
- cx + ( radius + bl2 ) * Math . cos ( angle0 ) ,
855
- cy - ( radius + bl2 ) * Math . sin ( angle0 )
856
- ) )
857
- . call ( setCursor , 'crosshair' ) ;
854
+ d3 . select ( radialDrag )
855
+ . attr ( 'transform' , strTranslate ( tx , ty ) )
856
+ . call ( setCursor , 'crosshair' ) ;
858
857
859
- var x0 , y0 , moveFn2 , angle1 , rng1 ;
858
+ // move function (either rotate or rerange flavor)
859
+ var moveFn2 ;
860
+ // rotate angle on done
861
+ var angle1 ;
862
+ // rerange range[1] on done
863
+ var rng1 ;
860
864
861
865
function moveFn ( dx , dy ) {
862
866
if ( moveFn2 ) {
@@ -869,7 +873,7 @@ proto.updateRadialDrag = function(fullLayout, polarLayout) {
869
873
// mostly perpendicular motions rotate,
870
874
// mostly parallel motions re-range
871
875
if ( ! isNaN ( comp ) ) {
872
- moveFn2 = comp < 0.7 ? rotateMove : rerangeMove ;
876
+ moveFn2 = comp < 0.5 ? rotateMove : rerangeMove ;
873
877
}
874
878
}
875
879
}
@@ -883,12 +887,10 @@ proto.updateRadialDrag = function(fullLayout, polarLayout) {
883
887
}
884
888
885
889
function rotateMove ( dx , dy ) {
886
- var x1 = x0 + dx ;
887
- var y1 = y0 + dy ;
888
- var ax = x1 - cx - bl2 ;
889
- var ay = cy - y1 + bl2 ;
890
+ var x1 = tx + dx ;
891
+ var y1 = ty + dy ;
890
892
891
- angle1 = rad2deg ( Math . atan2 ( ay , ax ) ) ;
893
+ angle1 = rad2deg ( Math . atan2 ( cy - y1 , x1 - cx ) ) ;
892
894
893
895
var transform = strTranslate ( cx , cy ) + strRotate ( - angle1 ) ;
894
896
layers [ 'radial-axis' ] . attr ( 'transform' , transform ) ;
@@ -936,14 +938,11 @@ proto.updateRadialDrag = function(fullLayout, polarLayout) {
936
938
}
937
939
}
938
940
939
- dragOpts . prepFn = function ( evt , startX , startY ) {
941
+ dragOpts . prepFn = function ( ) {
940
942
moveFn2 = null ;
941
943
angle1 = null ;
942
944
rng1 = null ;
943
945
944
- x0 = startX ;
945
- y0 = startY ;
946
-
947
946
dragOpts . moveFn = moveFn ;
948
947
dragOpts . doneFn = doneFn ;
949
948
0 commit comments