@@ -452,6 +452,7 @@ proto.updateAngularAxis = function(fullLayout, polarLayout) {
452
452
proto . updateFx = function ( fullLayout , polarLayout ) {
453
453
if ( ! this . gd . _context . staticPlot ) {
454
454
this . updateMainDrag ( fullLayout , polarLayout ) ;
455
+ this . updateRadialDrag ( fullLayout , polarLayout ) ;
455
456
}
456
457
} ;
457
458
@@ -630,6 +631,58 @@ proto.updateMainDrag = function(fullLayout) {
630
631
dragElement . init ( dragOpts ) ;
631
632
} ;
632
633
634
+ proto . updateRadialDrag = function ( fullLayout , polarLayout ) {
635
+ var _this = this ;
636
+ var gd = _this . gd ;
637
+ var layers = _this . layers ;
638
+ var radius = _this . radius ;
639
+ var cx = _this . cx ;
640
+ var cy = _this . cy ;
641
+ var angle0 = deg2rad ( polarLayout . radialaxis . position ) ;
642
+ var bl = 50 ;
643
+ var bl2 = bl / 2 ;
644
+ var radialDrag = dragBox . makeDragger ( layers , 'radialdrag' , 'move' , - bl2 , - bl2 , bl , bl ) ;
645
+ var radialDrag3 = d3 . select ( radialDrag ) ;
646
+ var dragOpts = { element : radialDrag , gd : gd } ;
647
+
648
+ radialDrag3 . attr ( 'transform' , strTranslate (
649
+ cx + ( radius + bl2 ) * Math . cos ( angle0 ) ,
650
+ cy - ( radius + bl2 ) * Math . sin ( angle0 )
651
+ ) ) ;
652
+
653
+ var x0 , y0 , angle1 ;
654
+
655
+ function rotatePrep ( evt , startX , startY ) {
656
+ x0 = startX ;
657
+ y0 = startY ;
658
+ }
659
+
660
+ function rotateMove ( dx , dy ) {
661
+ var x1 = x0 + dx ;
662
+ var y1 = y0 + dy ;
663
+ var ax = x1 - cx - bl ;
664
+ var ay = cy - y1 + bl ;
665
+
666
+ angle1 = rad2deg ( Math . atan2 ( ay , ax ) ) ;
667
+
668
+ var transform = strTranslate ( cx , cy ) + strRotate ( - angle1 ) ;
669
+ layers . radialaxis . attr ( 'transform' , transform ) ;
670
+ layers . radialline . attr ( 'transform' , transform ) ;
671
+ }
672
+
673
+ function rotateDone ( ) {
674
+ Plotly . relayout ( gd , _this . id + '.radialaxis.position' , angle1 ) ;
675
+ }
676
+
677
+ dragOpts . prepFn = function ( evt , startX , startY ) {
678
+ rotatePrep ( evt , startX , startY ) ;
679
+ dragOpts . moveFn = rotateMove ;
680
+ dragOpts . doneFn = rotateDone ;
681
+ } ;
682
+
683
+ dragElement . init ( dragOpts ) ;
684
+ } ;
685
+
633
686
proto . isPtWithinSector = function ( ) {
634
687
var sector = this . sector ;
635
688
0 commit comments