Przeglądaj źródła

HUE-8330 [editor] Fix initial database selection in the editor

Johan Ahlen 7 lat temu
rodzic
commit
71e23e7748

+ 1 - 1
apps/beeswax/src/beeswax/static/beeswax/js/beeswax.vm.js

@@ -92,7 +92,7 @@ function BeeswaxViewModel(server, apiHelper) {
   });
 
   huePubSub.subscribe("assist.database.set", function (database) {
-    if (database.source === type && self.database() !== database.name) {
+    if (database.sourceType === type && self.database() !== database.name) {
       self.database(database.name);
     }
   });

+ 1 - 1
apps/beeswax/src/beeswax/templates/execute.mako

@@ -2841,7 +2841,7 @@ viewModel = new BeeswaxViewModel("${app_name}", apiHelper);
 ko.applyBindings(viewModel, $("#beeswax-execute")[0]);
 
 var handleAssistSelection = function (databaseDef) {
-  if (databaseDef.source === snippetType && snippet.database() !== databaseDef.name) {
+  if (databaseDef.sourceType === snippetType && snippet.database() !== databaseDef.name) {
     snippet.database(databaseDef.name);
   }
 };

+ 0 - 1
apps/metastore/src/metastore/static/metastore/js/metastore.ko.js

@@ -152,7 +152,6 @@ var MetastoreViewModel = (function () {
 
     huePubSub.subscribe('assist.database.selected', function (databaseDef) {
       if (self.sourceType() !== databaseDef.sourceType) {
-        console.log(databaseDef.sourceType);
         self.sourceType(databaseDef.sourceType);
       }
       if (self.activeNamespace() !== databaseDef.namespace) {

+ 3 - 3
desktop/core/src/desktop/static/desktop/js/assist/assistDbSource.js

@@ -133,7 +133,7 @@ var AssistDbSource = (function () {
         } else {
           newNamespaces.push(new AssistDbNamespace({
             sourceType: self.sourceType,
-            namespace: namespace,
+            namespace: newNamespace,
             i18n: self.i18n,
             navigationSettings: self.navigationSettings
           }));
@@ -256,8 +256,8 @@ var AssistDbNamespace = (function () {
         if (!self.navigationSettings.rightAssist) {
           ApiHelper.getInstance().setInTotalStorage('assist_' + self.sourceType, 'lastSelectedDb', self.selectedDatabase().catalogEntry.name);
           huePubSub.publish('assist.database.set', {
-            source: self.sourceType,
-            namespace: self.namespace.namespace,
+            sourceType: self.sourceType,
+            namespace: self.namespace,
             name: self.selectedDatabase().catalogEntry.name
           })
         }

+ 38 - 15
desktop/core/src/desktop/templates/assist.mako

@@ -1255,28 +1255,51 @@ from desktop.views import _ko
             self.setDatabaseWhenLoaded(databaseDef.namespace, databaseDef.name);
           });
 
-          var getPubDb  = function (source) {
-            var result = {
-              source: source,
-              namespace: { id: 'default' },
-              name: 'default'
-            };
-
-            if (self.sourceIndex[source] && self.sourceIndex[source].selectedNamespace()) {
-              result.namespace = self.sourceIndex[source].selectedNamespace().namespace;
-              if (self.sourceIndex[source].selectedNamespace().selectedDatabase()) {
-                result.name = self.sourceIndex[source].selectedNamespace().selectedDatabase().databaseName;
-              }
+          var getSelectedDatabase  = function (source) {
+            var deferred = $.Deferred();
+            var assistDbSource = self.sourceIndex[source];
+            if (assistDbSource) {
+              assistDbSource.loadedDeferred.done(function () {
+                if (assistDbSource.selectedNamespace()) {
+                  assistDbSource.selectedNamespace().loadedDeferred.done(function () {
+                    assistDbSource.selectedNamespace().namespace
+                    if (assistDbSource.selectedNamespace().selectedDatabase()) {
+                      deferred.resolve({
+                        sourceType: source,
+                        namespace: assistDbSource.selectedNamespace().namespace,
+                        name: assistDbSource.selectedNamespace().selectedDatabase()
+                      })
+                    } else {
+                      deferred.resolve({
+                        sourceType: source,
+                        namespace: assistDbSource.selectedNamespace().namespace,
+                        name: 'default'
+                      })
+                    }
+                  });
+                } else {
+                  deferred.resolve({
+                    sourceType: source,
+                    namespace: { id: 'default' },
+                    name: 'default'
+                  });
+                }
+              })
+            } else {
+              deferred.reject()
             }
-            return result;
+
+            return deferred;
           };
 
           huePubSub.subscribe('assist.get.database', function (source) {
-            huePubSub.publish('assist.database.set', getPubDb(source));
+            getSelectedDatabase(source).done(function (databaseDef) {
+              huePubSub.publish('assist.database.set', databaseDef);
+            })
           });
 
           huePubSub.subscribe('assist.get.database.callback',  function (options) {
-            options.callback(getPubDb(options.source));
+            getSelectedDatabase(options.source).done(options.callback);
           });
 
           huePubSub.subscribe('assist.get.source', function () {