@@ -399,6 +399,7 @@ proto.init_interactions = function() {
399
399
else if ( dragModeNow === 'pan' ) {
400
400
dragOptions . moveFn = plotDrag ;
401
401
dragOptions . doneFn = dragDone ;
402
+ panPrep ( ) ;
402
403
clearSelect ( ) ;
403
404
}
404
405
else if ( dragModeNow === 'select' || dragModeNow === 'lasso' ) {
@@ -413,7 +414,11 @@ proto.init_interactions = function() {
413
414
var dragBBox = dragger . getBoundingClientRect ( ) ;
414
415
x0 = startX - dragBBox . left ;
415
416
y0 = startY - dragBBox . top ;
416
- mins0 = { a : _this . aaxis . range [ 0 ] , b : _this . baxis . range [ 1 ] , c : _this . caxis . range [ 1 ] } ;
417
+ mins0 = {
418
+ a : _this . aaxis . range [ 0 ] ,
419
+ b : _this . baxis . range [ 1 ] ,
420
+ c : _this . caxis . range [ 1 ]
421
+ } ;
417
422
mins = mins0 ;
418
423
span0 = _this . aaxis . range [ 1 ] - mins0 . a ;
419
424
lum = tinycolor ( _this . graphDiv . _fullLayout [ _this . id ] . bgcolor ) . getLuminance ( ) ;
@@ -512,13 +517,22 @@ proto.init_interactions = function() {
512
517
}
513
518
}
514
519
520
+ function panPrep ( ) {
521
+ mins0 = {
522
+ a : _this . aaxis . range [ 0 ] ,
523
+ b : _this . baxis . range [ 1 ] ,
524
+ c : _this . caxis . range [ 1 ]
525
+ } ;
526
+ mins = mins0 ;
527
+ }
528
+
515
529
function plotDrag ( dx , dy ) {
516
530
var dxScaled = dx / _this . xaxis . _m ,
517
531
dyScaled = dy / _this . yaxis . _m ;
518
532
mins = {
519
533
a : mins0 . a - dyScaled ,
520
- b : mins0 . b + dxScaled + dyScaled / 2 ,
521
- c : mins0 . c - dxScaled + dyScaled / 2
534
+ b : mins0 . b + ( dxScaled + dyScaled ) / 2 ,
535
+ c : mins0 . c - ( dxScaled - dyScaled ) / 2
522
536
} ;
523
537
var minsorted = [ mins . a , mins . b , mins . c ] . sort ( ) ,
524
538
minindices = {
@@ -528,12 +542,12 @@ proto.init_interactions = function() {
528
542
} ;
529
543
if ( minsorted [ 0 ] < 0 ) {
530
544
if ( minsorted [ 1 ] + minsorted [ 0 ] / 2 < 0 ) {
531
- minsorted [ 2 ] - = minsorted [ 0 ] + minsorted [ 1 ] ;
545
+ minsorted [ 2 ] + = minsorted [ 0 ] + minsorted [ 1 ] ;
532
546
minsorted [ 0 ] = minsorted [ 1 ] = 0 ;
533
547
}
534
548
else {
535
- minsorted [ 2 ] - = minsorted [ 0 ] / 2 ;
536
- minsorted [ 1 ] - = minsorted [ 0 ] / 2 ;
549
+ minsorted [ 2 ] + = minsorted [ 0 ] / 2 ;
550
+ minsorted [ 1 ] + = minsorted [ 0 ] / 2 ;
537
551
minsorted [ 0 ] = 0 ;
538
552
}
539
553
mins = {
@@ -552,8 +566,8 @@ proto.init_interactions = function() {
552
566
553
567
// move the ticks
554
568
_this . aaxis . range = [ mins . a , _this . sum - mins . b - mins . c ] ;
555
- _this . baxis . range = [ mins . b , _this . sum - mins . a - mins . c ] ;
556
- _this . caxis . range = [ mins . c , _this . sum - mins . b - mins . b ] ;
569
+ _this . baxis . range = [ _this . sum - mins . a - mins . c , mins . b ] ;
570
+ _this . caxis . range = [ _this . sum - mins . a - mins . b , mins . c ] ;
557
571
558
572
Axes . doTicks ( _this . graphDiv , _this . aaxis , true ) ;
559
573
Axes . doTicks ( _this . graphDiv , _this . baxis , true ) ;
0 commit comments