From 7e66d0bcc1b2a5049e1f5229f23770dff758851e Mon Sep 17 00:00:00 2001 From: bergquist Date: Mon, 18 Apr 2016 15:25:06 +0200 Subject: [PATCH 1/4] fix(): remove only usage in tests --- public/test/core/utils/emitter_specs.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/test/core/utils/emitter_specs.ts b/public/test/core/utils/emitter_specs.ts index f7076c46719..fec4d02a649 100644 --- a/public/test/core/utils/emitter_specs.ts +++ b/public/test/core/utils/emitter_specs.ts @@ -24,7 +24,7 @@ describe("Emitter", () => { expect(sub2Called).to.be(true); }); - it.only('should handle errors', () => { + it('should handle errors', () => { var events = new Emitter(); var sub1Called = 0; var sub2Called = 0; From fde6eee4f4ac9326ccad44059ef9ffff2927204c Mon Sep 17 00:00:00 2001 From: bergquist Date: Mon, 18 Apr 2016 16:17:03 +0200 Subject: [PATCH 2/4] 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", () => { From 267ab822c2650f19f86e1c46460bf027cec98ef7 Mon Sep 17 00:00:00 2001 From: bergquist Date: Mon, 18 Apr 2016 18:46:50 +0200 Subject: [PATCH 3/4] tech(influxdb): uses hashmap for uniqueness --- .../datasource/influxdb/response_parser.ts | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/public/app/plugins/datasource/influxdb/response_parser.ts b/public/app/plugins/datasource/influxdb/response_parser.ts index ec0b1a4c249..cb1efea6b33 100644 --- a/public/app/plugins/datasource/influxdb/response_parser.ts +++ b/public/app/plugins/datasource/influxdb/response_parser.ts @@ -12,27 +12,29 @@ export default class ResponseParser { return []; } - var res = []; - _.each(influxResults.series, (serie) => { - _.each(serie.values, (value) => { + var newInfluxdbFormat = query.toLowerCase().indexOf('show tag values') >= 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])}); + if (newInfluxdbFormat) { + addUnique(res, value[1] || value[0]); } else { - addUnique(res, { text: value[0]}); + addUnique(res, value[0]); } } else { - addUnique(res, {text: value}); + addUnique(res, value); } }); }); - return res; + return _.map(res, value => { + return { text: value}; + }); } } function addUnique(arr, value) { - if (!_.any(arr, value)) { - arr.push(value); - } + arr[value] = value; } From c148e54bbd7347c911f6220a8aa2368ccd9fb195 Mon Sep 17 00:00:00 2001 From: bergquist Date: Mon, 18 Apr 2016 18:52:09 +0200 Subject: [PATCH 4/4] style(influxdb): improve naming --- public/app/plugins/datasource/influxdb/response_parser.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/public/app/plugins/datasource/influxdb/response_parser.ts b/public/app/plugins/datasource/influxdb/response_parser.ts index cb1efea6b33..23173674361 100644 --- a/public/app/plugins/datasource/influxdb/response_parser.ts +++ b/public/app/plugins/datasource/influxdb/response_parser.ts @@ -12,13 +12,13 @@ export default class ResponseParser { return []; } - var newInfluxdbFormat = query.toLowerCase().indexOf('show tag values') >= 0; + var influxdb11format = query.toLowerCase().indexOf('show tag values') >= 0; var res = {}; _.each(influxResults.series, serie => { _.each(serie.values, value => { if (_.isArray(value)) { - if (newInfluxdbFormat) { + if (influxdb11format) { addUnique(res, value[1] || value[0]); } else { addUnique(res, value[0]);