feat(influxdb): began work on influxdb policy selector

This commit is contained in:
Torkel Ödegaard 2016-01-17 17:53:38 +01:00
parent 0cb68b86fc
commit a8e3f731b7
5 changed files with 26 additions and 1 deletions

View File

@ -12,6 +12,7 @@ export default class InfluxQuery {
constructor(target) {
this.target = target;
target.policy = target.policy || 'default';
target.dsType = 'influxdb';
target.resultFormat = target.resultFormat || 'time_series';
target.tags = target.tags || [];

View File

@ -45,6 +45,9 @@
<li class="tight-form-item query-keyword" style="width: 75px">
FROM
</li>
<li>
<metric-segment segment="policySegment" get-options="getPolicySegments()" on-change="policyChanged()"></metric-segment>
</li>
<li>
<metric-segment segment="measurementSegment" get-options="getMeasurements()" on-change="measurementChanged()"></metric-segment>
</li>

View File

@ -62,6 +62,9 @@ function (_) {
} else if (type === 'FIELDS') {
query = 'SHOW FIELD KEYS FROM "' + this.target.measurement + '"';
return query;
} else if (type === 'RETENTION POLICIES') {
query = 'SHOW RETENTION POLICIES';
return query;
}
if (measurement) {

View File

@ -28,6 +28,8 @@ function (angular, _, InfluxQueryBuilder, InfluxQuery, queryPart) {
{text: 'Table', value: 'table'},
];
$scope.policySegment = uiSegmentSrv.newSegment($scope.target.policy);
if (!$scope.target.measurement) {
$scope.measurementSegment = uiSegmentSrv.newSelectMeasurement();
} else {
@ -131,6 +133,18 @@ function (angular, _, InfluxQueryBuilder, InfluxQuery, queryPart) {
$scope.get_data();
};
$scope.getPolicySegments = function() {
var policiesQuery = $scope.queryBuilder.buildExploreQuery('RETENTION POLICIES');
return $scope.datasource.metricFindQuery(policiesQuery)
.then($scope.transformToSegments(false))
.then(null, $scope.handleQueryError);
};
$scope.policyChanged = function() {
$scope.target.policy = $scope.policySegment.value;
$scope.get_data();
};
$scope.toggleQueryMode = function () {
$scope.target.rawQuery = !$scope.target.rawQuery;
};

View File

@ -70,6 +70,10 @@ describe('InfluxQueryBuilder', function() {
expect(query).to.be('SHOW FIELD KEYS FROM "cpu"');
});
it('should build show retention policies query', function() {
var builder = new InfluxQueryBuilder({measurement: 'cpu', tags: []});
var query = builder.buildExploreQuery('RETENTION POLICIES');
expect(query).to.be('SHOW RETENTION POLICIES');
});
});
});