Просмотр исходного кода

Support OpenTSDB 2.2 fill policies, closes #3802

Ivan Babrou 10 лет назад
Родитель
Сommit
bbfdbaf952

+ 4 - 0
public/app/plugins/datasource/opentsdb/datasource.js

@@ -272,6 +272,10 @@ function (angular, _, dateMath) {
         }
 
         query.downsample = interval + "-" + target.downsampleAggregator;
+
+        if (target.downsampleFillPolicy !== "none") {
+          query.downsample += "-" + target.downsampleFillPolicy;
+        }
       }
 
       query.tags = angular.copy(target.tags);

+ 14 - 2
public/app/plugins/datasource/opentsdb/partials/query.editor.html

@@ -104,8 +104,20 @@
 			</select>
 		</li>
 
-		<li class="tight-form-item query-keyword">
-			Disable downsampling <editor-checkbox text="" model="target.disableDownsampling" change="targetBlur()"></editor-checkbox>
+    <li class="tight-form-item query-keyword">
+      Fill policy
+      <tip>Available since OpenTSDB 2.2</tip>
+    </li>
+
+    <li>
+      <select ng-model="target.downsampleFillPolicy" class="tight-form-input input-small"
+              ng-options="agg for agg in fillPolicies"
+              ng-change="targetBlur()">
+      </select>
+    </li>
+
+    <li class="tight-form-item query-keyword">
+      Disable downsampling <editor-checkbox text="" model="target.disableDownsampling" change="targetBlur()"></editor-checkbox>
 		</li>
 
 	</ul>

+ 5 - 0
public/app/plugins/datasource/opentsdb/queryCtrl.js

@@ -13,6 +13,7 @@ function (angular, _, kbn) {
     $scope.init = function() {
       $scope.target.errors = validateTarget($scope.target);
       $scope.aggregators = ['avg', 'sum', 'min', 'max', 'dev', 'zimsum', 'mimmin', 'mimmax'];
+      $scope.fillPolicies = ['none', 'nan', 'null', 'zero'];
 
       if (!$scope.target.aggregator) {
         $scope.target.aggregator = 'sum';
@@ -22,6 +23,10 @@ function (angular, _, kbn) {
         $scope.target.downsampleAggregator = 'avg';
       }
 
+      if (!$scope.target.downsampleFillPolicy) {
+        $scope.target.downsampleFillPolicy = 'none';
+      }
+
       $scope.datasource.getAggregators().then(function(aggs) {
         $scope.aggregators = aggs;
       });