Skip to content

Commit 3acb333

Browse files
committed
show NaN values as - + use convertToTspans to render exponents ok
1 parent bd0aa79 commit 3acb333

File tree

3 files changed

+16
-11
lines changed

3 files changed

+16
-11
lines changed

src/traces/indicator/defaults.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ function supplyDefaults(traceIn, traceOut, defaultColor, layout) {
3232
traceOut._hasDelta = traceOut.mode.indexOf('delta') !== -1;
3333
traceOut._hasGauge = traceOut.mode.indexOf('gauge') !== -1;
3434

35-
coerce('value');
36-
traceOut._range = [0, 1.5 * traceOut.value];
35+
var value = coerce('value');
36+
traceOut._range = [0, (typeof value === 'number' ? 1.5 * value : 1)];
3737

3838
// Number attributes
3939
var auto = new Array(2);

src/traces/indicator/plot.js

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -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
}
Loading

0 commit comments

Comments
 (0)