From 6160978019e9a43843de062d3af0e36a9b6503d4 Mon Sep 17 00:00:00 2001 From: Daniel Lee Date: Fri, 21 Apr 2017 16:54:56 +0200 Subject: [PATCH] singlestat: with table data, support string values If the selected table column is string then show that in the singlestat --- public/app/plugins/panel/singlestat/module.ts | 14 ++++++++++---- .../panel/singlestat/specs/singlestat_specs.ts | 12 ++++++++++++ 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/public/app/plugins/panel/singlestat/module.ts b/public/app/plugins/panel/singlestat/module.ts index 8000b844bf9..406aedb3877 100644 --- a/public/app/plugins/panel/singlestat/module.ts +++ b/public/app/plugins/panel/singlestat/module.ts @@ -174,10 +174,16 @@ class SingleStatCtrl extends MetricsPanelCtrl { const datapoint = tableData[0][0]; data.value = datapoint[this.panel.tableColumn]; - var decimalInfo = this.getDecimalsForValue(data.value); - var formatFunc = kbn.valueFormats[this.panel.format]; - data.valueFormatted = formatFunc(datapoint[this.panel.tableColumn], decimalInfo.decimals, decimalInfo.scaledDecimals); - data.valueRounded = kbn.roundValue(data.value, this.panel.decimals || 0); + if (_.isString(data.value)) { + data.valueFormatted = _.escape(data.value); + data.value = 0; + data.valueRounded = 0; + } else { + const decimalInfo = this.getDecimalsForValue(data.value); + const formatFunc = kbn.valueFormats[this.panel.format]; + data.valueFormatted = formatFunc(datapoint[this.panel.tableColumn], decimalInfo.decimals, decimalInfo.scaledDecimals); + data.valueRounded = kbn.roundValue(data.value, this.panel.decimals || 0); + } this.setValueMapping(data); } diff --git a/public/app/plugins/panel/singlestat/specs/singlestat_specs.ts b/public/app/plugins/panel/singlestat/specs/singlestat_specs.ts index 2bc36d67c3a..6e05266b8fe 100644 --- a/public/app/plugins/panel/singlestat/specs/singlestat_specs.ts +++ b/public/app/plugins/panel/singlestat/specs/singlestat_specs.ts @@ -242,6 +242,18 @@ describe('SingleStatCtrl', function() { expect(ctx.data.valueFormatted).to.be('NOT OK'); }); }); + + singleStatScenario('When value is string', function(ctx) { + ctx.setup(function() { + ctx.data = tableData; + ctx.data[0].rows[0] = [1492759673649,'ignore1', 65, 'ignore2']; + ctx.ctrl.panel.tableColumn = 'test1'; + }); + + it('Should replace value with text NOT OK', function() { + expect(ctx.data.valueFormatted).to.be('ignore1'); + }); + }); }); });