|
|
@@ -38,12 +38,12 @@ function (angular, _, kbn) {
|
|
|
});
|
|
|
|
|
|
return this.performTimeSeriesQuery(queries, start, end)
|
|
|
- .then(function(response) {
|
|
|
- var result = _.map(response.data, function(metricData) {
|
|
|
- return transformMetricData(metricData, groupByTags);
|
|
|
- });
|
|
|
+ .then(_.bind(function(response) {
|
|
|
+ var result = _.map(response.data, _.bind(function(metricData, index) {
|
|
|
+ return transformMetricData(metricData, groupByTags, this.targets[index]);
|
|
|
+ }, this));
|
|
|
return { data: result };
|
|
|
- });
|
|
|
+ }, options));
|
|
|
};
|
|
|
|
|
|
OpenTSDBDatasource.prototype.performTimeSeriesQuery = function(queries, start, end) {
|
|
|
@@ -80,8 +80,20 @@ function (angular, _, kbn) {
|
|
|
});
|
|
|
};
|
|
|
|
|
|
- function transformMetricData(md, groupByTags) {
|
|
|
- var dps = [];
|
|
|
+ function transformMetricData(md, groupByTags, options) {
|
|
|
+ var dps = [],
|
|
|
+ tagData = [],
|
|
|
+ metricLabel = null;
|
|
|
+
|
|
|
+ if (!_.isEmpty(md.tags)) {
|
|
|
+ _.each(_.pairs(md.tags), function(tag) {
|
|
|
+ if (_.has(groupByTags, tag[0])) {
|
|
|
+ tagData.push(tag[0] + "=" + tag[1]);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ metricLabel = createMetricLabel(md.metric, tagData, options);
|
|
|
|
|
|
// TSDB returns datapoints has a hash of ts => value.
|
|
|
// Can't use _.pairs(invert()) because it stringifies keys/values
|
|
|
@@ -89,22 +101,19 @@ function (angular, _, kbn) {
|
|
|
dps.push([v, k]);
|
|
|
});
|
|
|
|
|
|
- var target = md.metric;
|
|
|
- if (!_.isEmpty(md.tags)) {
|
|
|
- var tagData = [];
|
|
|
+ return { target: metricLabel, datapoints: dps };
|
|
|
+ }
|
|
|
|
|
|
- _.each(_.pairs(md.tags), function(tag) {
|
|
|
- if (_.has(groupByTags, tag[0])) {
|
|
|
- tagData.push(tag[0] + "=" + tag[1]);
|
|
|
- }
|
|
|
- });
|
|
|
+ function createMetricLabel(metric, tagData, options) {
|
|
|
+ if (options.chartLabel) {
|
|
|
+ return options.chartLabel;
|
|
|
+ }
|
|
|
|
|
|
- if (!_.isEmpty(tagData)) {
|
|
|
- target = target + "{" + tagData.join(", ") + "}";
|
|
|
- }
|
|
|
+ if (!_.isEmpty(tagData)) {
|
|
|
+ metric += "{" + tagData.join(", ") + "}";
|
|
|
}
|
|
|
|
|
|
- return { target: target, datapoints: dps };
|
|
|
+ return metric;
|
|
|
}
|
|
|
|
|
|
function convertTargetToQuery(target) {
|