diff --git a/draftlogs/6246_add.md b/draftlogs/6246_add.md new file mode 100644 index 00000000000..0e98256a731 --- /dev/null +++ b/draftlogs/6246_add.md @@ -0,0 +1,2 @@ + - Add `delta.prefix` and `delta.suffix` to Indicator trace [[#6246](https://github.com/plotly/plotly.js/pull/6246)], + with thanks to @paulovieira for the contribution! diff --git a/src/traces/indicator/attributes.js b/src/traces/indicator/attributes.js index c453904e000..eee26149754 100644 --- a/src/traces/indicator/attributes.js +++ b/src/traces/indicator/attributes.js @@ -248,6 +248,22 @@ module.exports = { 'Set the font used to display the delta' ].join(' ') }), + prefix: { + valType: 'string', + dflt: '', + editType: 'plot', + description: [ + 'Sets a prefix appearing before the delta.' + ].join(' ') + }, + suffix: { + valType: 'string', + dflt: '', + editType: 'plot', + description: [ + 'Sets a suffix appearing next to the delta.' + ].join(' ') + }, editType: 'calc' }, gauge: { diff --git a/src/traces/indicator/defaults.js b/src/traces/indicator/defaults.js index 3d93848af32..77457986b99 100644 --- a/src/traces/indicator/defaults.js +++ b/src/traces/indicator/defaults.js @@ -63,6 +63,8 @@ function supplyDefaults(traceIn, traceOut, defaultColor, layout) { coerce('delta.decreasing.symbol'); coerce('delta.decreasing.color'); coerce('delta.position'); + coerce('delta.prefix'); + coerce('delta.suffix'); deltaFontSize = traceOut.delta.font.size; } traceOut._scaleNumbers = (!traceOut._hasNumber || auto[0]) && (!traceOut._hasDelta || auto[1]) || false; diff --git a/src/traces/indicator/plot.js b/src/traces/indicator/plot.js index 88b9d5019b1..8c1a42e5936 100644 --- a/src/traces/indicator/plot.js +++ b/src/traces/indicator/plot.js @@ -571,7 +571,7 @@ function drawNumbers(gd, plotGroup, cd, opts) { bignumberAx.setScale(); Axes.prepTicks(bignumberAx); - var fmt = function(v) { return Axes.tickText(bignumberAx, v).text;}; + var bignumberFmt = function(v) { return Axes.tickText(bignumberAx, v).text;}; var bignumberSuffix = trace.number.suffix; var bignumberPrefix = trace.number.prefix; @@ -579,7 +579,7 @@ function drawNumbers(gd, plotGroup, cd, opts) { function writeNumber() { var txt = typeof cd[0].y === 'number' ? - bignumberPrefix + fmt(cd[0].y) + bignumberSuffix : + bignumberPrefix + bignumberFmt(cd[0].y) + bignumberSuffix : '-'; number.text(txt) .call(Drawing.font, trace.number.font) @@ -598,7 +598,7 @@ function drawNumbers(gd, plotGroup, cd, opts) { var interpolator = interpolateNumber(cd[0].lastY, cd[0].y); trace._lastValue = cd[0].y; - var transitionFmt = transitionFormat(trace.number.valueformat, fmt, cd[0].lastY, cd[0].y); + var transitionFmt = transitionFormat(trace.number.valueformat, bignumberFmt, cd[0].lastY, cd[0].y); return function(t) { that.text(bignumberPrefix + transitionFmt(interpolator(t)) + bignumberSuffix); }; @@ -607,7 +607,7 @@ function drawNumbers(gd, plotGroup, cd, opts) { writeNumber(); } - bignumberbBox = measureText(bignumberPrefix + fmt(cd[0].y) + bignumberSuffix, trace.number.font, numbersAnchor, gd); + bignumberbBox = measureText(bignumberPrefix + bignumberFmt(cd[0].y) + bignumberSuffix, trace.number.font, numbersAnchor, gd); return number; } @@ -617,13 +617,16 @@ function drawNumbers(gd, plotGroup, cd, opts) { Axes.prepTicks(deltaAx); var deltaFmt = function(v) { return Axes.tickText(deltaAx, v).text;}; + var deltaSuffix = trace.delta.suffix; + var deltaPrefix = trace.delta.prefix; + var deltaValue = function(d) { var value = trace.delta.relative ? d.relativeDelta : d.delta; return value; }; var deltaFormatText = function(value, numberFmt) { if(value === 0 || typeof value !== 'number' || isNaN(value)) return '-'; - return (value > 0 ? trace.delta.increasing.symbol : trace.delta.decreasing.symbol) + numberFmt(value); + return (value > 0 ? trace.delta.increasing.symbol : trace.delta.decreasing.symbol) + deltaPrefix + numberFmt(value) + deltaSuffix; }; var deltaFill = function(d) { return d.delta >= 0 ? trace.delta.increasing.color : trace.delta.decreasing.color; diff --git a/test/image/mocks/indicator_scatter.json b/test/image/mocks/indicator_scatter.json index 94635359f5b..256332f19b0 100644 --- a/test/image/mocks/indicator_scatter.json +++ b/test/image/mocks/indicator_scatter.json @@ -8,10 +8,6 @@ "type": "indicator", "mode": "number+delta", "delta": {"reference": 512, "valueformat": ".0f"}, - "ticker": { - "showticker": true - }, - "vmax": 500, "value": 492 }, { "name": "Users online",