Browse Source

HUE-9263 [assist] Switch from type to connector when setting assist source via events

Johan Ahlen 5 years ago
parent
commit
11dd055152

+ 1 - 1
desktop/core/src/desktop/js/apps/notebook/notebook.js

@@ -921,7 +921,7 @@ class Notebook {
             );
             );
 
 
             huePubSub.publish(ASSIST_SET_DATABASE_EVENT, {
             huePubSub.publish(ASSIST_SET_DATABASE_EVENT, {
-              source: snippet.type(),
+              connector: snippet.connector(),
               namespace: snippet.namespace(),
               namespace: snippet.namespace(),
               name: lastSelectedDb === '' ? '' : snippet.database()
               name: lastSelectedDb === '' ? '' : snippet.database()
             });
             });

+ 1 - 1
desktop/core/src/desktop/js/apps/notebook2/notebook.js

@@ -139,7 +139,7 @@ export default class Notebook {
         if (this.type().indexOf('query') === 0) {
         if (this.type().indexOf('query') === 0) {
           const whenDatabaseAvailable = function(snippet) {
           const whenDatabaseAvailable = function(snippet) {
             huePubSub.publish(ASSIST_SET_DATABASE_EVENT, {
             huePubSub.publish(ASSIST_SET_DATABASE_EVENT, {
-              source: snippet.dialect(),
+              connector: snippet.connector(),
               namespace: snippet.namespace(),
               namespace: snippet.namespace(),
               name: snippet.database()
               name: snippet.database()
             });
             });

+ 23 - 14
desktop/core/src/desktop/js/apps/table_browser/metastoreSource.js

@@ -22,9 +22,10 @@ import contextCatalog from 'catalog/contextCatalog';
 import huePubSub from 'utils/huePubSub';
 import huePubSub from 'utils/huePubSub';
 import MetastoreNamespace from 'apps/table_browser/metastoreNamespace';
 import MetastoreNamespace from 'apps/table_browser/metastoreNamespace';
 import {
 import {
-  ASSIST_DB_PANEL_IS_READY_EVENT,
+  ASSIST_DB_PANEL_IS_READY_EVENT, ASSIST_IS_DB_PANEL_READY_EVENT,
   ASSIST_SET_DATABASE_EVENT
   ASSIST_SET_DATABASE_EVENT
 } from 'ko/components/assist/events';
 } from 'ko/components/assist/events';
+import {findConnector} from "../../utils/hueConfig";
 
 
 class MetastoreSource {
 class MetastoreSource {
   constructor(options) {
   constructor(options) {
@@ -57,21 +58,29 @@ class MetastoreSource {
       }
       }
     };
     };
 
 
-    huePubSub.subscribe(ASSIST_DB_PANEL_IS_READY_EVENT, () => {
-      this.lastLoadNamespacesDeferred.done(() => {
-        let lastSelectedDb = apiHelper.getFromTotalStorage(
-          'assist_' + this.sourceType + '_' + this.namespace.id,
-          'lastSelectedDb'
-        );
-        if (!lastSelectedDb && lastSelectedDb !== '') {
-          lastSelectedDb = 'default';
-        }
-        huePubSub.publish(ASSIST_SET_DATABASE_EVENT, {
-          source: this.type,
-          namespace: this.namespace().namespace,
-          name: lastSelectedDb
+    this.connector = ko.observable();
+
+    findConnector(connector => connector.type === this.type).then(connector => {
+      this.connector(connector);
+
+      huePubSub.subscribe(ASSIST_DB_PANEL_IS_READY_EVENT, () => {
+        this.lastLoadNamespacesDeferred.done(() => {
+          let lastSelectedDb = apiHelper.getFromTotalStorage(
+            'assist_' + this.type + '_' + this.namespace.id,
+            'lastSelectedDb'
+          );
+          if (!lastSelectedDb && lastSelectedDb !== '') {
+            lastSelectedDb = 'default';
+          }
+          huePubSub.publish(ASSIST_SET_DATABASE_EVENT, {
+            connector: connector,
+            namespace: this.namespace().namespace,
+            name: lastSelectedDb
+          });
         });
         });
       });
       });
+
+      huePubSub.publish(ASSIST_IS_DB_PANEL_READY_EVENT);
     });
     });
 
 
     const getCurrentState = () => {
     const getCurrentState = () => {

+ 2 - 2
desktop/core/src/desktop/js/ko/components/assist/ko.assistDbPanel.js

@@ -652,10 +652,10 @@ class AssistDbPanel {
       });
       });
     } else if (!this.isSolr && !this.isStreams) {
     } else if (!this.isSolr && !this.isStreams) {
       huePubSub.subscribe(ASSIST_SET_DATABASE_EVENT, databaseDef => {
       huePubSub.subscribe(ASSIST_SET_DATABASE_EVENT, databaseDef => {
-        if (!databaseDef.source || !this.sourceIndex[databaseDef.source]) {
+        if (!databaseDef.connector || !this.sourceIndex[databaseDef.connector.type]) {
           return;
           return;
         }
         }
-        this.selectedSource(this.sourceIndex[databaseDef.source]);
+        this.selectedSource(this.sourceIndex[databaseDef.connector.type]);
         this.setDatabaseWhenLoaded(databaseDef.namespace, databaseDef.name);
         this.setDatabaseWhenLoaded(databaseDef.namespace, databaseDef.name);
       });
       });
 
 

+ 2 - 4
desktop/core/src/desktop/js/ko/components/ko.contextSelector.js

@@ -423,9 +423,7 @@ HueContextSelector.prototype.reloadDatabases = function() {
               sourceType: connector.type, // TODO: Drop when dataCatalog only needs connector
               sourceType: connector.type, // TODO: Drop when dataCatalog only needs connector
               namespace: self[TYPES_INDEX.namespace.name](),
               namespace: self[TYPES_INDEX.namespace.name](),
               compute: self[TYPES_INDEX.compute.name](),
               compute: self[TYPES_INDEX.compute.name](),
-              connector: (self.connector && ko.unwrap(self.connector)) || {
-                type: ko.unwrap(self.sourceType)
-              },
+              connector: connector,
               path: [],
               path: [],
               definition: { type: 'source' }
               definition: { type: 'source' }
             })
             })
@@ -474,7 +472,7 @@ HueContextSelector.prototype.reloadDatabases = function() {
 
 
                   if (updateAssist) {
                   if (updateAssist) {
                     huePubSub.publish(ASSIST_SET_DATABASE_EVENT, {
                     huePubSub.publish(ASSIST_SET_DATABASE_EVENT, {
-                      source: ko.unwrap(self.sourceType),
+                      connector: connector,
                       namespace: self[TYPES_INDEX.namespace.name](),
                       namespace: self[TYPES_INDEX.namespace.name](),
                       name: self.database()
                       name: self.database()
                     });
                     });