add opentsdb chart label field

This commit is contained in:
Helder Santana
2014-07-23 14:19:21 -04:00
parent 7dc422887c
commit 1f283d93ca
2 changed files with 40 additions and 21 deletions

View File

@@ -43,7 +43,7 @@
<ul class="grafana-segment-list" role="menu">
<li>
<input type="text"
class="input-xxlarge grafana-target-segment-input"
class="grafana-target-segment-input"
ng-model="target.metric"
spellcheck='false'
bs-typeahead="suggestMetrics"
@@ -57,6 +57,16 @@
<i class="icon-warning-sign"></i>
</a>
</li>
<li>
<input type="text"
class="grafana-target-segment-input"
ng-model="target.chartLabel"
spellcheck='false'
placeholder="chart label(optional)"
data-min-length=0 data-items=100
ng-blur="targetBlur()"
/>
</li>
<li class="grafana-target-segment">
Aggregator
<li>

View File

@@ -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]);
}
});
if (!_.isEmpty(tagData)) {
target = target + "{" + tagData.join(", ") + "}";
}
function createMetricLabel(metric, tagData, options) {
if (options.chartLabel) {
return options.chartLabel;
}
return { target: target, datapoints: dps };
if (!_.isEmpty(tagData)) {
metric += "{" + tagData.join(", ") + "}";
}
return metric;
}
function convertTargetToQuery(target) {