@@ -420,52 +420,44 @@ function setBarCenterAndWidth(gd, pa, sieve) {
420420
421421function updatePositionAxis ( gd , pa , sieve , allowMinDtick ) {
422422 var calcTraces = sieve . traces ;
423- var distinctPositions = sieve . distinctPositions ;
424- var distinctPositions0 = distinctPositions [ 0 ] ;
425423 var minDiff = sieve . minDiff ;
426424 var vpad = minDiff / 2 ;
427425
428- Axes . minDtick ( pa , minDiff , distinctPositions0 , allowMinDtick ) ;
429-
430- // If the user set the bar width or the offset,
431- // then bars can be shifted away from their positions
432- // and widths can be larger than minDiff.
433- //
434- // Here, we compute pMin and pMax to expand the position axis,
435- // so that all bars are fully within the axis range.
436- var pMin = Math . min . apply ( Math , distinctPositions ) - vpad ;
437- var pMax = Math . max . apply ( Math , distinctPositions ) + vpad ;
426+ Axes . minDtick ( pa , sieve . minDiff , sieve . distinctPositions [ 0 ] , allowMinDtick ) ;
438427
439428 for ( var i = 0 ; i < calcTraces . length ; i ++ ) {
440429 var calcTrace = calcTraces [ i ] ;
441430 var calcTrace0 = calcTrace [ 0 ] ;
442431 var fullTrace = calcTrace0 . trace ;
443-
444- if ( fullTrace . width === undefined && fullTrace . offset === undefined ) {
445- continue ;
432+ var pts = [ ] ;
433+ var bar , l , r , j ;
434+
435+ for ( j = 0 ; j < calcTrace . length ; j ++ ) {
436+ bar = calcTrace [ j ] ;
437+ l = bar . p - vpad ;
438+ r = bar . p + vpad ;
439+ pts . push ( l , r ) ;
446440 }
447441
448- var t = calcTrace0 . t ;
449- var poffset = t . poffset ;
450- var barwidth = t . barwidth ;
451- var poffsetIsArray = Array . isArray ( poffset ) ;
452- var barwidthIsArray = Array . isArray ( barwidth ) ;
453-
454- for ( var j = 0 ; j < calcTrace . length ; j ++ ) {
455- var calcBar = calcTrace [ j ] ;
456- var calcBarOffset = ( poffsetIsArray ) ? poffset [ j ] : poffset ;
457- var calcBarWidth = ( barwidthIsArray ) ? barwidth [ j ] : barwidth ;
458- var p = calcBar . p ;
459- var l = p + calcBarOffset ;
460- var r = l + calcBarWidth ;
461-
462- pMin = Math . min ( pMin , l ) ;
463- pMax = Math . max ( pMax , r ) ;
442+ if ( fullTrace . width || fullTrace . offset ) {
443+ var t = calcTrace0 . t ;
444+ var poffset = t . poffset ;
445+ var barwidth = t . barwidth ;
446+ var poffsetIsArray = Array . isArray ( poffset ) ;
447+ var barwidthIsArray = Array . isArray ( barwidth ) ;
448+
449+ for ( j = 0 ; j < calcTrace . length ; j ++ ) {
450+ bar = calcTrace [ j ] ;
451+ var calcBarOffset = poffsetIsArray ? poffset [ j ] : poffset ;
452+ var calcBarWidth = barwidthIsArray ? barwidth [ j ] : barwidth ;
453+ l = bar . p + calcBarOffset ;
454+ r = l + calcBarWidth ;
455+ pts . push ( l , r ) ;
456+ }
464457 }
465- }
466458
467- var extremes = Axes . findExtremes ( pa , [ pMin , pMax ] , { padded : false } ) ;
468- putExtremes ( calcTraces , pa , extremes ) ;
459+ fullTrace . _extremes [ pa . _id ] = Axes . findExtremes ( pa , pts , { padded : false } ) ;
460+ }
469461}
470462
471463function expandRange ( range , newValue ) {
0 commit comments