Torkel Ödegaard 10 роки тому
батько
коміт
8db47e335f

+ 3 - 4
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') {

+ 5 - 11
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;

+ 2 - 5
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;
-})
+});

+ 2 - 2
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;

+ 31 - 22
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;
         }
       }

+ 1 - 1
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;