diff --git a/public/app/plugins/datasource/elasticsearch/bucketAgg.js b/public/app/plugins/datasource/elasticsearch/bucketAgg.js index 6a618cceea7..43a346ea28c 100644 --- a/public/app/plugins/datasource/elasticsearch/bucketAgg.js +++ b/public/app/plugins/datasource/elasticsearch/bucketAgg.js @@ -44,11 +44,10 @@ function (angular, _, queryDef) { $scope.agg.size = $scope.agg.size || "0"; $scope.agg.orderBy = $scope.agg.orderBy || "_term"; - if ($scope.agg.size === '0') { - $scope.settingsLinkText = ""; - } else { - $scope.settingsLinkText = queryDef.describeOrder($scope.agg.order) + ' ' + $scope.agg.size + ', ' + if ($scope.agg.size !== '0') { + $scope.settingsLinkText = queryDef.describeOrder($scope.agg.order) + ' ' + $scope.agg.size + ', '; } + $scope.settingsLinkText += 'Order by: ' + queryDef.describeOrderBy($scope.agg.orderBy, $scope.target); if ($scope.agg.size === '0') { diff --git a/public/app/plugins/datasource/elasticsearch/datasource.js b/public/app/plugins/datasource/elasticsearch/datasource.js index db9ec0f413e..0bf9d5765ac 100644 --- a/public/app/plugins/datasource/elasticsearch/datasource.js +++ b/public/app/plugins/datasource/elasticsearch/datasource.js @@ -12,7 +12,7 @@ function (angular, _, moment, ElasticQueryBuilder, IndexPattern) { var module = angular.module('grafana.services'); - module.factory('ElasticDatasource', function($q, backendSrv, templateSrv, timeSrv) { + module.factory('ElasticDatasource', function($q, backendSrv, templateSrv) { function ElasticDatasource(datasource) { this.type = 'elasticsearch'; @@ -20,7 +20,7 @@ function (angular, _, moment, ElasticQueryBuilder, IndexPattern) { this.url = datasource.url; this.name = datasource.name; this.index = datasource.index; - this.indexPattern = new IndexPattern(datasource.index, datasource.jsonData.interval) + this.indexPattern = new IndexPattern(datasource.index, datasource.jsonData.interval); } ElasticDatasource.prototype._request = function(method, url, index, data) { @@ -176,9 +176,7 @@ function (angular, _, moment, ElasticQueryBuilder, IndexPattern) { // This is quite complex // neeed to recurise down the nested buckets to build series ElasticDatasource.prototype._processBuckets = function(aggs, target, series, level, parentName) { - var seriesName, value, metric, i, y, z, bucket, childBucket, aggDef, esAgg; - var buckets; - var dataFound = 0; + var seriesName, value, metric, i, y, bucket, aggDef, esAgg; function addMetricPoint(seriesName, value, time) { var current = series[seriesName]; @@ -210,7 +208,7 @@ function (angular, _, moment, ElasticQueryBuilder, IndexPattern) { case 'percentiles': { var values = bucket[metric.id].values; for (var prop in values) { - addMetricPoint(seriesName + ' ' + prop, values[prop], bucket.key) + addMetricPoint(seriesName + ' ' + prop, values[prop], bucket.key); } break; } @@ -219,7 +217,7 @@ function (angular, _, moment, ElasticQueryBuilder, IndexPattern) { for (var statIndex in metric.stats) { var statName = metric.stats[statIndex]; - addMetricPoint(seriesName + ' ' + statName, stats[statName], bucket.key) + addMetricPoint(seriesName + ' ' + statName, stats[statName], bucket.key); } break; } @@ -264,9 +262,6 @@ function (angular, _, moment, ElasticQueryBuilder, IndexPattern) { }; ElasticDatasource.prototype.metricFindQuery = function() { - var timeFrom = this.translateTime(timeSrv.time.from); - var timeTo = this.translateTime(timeSrv.time.to); - return this._get('/_mapping').then(function(res) { var fields = {}; @@ -291,7 +286,6 @@ function (angular, _, moment, ElasticQueryBuilder, IndexPattern) { return fields; }); - }; return ElasticDatasource; diff --git a/public/app/plugins/datasource/elasticsearch/indexPattern.js b/public/app/plugins/datasource/elasticsearch/indexPattern.js index b1e24f62c97..9d94b24becd 100644 --- a/public/app/plugins/datasource/elasticsearch/indexPattern.js +++ b/public/app/plugins/datasource/elasticsearch/indexPattern.js @@ -8,7 +8,7 @@ function (_, moment) { function IndexPattern(pattern, interval) { this.pattern = pattern; this.interval = interval; - }; + } IndexPattern.prototype.getIndexForToday = function() { if (this.interval) { @@ -18,11 +18,8 @@ function (_, moment) { } }; - IndexPattern.prototype.getIndexList = function(from, to) { - }; - return IndexPattern; -}) +}); diff --git a/public/app/plugins/datasource/elasticsearch/metricAgg.js b/public/app/plugins/datasource/elasticsearch/metricAgg.js index 8f4901bde38..1fa2ebea516 100644 --- a/public/app/plugins/datasource/elasticsearch/metricAgg.js +++ b/public/app/plugins/datasource/elasticsearch/metricAgg.js @@ -16,7 +16,7 @@ function (angular, _, queryDef) { $scope.init = function() { $scope.agg = metricAggs[$scope.index]; $scope.validateModel(); - } + }; $rootScope.onAppEvent('elastic-query-updated', function() { $scope.index = _.indexOf(metricAggs, $scope.agg); @@ -44,7 +44,7 @@ function (angular, _, queryDef) { $scope.settingsLinkText = 'stats: ' + $scope.agg.stats.join(','); } } - } + }; $scope.toggleOptions = function() { $scope.showOptions = !$scope.showOptions; diff --git a/public/app/plugins/datasource/elasticsearch/queryBuilder.js b/public/app/plugins/datasource/elasticsearch/queryBuilder.js index 0090e5613f8..dbf63f69125 100644 --- a/public/app/plugins/datasource/elasticsearch/queryBuilder.js +++ b/public/app/plugins/datasource/elasticsearch/queryBuilder.js @@ -12,12 +12,41 @@ function (angular) { return filter; }; + ElasticQueryBuilder.prototype.buildTermsAgg = function(aggDef, queryNode, target) { + var metricRef, metric, size, y; + + queryNode.terms = { "field": aggDef.field }; + size = parseInt(aggDef.size, 10); + + if (size > 0) { queryNode.terms.size = size; } + if (aggDef.orderBy !== void 0) { + queryNode.terms.order = {}; + queryNode.terms.order[aggDef.orderBy] = aggDef.order; + + // if metric ref, look it up and add it to this agg level + metricRef = parseInt(aggDef.orderBy, 10); + if (!isNaN(metricRef)) { + for (y = 0; y < target.metrics.length; y++) { + metric = target.metrics[y]; + if (metric.id === aggDef.orderBy) { + queryNode.aggs = {}; + queryNode.aggs[metric.id] = {}; + queryNode.aggs[metric.id][metric.type] = {field: metric.field}; + break; + } + } + } + } + + return queryNode; + }; + ElasticQueryBuilder.prototype.build = function(target) { if (target.rawQuery) { return angular.fromJson(target.rawQuery); } - var i, y, nestedAggs, metric, metricRef; + var i, nestedAggs, metric; var query = { "size": 0, "query": { @@ -54,27 +83,7 @@ function (angular) { break; } case 'terms': { - esAgg.terms = { "field": aggDef.field }; - var size = parseInt(aggDef.size, 10); - if (size > 0) { esAgg.terms.size = size; } - if (aggDef.orderBy != void 0) { - esAgg.terms.order = {}; - esAgg.terms.order[aggDef.orderBy] = aggDef.order; - - // if metric ref, look it up and add it to this agg level - metricRef = parseInt(aggDef.orderBy, 10); - if (!isNaN(metricRef)) { - for (y = 0; y < target.metrics.length; y++) { - metric = target.metrics[y]; - if (metric.id === aggDef.orderBy) { - esAgg.aggs = {}; - esAgg.aggs[metric.id] = {} - esAgg.aggs[metric.id][metric.type] = {field: metric.field}; - break; - } - } - } - } + this.buildTermsAgg(aggDef, esAgg, target); break; } } diff --git a/public/app/plugins/datasource/elasticsearch/queryCtrl.js b/public/app/plugins/datasource/elasticsearch/queryCtrl.js index cc15a5d12a4..e259f7fa43b 100644 --- a/public/app/plugins/datasource/elasticsearch/queryCtrl.js +++ b/public/app/plugins/datasource/elasticsearch/queryCtrl.js @@ -8,7 +8,7 @@ function (angular, _, ElasticQueryBuilder) { var module = angular.module('grafana.controllers'); - module.controller('ElasticQueryCtrl', function($scope, $timeout, uiSegmentSrv, templateSrv, $q) { + module.controller('ElasticQueryCtrl', function($scope, $timeout, uiSegmentSrv, templateSrv) { $scope.init = function() { var target = $scope.target;