@@ -576,11 +576,14 @@ function drawNumbers(gd, plotGroup, cd, opts) {
576
576
var bignumberPrefix = trace . number . prefix ;
577
577
578
578
var number = numbers . select ( 'text.number' ) ;
579
- number
580
- . call ( Drawing . font , trace . number . font ) ;
581
579
582
580
function writeNumber ( ) {
583
- number . text ( bignumberPrefix + fmt ( cd [ 0 ] . y ) + bignumberSuffix ) ;
581
+ var txt = typeof cd [ 0 ] . y === 'number' ?
582
+ bignumberPrefix + fmt ( cd [ 0 ] . y ) + bignumberSuffix :
583
+ '-' ;
584
+ number . text ( txt )
585
+ . call ( Drawing . font , trace . number . font )
586
+ . call ( svgTextUtils . convertToTspans , gd ) ;
584
587
}
585
588
586
589
if ( hasTransition ( transitionOpts ) ) {
@@ -604,7 +607,7 @@ function drawNumbers(gd, plotGroup, cd, opts) {
604
607
writeNumber ( ) ;
605
608
}
606
609
607
- bignumberbBox = measureText ( bignumberPrefix + fmt ( cd [ 0 ] . y ) + bignumberSuffix , trace . number . font , numbersAnchor ) ;
610
+ bignumberbBox = measureText ( bignumberPrefix + fmt ( cd [ 0 ] . y ) + bignumberSuffix , trace . number . font , numbersAnchor , gd ) ;
608
611
return number ;
609
612
}
610
613
@@ -619,7 +622,7 @@ function drawNumbers(gd, plotGroup, cd, opts) {
619
622
return value ;
620
623
} ;
621
624
var deltaFormatText = function ( value , numberFmt ) {
622
- if ( value === 0 ) return '-' ;
625
+ if ( value === 0 || typeof value !== 'number' || isNaN ( value ) ) return '-' ;
623
626
return ( value > 0 ? trace . delta . increasing . symbol : trace . delta . decreasing . symbol ) + numberFmt ( value ) ;
624
627
} ;
625
628
var deltaFill = function ( d ) {
@@ -634,8 +637,9 @@ function drawNumbers(gd, plotGroup, cd, opts) {
634
637
. call ( Color . fill , deltaFill ( { delta : trace . _deltaLastValue } ) ) ;
635
638
636
639
function writeDelta ( ) {
637
- delta . text ( function ( ) { return deltaFormatText ( deltaValue ( cd [ 0 ] ) , deltaFmt ) ; } )
638
- . call ( Color . fill , deltaFill ( cd [ 0 ] ) ) ;
640
+ delta . text ( deltaFormatText ( deltaValue ( cd [ 0 ] ) , deltaFmt ) )
641
+ . call ( Color . fill , deltaFill ( cd [ 0 ] ) )
642
+ . call ( svgTextUtils . convertToTspans , gd ) ;
639
643
}
640
644
641
645
if ( hasTransition ( transitionOpts ) ) {
@@ -661,7 +665,7 @@ function drawNumbers(gd, plotGroup, cd, opts) {
661
665
writeDelta ( ) ;
662
666
}
663
667
664
- deltabBox = measureText ( deltaFormatText ( deltaValue ( cd [ 0 ] ) , deltaFmt ) , trace . delta . font , numbersAnchor ) ;
668
+ deltabBox = measureText ( deltaFormatText ( deltaValue ( cd [ 0 ] ) , deltaFmt ) , trace . delta . font , numbersAnchor , gd ) ;
665
669
return delta ;
666
670
}
667
671
@@ -847,14 +851,15 @@ function fitTextInsideCircle(textBB, radius) {
847
851
return [ ratio , textBB , radius ] ;
848
852
}
849
853
850
- function measureText ( txt , font , textAnchor ) {
854
+ function measureText ( txt , font , textAnchor , gd ) {
851
855
var element = document . createElementNS ( 'http://www.w3.org/2000/svg' , 'text' ) ;
852
856
var sel = d3 . select ( element ) ;
853
857
sel . text ( txt )
854
858
. attr ( 'x' , 0 )
855
859
. attr ( 'y' , 0 )
856
860
. attr ( 'text-anchor' , textAnchor )
857
861
. attr ( 'data-unformatted' , txt )
862
+ . call ( svgTextUtils . convertToTspans , gd )
858
863
. call ( Drawing . font , font ) ;
859
864
return Drawing . bBox ( sel . node ( ) ) ;
860
865
}
0 commit comments