From a1afd2328daa121a9e1790f7a5eb79f684d41fd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Mon, 23 Nov 2015 14:18:21 +0100 Subject: [PATCH] fix(elasticsearch): made interval template variable appear in group by time interval dropdown, fixes #3241 --- public/app/core/services/segment_srv.js | 19 ++++++++++++++++ .../datasource/elasticsearch/bucket_agg.js | 5 ++++- .../elasticsearch/partials/bucketAgg.html | 2 +- .../datasource/elasticsearch/query_ctrl.js | 22 +++---------------- 4 files changed, 27 insertions(+), 21 deletions(-) diff --git a/public/app/core/services/segment_srv.js b/public/app/core/services/segment_srv.js index cb11512e12f..836437a6dc5 100644 --- a/public/app/core/services/segment_srv.js +++ b/public/app/core/services/segment_srv.js @@ -7,6 +7,7 @@ function (angular, _, coreModule) { 'use strict'; coreModule.service('uiSegmentSrv', function($sce, templateSrv) { + var self = this; function MetricSegment(options) { if (options === '*' || options.value === '*') { @@ -74,6 +75,24 @@ function (angular, _, coreModule) { }); }; + this.transformToSegments = function(addTemplateVars, variableTypeFilter) { + return function(results) { + var segments = _.map(results, function(segment) { + return self.newSegment({ value: segment.text, expandable: segment.expandable }); + }); + + if (addTemplateVars) { + _.each(templateSrv.variables, function(variable) { + if (variableTypeFilter === void 0 || variableTypeFilter === variable.type) { + segments.unshift(self.newSegment({ type: 'template', value: '$' + variable.name, expandable: true })); + } + }); + } + + return segments; + }; + }; + this.newSelectMetric = function() { return new MetricSegment({value: 'select metric', fake: true}); }; diff --git a/public/app/plugins/datasource/elasticsearch/bucket_agg.js b/public/app/plugins/datasource/elasticsearch/bucket_agg.js index 00bba14af05..014761da7f2 100644 --- a/public/app/plugins/datasource/elasticsearch/bucket_agg.js +++ b/public/app/plugins/datasource/elasticsearch/bucket_agg.js @@ -15,7 +15,6 @@ function (angular, _, queryDef) { $scope.bucketAggTypes = queryDef.bucketAggTypes; $scope.orderOptions = queryDef.orderOptions; $scope.sizeOptions = queryDef.sizeOptions; - $scope.intervalOptions = queryDef.intervalOptions; $rootScope.onAppEvent('elastic-query-updated', function() { $scope.validateModel(); @@ -128,6 +127,10 @@ function (angular, _, queryDef) { } }; + $scope.getIntervalOptions = function() { + return $q.when(uiSegmentSrv.transformToSegments(true, 'interval')(queryDef.intervalOptions)); + }; + $scope.addBucketAgg = function() { // if last is date histogram add it before var lastBucket = bucketAggs[bucketAggs.length - 1]; diff --git a/public/app/plugins/datasource/elasticsearch/partials/bucketAgg.html b/public/app/plugins/datasource/elasticsearch/partials/bucketAgg.html index ddec7d85de5..f6ff3f6cd93 100644 --- a/public/app/plugins/datasource/elasticsearch/partials/bucketAgg.html +++ b/public/app/plugins/datasource/elasticsearch/partials/bucketAgg.html @@ -41,7 +41,7 @@ Interval
  • - +
  • diff --git a/public/app/plugins/datasource/elasticsearch/query_ctrl.js b/public/app/plugins/datasource/elasticsearch/query_ctrl.js index 3965286ac12..08eb734ec33 100644 --- a/public/app/plugins/datasource/elasticsearch/query_ctrl.js +++ b/public/app/plugins/datasource/elasticsearch/query_ctrl.js @@ -1,13 +1,12 @@ define([ 'angular', - 'lodash', ], -function (angular, _) { +function (angular) { 'use strict'; var module = angular.module('grafana.controllers'); - module.controller('ElasticQueryCtrl', function($scope, $timeout, uiSegmentSrv, templateSrv) { + module.controller('ElasticQueryCtrl', function($scope, $timeout, uiSegmentSrv) { $scope.init = function() { var target = $scope.target; @@ -21,7 +20,7 @@ function (angular, _) { $scope.getFields = function(type) { var jsonStr = angular.toJson({find: 'fields', type: type}); return $scope.datasource.metricFindQuery(jsonStr) - .then($scope.transformToSegments(false)) + .then(uiSegmentSrv.transformToSegments(false)) .then(null, $scope.handleQueryError); }; @@ -35,21 +34,6 @@ function (angular, _) { $scope.appEvent('elastic-query-updated'); }; - $scope.transformToSegments = function(addTemplateVars) { - return function(results) { - var segments = _.map(results, function(segment) { - return uiSegmentSrv.newSegment({ value: segment.text, expandable: segment.expandable }); - }); - - if (addTemplateVars) { - _.each(templateSrv.variables, function(variable) { - segments.unshift(uiSegmentSrv.newSegment({ type: 'template', value: '$' + variable.name, expandable: true })); - }); - } - return segments; - }; - }; - $scope.handleQueryError = function(err) { $scope.parserError = err.message || 'Failed to issue metric query'; return [];