mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
feat(elasticsearch): improve pipeline aggs structure
This commit is contained in:
@@ -13,15 +13,12 @@ function (angular, _, queryDef) {
|
||||
|
||||
$scope.metricAggTypes = queryDef.metricAggTypes;
|
||||
$scope.extendedStats = queryDef.extendedStats;
|
||||
$scope.pipelineSettings = [];
|
||||
|
||||
$scope.pipelineAggOptions = [];
|
||||
|
||||
$scope.init = function() {
|
||||
$scope.agg = metricAggs[$scope.index];
|
||||
$scope.validateModel();
|
||||
$scope.updatePipelineAggOptions();
|
||||
$scope.pipelineSettings = queryDef.getPipelineSettings($scope.agg);
|
||||
};
|
||||
|
||||
$scope.updatePipelineAggOptions = function() {
|
||||
@@ -44,7 +41,11 @@ function (angular, _, queryDef) {
|
||||
$scope.agg.pipelineAgg = $scope.agg.pipelineAgg || 'select metric';
|
||||
$scope.agg.field = $scope.agg.pipelineAgg;
|
||||
$scope.settingsLinkText = 'Options';
|
||||
delete $scope.agg.field;
|
||||
|
||||
_.each(queryDef.getPipelineOptions($scope.agg), function(opt) {
|
||||
$scope.agg.settings[opt.text] = $scope.agg.settings[opt.text] || opt.default;
|
||||
});
|
||||
|
||||
} else if (!$scope.agg.field) {
|
||||
$scope.agg.field = 'select field';
|
||||
}
|
||||
|
||||
@@ -34,9 +34,9 @@
|
||||
|
||||
<div class="tight-form" ng-if="showOptions">
|
||||
<div class="tight-form-inner-box">
|
||||
<div class="tight-form last" ng-if="agg.pipelineAgg !== undefined">
|
||||
<div class="tight-form first" ng-if="agg.pipelineAgg !== undefined">
|
||||
<ul class="tight-form-list">
|
||||
<li class="tight-form-item">
|
||||
<li class="tight-form-item" style="width: 75px;">
|
||||
Based on
|
||||
</li>
|
||||
<li>
|
||||
@@ -45,19 +45,17 @@
|
||||
</ul>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
<div ng-if="agg.pipelineAgg !== undefined">
|
||||
<div class="tight-form" ng-repeat="setting in agg.pipelineSettings">
|
||||
<div class="tight-form last" ng-if="agg.settings.window !== undefined">
|
||||
<ul class="tight-form-list">
|
||||
<li class="tight-form-item" style="width: 100px">
|
||||
{{stat.text}}
|
||||
<li class="tight-form-item" style="width: 75px;">
|
||||
Window
|
||||
</li>
|
||||
<li class="tight-form-item last">
|
||||
<editor-checkbox text="" model="agg.meta.{{stat.value}}" change="onChange()"></editor-checkbox>
|
||||
<li>
|
||||
<input type="number" class="input-medium tight-form-input" ng-change="onChangeInternal()" ng-model="agg.settings.window" blur="onChange()" spellcheck='false'>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tight-form last" ng-if="agg.type === 'percentiles'">
|
||||
<ul class="tight-form-list">
|
||||
<li class="tight-form-item">
|
||||
|
||||
@@ -68,24 +68,25 @@ function (_) {
|
||||
{text: '1d', value: '1d'},
|
||||
],
|
||||
|
||||
pipelineAggs: ['moving_avg', 'derivative'],
|
||||
|
||||
pipelineSettings: {
|
||||
'moving_avg' : ['model', 'gap_policy', 'window', 'minimize'],
|
||||
pipelineOptions: {
|
||||
'moving_avg' : [
|
||||
{text: 'window', default: 5}
|
||||
],
|
||||
'derivative': []
|
||||
},
|
||||
|
||||
getPipelineSettings: function(metric) {
|
||||
if (this.isPipelineAgg(metric) === false) {
|
||||
getPipelineOptions: function(metric) {
|
||||
if (!this.isPipelineAgg(metric)) {
|
||||
return [];
|
||||
}
|
||||
|
||||
return this.pipelineSettings[metric.type];
|
||||
return this.pipelineOptions[metric.type];
|
||||
},
|
||||
|
||||
isPipelineAgg: function(metric) {
|
||||
if (metric.type) {
|
||||
return this.pipelineAggs.indexOf(metric.type) > -1;
|
||||
var po = this.pipelineOptions[metric.type];
|
||||
return po !== null && po !== undefined;
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
Reference in New Issue
Block a user