From fde6eee4f4ac9326ccad44059ef9ffff2927204c Mon Sep 17 00:00:00 2001 From: bergquist Date: Mon, 18 Apr 2016 16:17:03 +0200 Subject: [PATCH] fix(influxdb): adds support for multi table values When quering for tag values without measurement all tags and values should be shown closes #4726 --- .../datasource/influxdb/response_parser.ts | 28 +++++++++++++------ .../influxdb/specs/response_parser_specs.ts | 26 +++++++++++------ 2 files changed, 36 insertions(+), 18 deletions(-) diff --git a/public/app/plugins/datasource/influxdb/response_parser.ts b/public/app/plugins/datasource/influxdb/response_parser.ts index 2e33b398a88..ec0b1a4c249 100644 --- a/public/app/plugins/datasource/influxdb/response_parser.ts +++ b/public/app/plugins/datasource/influxdb/response_parser.ts @@ -12,17 +12,27 @@ export default class ResponseParser { return []; } - var series = influxResults.series[0]; - return _.map(series.values, (value) => { - if (_.isArray(value)) { - if (query.toLowerCase().indexOf('show tag values') >= 0) { - return { text: (value[1] || value[0]) }; + var res = []; + _.each(influxResults.series, (serie) => { + _.each(serie.values, (value) => { + if (_.isArray(value)) { + if (query.toLowerCase().indexOf('show tag values') >= 0) { + addUnique(res, { text: (value[1] || value[0])}); + } else { + addUnique(res, { text: value[0]}); + } } else { - return { text: value[0] }; + addUnique(res, {text: value}); } - } else { - return { text: value }; - } + }); }); + + return res; + } +} + +function addUnique(arr, value) { + if (!_.any(arr, value)) { + arr.push(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 e58fe32dd1b..f545753d10e 100644 --- a/public/app/plugins/datasource/influxdb/specs/response_parser_specs.ts +++ b/public/app/plugins/datasource/influxdb/specs/response_parser_specs.ts @@ -38,7 +38,7 @@ describe("influxdb response parser", () => { { "name": "hostnameTagValues", "columns": ["hostname"], - "values": [ ["server1"], ["server2"] ] + "values": [ ["server1"], ["server2"], ["server2"] ] } ] } @@ -54,7 +54,7 @@ describe("influxdb response parser", () => { }); }); - describe("response from 0.11.0", () => { + describe("response from 0.12.0", () => { var response = { "results": [ { @@ -62,8 +62,19 @@ describe("influxdb response parser", () => { { "name": "cpu", "columns": [ "key", "value"], - "values": [ [ "source", "site" ], [ "source", "api" ] ] - } + "values": [ + [ "source", "site" ], + [ "source", "api" ] + ] + }, + { + "name": "logins", + "columns": [ "key", "value"], + "values": [ + [ "source", "site" ], + [ "source", "webapi"] + ] + }, ] } ] @@ -72,15 +83,12 @@ describe("influxdb response parser", () => { var result = this.parser.parse(query, response); it("should get two responses", () => { - expect(_.size(result)).to.be(2); + expect(_.size(result)).to.be(3); expect(result[0].text).to.be('site'); expect(result[1].text).to.be('api'); + expect(result[2].text).to.be('webapi'); }); }); - - - - }); describe("SHOW FIELD response", () => {