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

fix: templating issue with data source variables, can now be used right away in other query variables and panels (without page reload), fixes #7510

Torkel Ödegaard 8 лет назад
Родитель
Сommit
68c4ce34d5

+ 4 - 0
public/app/core/services/datasource_srv.js

@@ -129,6 +129,10 @@ function (angular, _, coreModule, config) {
         }
 
         var first = variable.current.value;
+        if (first === 'default') {
+          first = config.defaultDatasource;
+        }
+
         var ds = config.datasources[first];
 
         if (ds) {

+ 9 - 8
public/app/features/templating/editor_ctrl.ts

@@ -35,14 +35,6 @@ export class VariableEditorCtrl {
     $scope.init = function() {
       $scope.mode = 'list';
 
-      $scope.datasources = _.filter(datasourceSrv.getMetricSources(), function(ds) {
-        return !ds.meta.mixed && ds.value !== null;
-      });
-
-      $scope.datasourceTypes = _($scope.datasources).uniqBy('meta.id').map(function(ds) {
-        return {text: ds.meta.name, value: ds.meta.id};
-      }).value();
-
       $scope.variables = variableSrv.variables;
       $scope.reset();
 
@@ -130,6 +122,15 @@ export class VariableEditorCtrl {
     $scope.reset = function() {
       $scope.currentIsNew = true;
       $scope.current = variableSrv.createVariableFromModel({type: 'query'});
+
+      // this is done here in case a new data source type variable was added
+      $scope.datasources = _.filter(datasourceSrv.getMetricSources(), function(ds) {
+        return !ds.meta.mixed && ds.value !== null;
+      });
+
+      $scope.datasourceTypes = _($scope.datasources).uniqBy('meta.id').map(function(ds) {
+        return {text: ds.meta.name, value: ds.meta.id};
+      }).value();
     };
 
     $scope.typeChanged = function() {