Commit c8c9e0a7 by carl bergquist

feat(elasticsearch): improve pipeline aggs structure

parent 0f65cb2b
......@@ -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,18 +45,16 @@
</ul>
<div class="clearfix"></div>
</div>
<div ng-if="agg.pipelineAgg !== undefined">
<div class="tight-form" ng-repeat="setting in agg.pipelineSettings">
<ul class="tight-form-list">
<li class="tight-form-item" style="width: 100px">
{{stat.text}}
</li>
<li class="tight-form-item last">
<editor-checkbox text="" model="agg.meta.{{stat.value}}" change="onChange()"></editor-checkbox>
</li>
</ul>
<div class="clearfix"></div>
</div>
<div class="tight-form last" ng-if="agg.settings.window !== undefined">
<ul class="tight-form-list">
<li class="tight-form-item" style="width: 75px;">
Window
</li>
<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 class="tight-form last" ng-if="agg.type === 'percentiles'">
<ul class="tight-form-list">
......
......@@ -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;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment