Quellcode durchsuchen

feat(plugins): added better error message when trying to load data source plugin module that is missing datasource constructor

Torkel Ödegaard vor 10 Jahren
Ursprung
Commit
15546dd84e
2 geänderte Dateien mit 7 neuen und 4 gelöschten Zeilen
  1. 4 0
      public/app/core/services/alert_srv.js
  2. 3 4
      public/app/core/services/datasource_srv.js

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

@@ -46,6 +46,10 @@ function (angular, _, coreModule) {
         }, timeout);
         }, timeout);
       }
       }
 
 
+      if (!$rootScope.$$phase) {
+        $rootScope.$digest();
+      }
+
       return(newAlert);
       return(newAlert);
     };
     };
 
 

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

@@ -7,7 +7,7 @@ define([
 function (angular, _, coreModule, config) {
 function (angular, _, coreModule, config) {
   'use strict';
   'use strict';
 
 
-  coreModule.default.service('datasourceSrv', function($q, $injector) {
+  coreModule.default.service('datasourceSrv', function($q, $injector, $rootScope) {
     var self = this;
     var self = this;
 
 
     this.init = function() {
     this.init = function() {
@@ -60,7 +60,6 @@ function (angular, _, coreModule, config) {
       var deferred = $q.defer();
       var deferred = $q.defer();
       var pluginDef = dsConfig.meta;
       var pluginDef = dsConfig.meta;
 
 
-      console.log(pluginDef);
       System.import(pluginDef.module).then(function(plugin) {
       System.import(pluginDef.module).then(function(plugin) {
         // check if its in cache now
         // check if its in cache now
         if (self.datasources[name]) {
         if (self.datasources[name]) {
@@ -70,7 +69,7 @@ function (angular, _, coreModule, config) {
 
 
         // plugin module needs to export a constructor function named Datasource
         // plugin module needs to export a constructor function named Datasource
         if (!plugin.Datasource) {
         if (!plugin.Datasource) {
-          return;
+          throw "Plugin module is missing Datasource constructor";
         }
         }
 
 
         var instance = $injector.instantiate(plugin.Datasource, {instanceSettings: dsConfig});
         var instance = $injector.instantiate(plugin.Datasource, {instanceSettings: dsConfig});
@@ -79,7 +78,7 @@ function (angular, _, coreModule, config) {
         self.datasources[name] = instance;
         self.datasources[name] = instance;
         deferred.resolve(instance);
         deferred.resolve(instance);
       }).catch(function(err) {
       }).catch(function(err) {
-        console.log('Failed to load data source: ' + err);
+        $rootScope.appEvent('alert-error', [dsConfig.name + ' plugin failed', err.toString()]);
       });
       });
 
 
       return deferred.promise;
       return deferred.promise;