diff --git a/public/app/plugins/datasource/influxdb/response_parser.ts b/public/app/plugins/datasource/influxdb/response_parser.ts index 8d2cdff0e54..ff99ee24284 100644 --- a/public/app/plugins/datasource/influxdb/response_parser.ts +++ b/public/app/plugins/datasource/influxdb/response_parser.ts @@ -3,21 +3,26 @@ import _ from 'lodash'; export default class ResponseParser { - parse(queryType, results) { - if (!results || results.results.length === 0) { return []; } - var influxResults = results.results[0]; - if (!influxResults.series) { - return []; - } + parse(queryType, results) { + if (!results || results.results.length === 0) { return []; } - var series = influxResults.series[0]; - return _.map(series.values, function(value) { - if (_.isArray(value)) { - return { text: value[0] }; - } else { - return { text: value }; - } - }); + var influxResults = results.results[0]; + if (!influxResults.series) { + return []; } + + var series = influxResults.series[0]; + return _.map(series.values, function(value) { + if (_.isArray(value)) { + if (queryType === 'SHOW_TAGS') { + return { text: (value[1] || value[0]) }; + } else { + return { text: value[0] }; + } + } else { + return { text: value }; + } + }); + } } diff --git a/public/app/plugins/datasource/influxdb/specs/response_parser_specs.ts b/public/app/plugins/datasource/influxdb/specs/response_parser_specs.ts index a52c98f0e05..506d828ab7e 100644 --- a/public/app/plugins/datasource/influxdb/specs/response_parser_specs.ts +++ b/public/app/plugins/datasource/influxdb/specs/response_parser_specs.ts @@ -2,10 +2,9 @@ import _ from 'lodash'; import {describe, beforeEach, it, sinon, expect} from 'test/lib/common'; import ResponseParser from '../response_parser'; -describe.only("influxdb response parser", () => { +describe("influxdb response parser", () => { + this.parser = new ResponseParser(); describe("SHOW_TAGS response", () => { - this.parser = new ResponseParser(); - describe("response from 0.10.0", () => { var response = { "results": [ @@ -29,6 +28,30 @@ describe.only("influxdb response parser", () => { expect(result[1].text).to.be("server2"); }); }); + + describe("response from 0.11.0", () => { + var response = { + "results": [ + { + "series": [ + { + "name": "cpu", + "columns": [ "key", "value"], + "values": [ [ "source", "site" ], [ "source", "api" ] ] + } + ] + } + ] + }; + + var result = this.parser.parse('SHOW_TAGS', response); + + it("should get two responses", () => { + expect(_.size(result)).to.be(2); + expect(result[0].text).to.be('site'); + expect(result[1].text).to.be('api'); + }); + }); }); describe("SHOW_FIELDS response", () => { @@ -54,5 +77,27 @@ describe.only("influxdb response parser", () => { expect(_.size(result)).to.be(6); }); }); + + describe("response from 0.11.0", () => { + var response = { + "results": [ + { + "series": [ + { + "name": "cpu", + "columns": ["fieldKey"], + "values": [ [ "value"] ] + } + ] + } + ] + }; + + var result = this.parser.parse('SHOW_FIELDS', response); + + it("should get two responses", () => { + expect(_.size(result)).to.be(1); + }); + }); }); });