mirror of
https://github.com/grafana/grafana.git
synced 2025-01-10 08:03:58 -06:00
feat(influxdb): began work on influxdb policy selector
This commit is contained in:
parent
0cb68b86fc
commit
a8e3f731b7
@ -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 || [];
|
||||
|
@ -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>
|
||||
|
@ -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) {
|
||||
|
@ -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;
|
||||
};
|
||||
|
@ -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');
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user