Переглянути джерело

feat(templating): added new template variable type constant

Torkel Ödegaard 9 роки тому
батько
коміт
1ea54049d0

+ 20 - 0
public/app/features/templating/editorCtrl.js

@@ -25,6 +25,7 @@ function (angular, _) {
       {value: "interval",   text: "Interval"},
       {value: "datasource", text: "Data source"},
       {value: "custom",     text: "Custom"},
+      {value: "constant",   text: "Constant"},
     ];
 
     $scope.refreshOptions = [
@@ -141,15 +142,34 @@ function (angular, _) {
       $scope.current = angular.copy(replacementDefaults);
     };
 
+    $scope.showSelectionOptions = function() {
+      if ($scope.current) {
+        if ($scope.current.type === 'query') {
+          return true;
+        }
+        if ($scope.current.type === 'custom') {
+          return true;
+        }
+      }
+      return false;
+    };
+
     $scope.typeChanged = function () {
       if ($scope.current.type === 'interval') {
         $scope.current.query = '1m,10m,30m,1h,6h,12h,1d,7d,14d,30d';
+        $scope.current.refresh = 0;
       }
 
       if ($scope.current.type === 'query') {
         $scope.current.query = '';
       }
 
+      if ($scope.current.type === 'constant') {
+        $scope.current.query = '';
+        $scope.current.refresh = 0;
+        $scope.current.hide = 2;
+      }
+
       if ($scope.current.type === 'datasource') {
         $scope.current.query = $scope.datasourceTypes[0].value;
         $scope.current.regex = '';

+ 9 - 1
public/app/features/templating/partials/editor.html

@@ -152,6 +152,14 @@
 				</div>
 			</div>
 
+			<div ng-show="current.type === 'constant'" class="gf-form-group">
+        <h5 class="section-heading">Constant options</h5>
+				<div class="gf-form">
+					<span class="gf-form-label">Value</span>
+					<input type="text" class="gf-form-input" ng-model='current.query' ng-blur="runQuery()" placeholder="your metric prefix"></input>
+				</div>
+			</div>
+
 			<div ng-show="current.type === 'query'" class="gf-form-group">
         <h5 class="section-heading">Query Options</h5>
 
@@ -214,7 +222,7 @@
         </div>
       </div>
 
-      <div class="section gf-form-group" ng-hide="current.type === 'datasource'">
+      <div class="section gf-form-group" ng-show="showSelectionOptions()">
         <h5 class="section-heading">Selection Options</h5>
         <div class="section">
           <gf-form-switch class="gf-form"

+ 7 - 1
public/app/features/templating/templateValuesSrv.js

@@ -168,6 +168,11 @@ function (angular, _, kbn) {
         return;
       }
 
+      if (variable.type === 'constant') {
+        variable.options = [{text: variable.query, value: variable.query}];
+        return;
+      }
+
       // extract options in comma seperated string
       variable.options = _.map(variable.query.split(/[,]+/), function(text) {
         return { text: text.trim(), value: text.trim() };
@@ -175,6 +180,7 @@ function (angular, _, kbn) {
 
       if (variable.type === 'interval') {
         self.updateAutoInterval(variable);
+        return;
       }
 
       if (variable.type === 'custom' && variable.includeAll) {
@@ -273,7 +279,7 @@ function (angular, _, kbn) {
         if (currentOption) {
           return self.setVariableValue(variable, currentOption, false);
         } else {
-          if (!variable.options.length) { return; }
+          if (!variable.options.length) { return $q.when(null); }
           return self.setVariableValue(variable, variable.options[0]);
         }
       }