|
@@ -55,7 +55,7 @@ export default class InfluxDatasource {
|
|
|
query = query.replace(/\$interval/g, (target.interval || options.interval));
|
|
query = query.replace(/\$interval/g, (target.interval || options.interval));
|
|
|
return query;
|
|
return query;
|
|
|
|
|
|
|
|
- }).join("\n");
|
|
|
|
|
|
|
+ }).join(";");
|
|
|
|
|
|
|
|
// replace grafana variables
|
|
// replace grafana variables
|
|
|
allQueries = allQueries.replace(/\$timeFilter/g, timeFilter);
|
|
allQueries = allQueries.replace(/\$timeFilter/g, timeFilter);
|
|
@@ -133,6 +133,17 @@ export default class InfluxDatasource {
|
|
|
return this._influxRequest('GET', '/query', {q: query, epoch: 'ms'});
|
|
return this._influxRequest('GET', '/query', {q: query, epoch: 'ms'});
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
|
|
+ serializeParams(params) {
|
|
|
|
|
+ if (!params) { return '';}
|
|
|
|
|
+
|
|
|
|
|
+ return _.reduce(params, (memo, value, key) => {
|
|
|
|
|
+ if (value === null || value === undefined) { return memo; }
|
|
|
|
|
+ memo.push(encodeURIComponent(key) + '=' + encodeURIComponent(value));
|
|
|
|
|
+ return memo;
|
|
|
|
|
+ }, []).join("&");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
testDatasource() {
|
|
testDatasource() {
|
|
|
return this.metricFindQuery('SHOW MEASUREMENTS LIMIT 1').then(() => {
|
|
return this.metricFindQuery('SHOW MEASUREMENTS LIMIT 1').then(() => {
|
|
|
return { status: "success", message: "Data source is working", title: "Success" };
|
|
return { status: "success", message: "Data source is working", title: "Success" };
|
|
@@ -166,6 +177,7 @@ export default class InfluxDatasource {
|
|
|
data: data,
|
|
data: data,
|
|
|
precision: "ms",
|
|
precision: "ms",
|
|
|
inspect: { type: 'influxdb' },
|
|
inspect: { type: 'influxdb' },
|
|
|
|
|
+ paramSerializer: this.serializeParams,
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
options.headers = options.headers || {};
|
|
options.headers = options.headers || {};
|