fix(influxdb): adds support for multi table values

When quering for tag values without measurement
all tags and values should be shown

closes #4726
pull/4750/head
bergquist 10 years ago
parent 7e66d0bcc1
commit fde6eee4f4
  1. 28
      public/app/plugins/datasource/influxdb/response_parser.ts
  2. 26
      public/app/plugins/datasource/influxdb/specs/response_parser_specs.ts

@ -12,17 +12,27 @@ export default class ResponseParser {
return []; return [];
} }
var series = influxResults.series[0]; var res = [];
return _.map(series.values, (value) => { _.each(influxResults.series, (serie) => {
if (_.isArray(value)) { _.each(serie.values, (value) => {
if (query.toLowerCase().indexOf('show tag values') >= 0) { if (_.isArray(value)) {
return { text: (value[1] || value[0]) }; if (query.toLowerCase().indexOf('show tag values') >= 0) {
addUnique(res, { text: (value[1] || value[0])});
} else {
addUnique(res, { text: value[0]});
}
} else { } 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);
} }
} }

@ -38,7 +38,7 @@ describe("influxdb response parser", () => {
{ {
"name": "hostnameTagValues", "name": "hostnameTagValues",
"columns": ["hostname"], "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 = { var response = {
"results": [ "results": [
{ {
@ -62,8 +62,19 @@ describe("influxdb response parser", () => {
{ {
"name": "cpu", "name": "cpu",
"columns": [ "key", "value"], "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); var result = this.parser.parse(query, response);
it("should get two responses", () => { 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[0].text).to.be('site');
expect(result[1].text).to.be('api'); expect(result[1].text).to.be('api');
expect(result[2].text).to.be('webapi');
}); });
}); });
}); });
describe("SHOW FIELD response", () => { describe("SHOW FIELD response", () => {

Loading…
Cancel
Save