@@ -271,29 +271,15 @@ proto.updateLayout = function(fullLayout, polarLayout) {
271
271
_this . updateRadialAxis ( fullLayout , polarLayout ) ;
272
272
_this . updateRadialAxisTitle ( fullLayout , polarLayout ) ;
273
273
274
- var radialRange = _this . radialAxis . range ;
275
- var rSpan = radialRange [ 1 ] - radialRange [ 0 ] ;
276
-
277
- var xaxis = _this . xaxis = {
278
- type : 'linear' ,
274
+ _this . xaxis = _this . mockCartesianAxis ( fullLayout , polarLayout , {
279
275
_id : 'x' ,
280
- range : [ sectorBBox [ 0 ] * rSpan , sectorBBox [ 2 ] * rSpan ] ,
281
276
domain : xDomain2
282
- } ;
283
- setConvertCartesian ( xaxis , fullLayout ) ;
284
- xaxis . setScale ( ) ;
277
+ } ) ;
285
278
286
- var yaxis = _this . yaxis = {
287
- type : 'linear' ,
279
+ _this . yaxis = _this . mockCartesianAxis ( fullLayout , polarLayout , {
288
280
_id : 'y' ,
289
- range : [ sectorBBox [ 1 ] * rSpan , sectorBBox [ 3 ] * rSpan ] ,
290
281
domain : yDomain2
291
- } ;
292
- setConvertCartesian ( yaxis , fullLayout ) ;
293
- yaxis . setScale ( ) ;
294
-
295
- xaxis . isPtWithinRange = function ( d ) { return _this . isPtWithinSector ( d ) ; } ;
296
- yaxis . isPtWithinRange = function ( ) { return true ; } ;
282
+ } ) ;
297
283
298
284
_this . clipPaths . forTraces . select ( 'path' )
299
285
. attr ( 'd' , pathSectorClosed ( radius , sector , _this . vangles ) )
@@ -330,6 +316,35 @@ proto.mockAxis = function(fullLayout, polarLayout, axLayout, opts) {
330
316
return ax ;
331
317
} ;
332
318
319
+ proto . mockCartesianAxis = function ( fullLayout , polarLayout , opts ) {
320
+ var _this = this ;
321
+ var axId = opts . _id ;
322
+
323
+ var ax = Lib . extendFlat ( { type : 'linear' } , opts ) ;
324
+ setConvertCartesian ( ax , fullLayout ) ;
325
+
326
+ var bboxIndices = {
327
+ x : [ 0 , 2 ] ,
328
+ y : [ 1 , 3 ]
329
+ } ;
330
+
331
+ ax . setRange = function ( ) {
332
+ var sectorBBox = _this . sectorBBox ;
333
+ var radialRange = _this . radialAxis . range ;
334
+ var rSpan = radialRange [ 1 ] - radialRange [ 0 ] ;
335
+ var ind = bboxIndices [ axId ] ;
336
+ ax . range = [ sectorBBox [ ind [ 0 ] ] * rSpan , sectorBBox [ ind [ 1 ] ] * rSpan ] ;
337
+ } ;
338
+
339
+ ax . isPtWithinRange = axId === 'x' ?
340
+ function ( d ) { return _this . isPtWithinSector ( d ) ; } :
341
+ function ( ) { return true ; } ;
342
+
343
+ ax . setRange ( ) ;
344
+ ax . setScale ( ) ;
345
+ return ax ;
346
+ } ;
347
+
333
348
proto . doAutoRange = function ( fullLayout , polarLayout ) {
334
349
var gd = this . gd ;
335
350
var radialAxis = this . radialAxis ;
@@ -974,28 +989,29 @@ proto.updateRadialDrag = function(fullLayout, polarLayout) {
974
989
975
990
// make sure new range[1] does not change the range[0] -> range[1] sign
976
991
if ( ( drange > 0 ) !== ( rprime > range0 [ 0 ] ) ) return ;
992
+
993
+ // update radial range -> update c2g -> update _m,_b
977
994
rng1 = radialAxis . range [ 1 ] = rprime ;
995
+ radialAxis . setGeometry ( ) ;
996
+ radialAxis . setScale ( ) ;
997
+
998
+ _this . xaxis . setRange ( ) ;
999
+ _this . xaxis . setScale ( ) ;
1000
+ _this . yaxis . setRange ( ) ;
1001
+ _this . yaxis . setScale ( ) ;
978
1002
979
- doTicksSingle ( gd , _this . radialAxis , true ) ;
1003
+ doTicksSingle ( gd , radialAxis , true ) ;
980
1004
layers [ 'radial-grid' ]
981
1005
. attr ( 'transform' , strTranslate ( cx , cy ) )
982
1006
. selectAll ( 'path' ) . attr ( 'transform' , null ) ;
983
1007
984
- var rSpan = rng1 - range0 [ 0 ] ;
985
- var sectorBBox = _this . sectorBBox ;
986
- _this . xaxis . range = [ sectorBBox [ 0 ] * rSpan , sectorBBox [ 2 ] * rSpan ] ;
987
- _this . yaxis . range = [ sectorBBox [ 1 ] * rSpan , sectorBBox [ 3 ] * rSpan ] ;
988
- _this . xaxis . setScale ( ) ;
989
- _this . yaxis . setScale ( ) ;
990
-
991
1008
if ( _this . _scene ) _this . _scene . clear ( ) ;
992
1009
993
1010
for ( var traceType in _this . traceHash ) {
994
1011
var moduleCalcData = _this . traceHash [ traceType ] ;
995
1012
var moduleCalcDataVisible = Lib . filterVisible ( moduleCalcData ) ;
996
1013
var _module = moduleCalcData [ 0 ] [ 0 ] . trace . _module ;
997
1014
var polarLayoutNow = gd . _fullLayout [ _this . id ] ;
998
-
999
1015
_module . plot ( gd , _this , moduleCalcDataVisible , polarLayoutNow ) ;
1000
1016
}
1001
1017
}
0 commit comments