Pārlūkot izejas kodu

HUE-8560 [tb] Stick to the same view when switching namespaces in the Table Browser

Johan Ahlen 7 gadi atpakaļ
vecāks
revīzija
a1a023d

+ 9 - 2
apps/metastore/src/metastore/static/metastore/js/metastore.model.js

@@ -36,8 +36,15 @@ var MetastoreSource = (function () {
     });
 
     // When manually changed through dropdown
-    self.namespaceChanged = function () {
-      huePubSub.publish('metastore.url.change')
+    self.namespaceChanged = function (newNamespace, previousNamespace) {
+      if (previousNamespace.database() && !self.namespace().database()) {
+        // Try to set the same database by name, if not there it will revert to 'default'
+        self.namespace().setDatabaseByName(previousNamespace.database().catalogEntry.name, function () {
+          huePubSub.publish('metastore.url.change');
+        });
+      } else {
+        huePubSub.publish('metastore.url.change');
+      }
     };
 
     huePubSub.subscribe("assist.db.panel.ready", function () {

+ 4 - 3
desktop/core/src/desktop/templates/ko_components/ko_drop_down.mako

@@ -46,7 +46,7 @@ from desktop.views import _ko
           <li class="divider"></li>
           <!-- /ko -->
           <!-- ko if: typeof $data.divider === 'undefined' || !$data.divider -->
-          <li><a href="javascript:void(0)" data-bind="text: $data && typeof $data[$parent.labelAttribute] !== 'undefined' ? $data[$parent.labelAttribute] : $data, click: function () { $parent.value($data); $parent.onChanged($data); }"></a></li>
+          <li><a href="javascript:void(0)" data-bind="text: $data && typeof $data[$parent.labelAttribute] !== 'undefined' ? $data[$parent.labelAttribute] : $data, click: function () { var previous = $parent.value(); $parent.value($data); $parent.onChanged($data, previous); }"></a></li>
           <!-- /ko -->
         </ul>
         <!-- /ko -->
@@ -56,7 +56,7 @@ from desktop.views import _ko
           <li class="divider"></li>
           <!-- /ko -->
           <!-- ko if: typeof $data.divider === 'undefined' || !$data.divider -->
-          <li><a href="javascript:void(0)" data-bind="text: $data && typeof $data[$parent.labelAttribute] !== 'undefined' ? $data[$parent.labelAttribute] : $data, click: function () { $parent.value($data); $parent.onChanged($data); }"></a></li>
+          <li><a href="javascript:void(0)" data-bind="text: $data && typeof $data[$parent.labelAttribute] !== 'undefined' ? $data[$parent.labelAttribute] : $data, click: function () { var previous = $parent.value(); $parent.value($data); $parent.onChanged($data, previous); }"></a></li>
           <!-- /ko -->
         </ul>
         <!-- /ko -->
@@ -184,8 +184,9 @@ from desktop.views import _ko
         };
 
         self.onEnter = function (value) {
+          var previous = self.value();
           self.value(value);
-          self.onChanged(value);
+          self.onChanged(value, previous);
           self.dropDownVisible(false);
         };