@@ -576,11 +576,14 @@ function drawNumbers(gd, plotGroup, cd, opts) {
576576 var bignumberPrefix = trace . number . prefix ;
577577
578578 var number = numbers . select ( 'text.number' ) ;
579- number
580- . call ( Drawing . font , trace . number . font ) ;
581579
582580 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 ) ;
584587 }
585588
586589 if ( hasTransition ( transitionOpts ) ) {
@@ -604,7 +607,7 @@ function drawNumbers(gd, plotGroup, cd, opts) {
604607 writeNumber ( ) ;
605608 }
606609
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 ) ;
608611 return number ;
609612 }
610613
@@ -619,7 +622,7 @@ function drawNumbers(gd, plotGroup, cd, opts) {
619622 return value ;
620623 } ;
621624 var deltaFormatText = function ( value , numberFmt ) {
622- if ( value === 0 ) return '-' ;
625+ if ( value === 0 || typeof value !== 'number' || isNaN ( value ) ) return '-' ;
623626 return ( value > 0 ? trace . delta . increasing . symbol : trace . delta . decreasing . symbol ) + numberFmt ( value ) ;
624627 } ;
625628 var deltaFill = function ( d ) {
@@ -634,8 +637,9 @@ function drawNumbers(gd, plotGroup, cd, opts) {
634637 . call ( Color . fill , deltaFill ( { delta : trace . _deltaLastValue } ) ) ;
635638
636639 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 ) ;
639643 }
640644
641645 if ( hasTransition ( transitionOpts ) ) {
@@ -661,7 +665,7 @@ function drawNumbers(gd, plotGroup, cd, opts) {
661665 writeDelta ( ) ;
662666 }
663667
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 ) ;
665669 return delta ;
666670 }
667671
@@ -847,14 +851,15 @@ function fitTextInsideCircle(textBB, radius) {
847851 return [ ratio , textBB , radius ] ;
848852}
849853
850- function measureText ( txt , font , textAnchor ) {
854+ function measureText ( txt , font , textAnchor , gd ) {
851855 var element = document . createElementNS ( 'http://www.w3.org/2000/svg' , 'text' ) ;
852856 var sel = d3 . select ( element ) ;
853857 sel . text ( txt )
854858 . attr ( 'x' , 0 )
855859 . attr ( 'y' , 0 )
856860 . attr ( 'text-anchor' , textAnchor )
857861 . attr ( 'data-unformatted' , txt )
862+ . call ( svgTextUtils . convertToTspans , gd )
858863 . call ( Drawing . font , font ) ;
859864 return Drawing . bBox ( sel . node ( ) ) ;
860865}
0 commit comments