@@ -206,8 +206,8 @@ function setupDragElement(gd, shapePath, shapeOptions, index, shapeLayer, editHe
206
206
var xRefType = Axes . getRefType ( shapeOptions . xref ) ;
207
207
var ya = Axes . getFromId ( gd , shapeOptions . yref ) ;
208
208
var yRefType = Axes . getRefType ( shapeOptions . yref ) ;
209
- var x2p = helpers . getDataToPixel ( gd , xa , false , xRefType ) ;
210
- var y2p = helpers . getDataToPixel ( gd , ya , true , yRefType ) ;
209
+ var x2p = helpers . getDataToPixel ( gd , xa , false , xRefType , helpers . keyIfDefined ( xa , 'type' ) ) ;
210
+ var y2p = helpers . getDataToPixel ( gd , ya , true , yRefType , helpers . keyIfDefined ( ya , 'type' ) ) ;
211
211
var p2x = helpers . getPixelToData ( gd , xa , false , xRefType ) ;
212
212
var p2y = helpers . getPixelToData ( gd , ya , true , yRefType ) ;
213
213
@@ -392,7 +392,7 @@ function setupDragElement(gd, shapePath, shapeOptions, index, shapeLayer, editHe
392
392
}
393
393
if ( ax && ax . type === 'category' ) {
394
394
move = function ( xy ) {
395
- return p2xy ( helpers . castNumericStringsToNumbers ( xy2p ) ( xy ) + dxy ) ;
395
+ return p2xy ( xy2p ( xy ) + dxy ) ;
396
396
} ;
397
397
}
398
398
return move ;
@@ -585,36 +585,16 @@ function getPathString(gd, options) {
585
585
var gs = gd . _fullLayout . _size ;
586
586
var x2r , x2p , y2r , y2p ;
587
587
var x0 , x1 , y0 , y1 ;
588
+ var x2pDecoSelect , y2pDecoSelect ;
588
589
589
- if ( xa ) {
590
- if ( xRefType === 'domain' ) {
591
- x2p = function ( v ) { return xa . _offset + xa . _length * v ; } ;
592
- } else {
593
- x2r = helpers . shapePositionToRange ( xa ) ;
594
- x2p = function ( v ) { return xa . _offset + xa . r2p ( x2r ( v , true ) ) ; } ;
595
- }
596
- } else {
597
- x2p = function ( v ) { return gs . l + gs . w * v ; } ;
598
- }
599
-
600
- if ( ya ) {
601
- if ( yRefType === 'domain' ) {
602
- y2p = function ( v ) { return ya . _offset + ya . _length * ( 1 - v ) ; } ;
603
- } else {
604
- y2r = helpers . shapePositionToRange ( ya ) ;
605
- y2p = function ( v ) { return ya . _offset + ya . r2p ( y2r ( v , true ) ) ; } ;
606
- }
607
- } else {
608
- y2p = function ( v ) { return gs . t + gs . h * ( 1 - v ) ; } ;
590
+ if ( type === 'path' ) {
591
+ x2pDecoSelect = helpers . keyIfDefined ( xa , 'type' ) ;
592
+ y2pDecoSelect = helpers . keyIfDefined ( ya , 'type' ) ;
609
593
}
594
+ x2p = helpers . getDataToPixel ( gd , xa , false , xRefType , x2pDecoSelect ) ;
595
+ y2p = helpers . getDataToPixel ( gd , ya , true , yRefType , y2pDecoSelect ) ;
610
596
611
- if ( type === 'path' ) {
612
- if ( xa && xa . type === 'date' ) x2p = helpers . decodeDate ( x2p ) ;
613
- if ( ya && ya . type === 'date' ) y2p = helpers . decodeDate ( y2p ) ;
614
- // the SVG path is always a string, so for categories numeric strings
615
- // are always converted to numbers when seen in a SVG path
616
- if ( xa && xa . type === 'category' ) x2p = helpers . castNumericStringsToNumbers ( x2p ) ;
617
- if ( ya && ya . type === 'category' ) y2p = helpers . castNumericStringsToNumbers ( y2p ) ;
597
+ if ( type === 'path' ) {
618
598
return convertPath ( options , x2p , y2p ) ;
619
599
}
620
600
0 commit comments