Explorar el Código

Added fix for template variables when no options are available to select

David Raifaizen hace 10 años
padre
commit
ca42d976a7

+ 1 - 1
public/app/features/templating/templateSrv.js

@@ -27,7 +27,7 @@ function (angular, _) {
       this._texts = {};
 
       _.each(this.variables, function(variable) {
-        if (!variable.current || !variable.current.value) { return; }
+        if (!variable.current || !variable.current.isNone && !variable.current.value) { return; }
 
         this._values[variable.name] = this.renderVariableValue(variable);
         this._texts[variable.name] = variable.current.text;

+ 4 - 0
public/app/features/templating/templateValuesSrv.js

@@ -10,6 +10,7 @@ function (angular, _, kbn) {
 
   module.service('templateValuesSrv', function($q, $rootScope, datasourceSrv, $location, templateSrv, timeSrv) {
     var self = this;
+    function getNoneOption() { return { text: 'None', value: '', isNone: true }; }
 
     $rootScope.onAppEvent('time-range-changed', function()  {
       var variable = _.findWhere(self.variables, { type: 'interval' });
@@ -175,6 +176,9 @@ function (angular, _, kbn) {
         if (variable.includeAll) {
           self.addAllOption(variable);
         }
+        if (!variable.options.length) {
+          variable.options.push(getNoneOption());
+        }
         return datasource;
       });
     };

+ 3 - 2
public/test/specs/templateValuesSrv-specs.js

@@ -224,8 +224,9 @@ define([
         scenario.queryResult = [{text: 'apps.backend.backend_01.counters.req'}, {text: 'apps.backend.backend_02.counters.req'}];
       });
 
-      it('should not add non matching items', function() {
-        expect(scenario.variable.options.length).to.be(0);
+      it('should not add non matching items, None option should be added instead', function() {
+        expect(scenario.variable.options.length).to.be(1);
+        expect(scenario.variable.options[0].isNone).to.be(true);
       });
     });