Browse Source

[assist] Add reload function to databases and tables list

Johan Ahlen 10 years ago
parent
commit
464248c

+ 19 - 16
desktop/core/src/desktop/static/desktop/js/assist/assistSource.js

@@ -88,7 +88,7 @@
 
     var updateDbFromAssistHelper = function () {
       var assistDb = self.assistHelper.activeDatabase();
-      if (dbIndex[assistDb] && (! self.selectedDatabase() || self.selectedDatabase().name !== assistDb)) {
+      if (dbIndex[assistDb] && (! self.selectedDatabase() || self.selectedDatabase().definition.name !== assistDb)) {
         self.selectedDatabase(dbIndex[assistDb]);
       }
     };
@@ -104,12 +104,6 @@
       }
     };
 
-    self.assistHelper.loaded.subscribe(function (newValue) {
-      if (newValue) {
-        initDatabases();
-      }
-    });
-
     initDatabases();
 
     self.selectedDatabase.subscribe(function (newDatabase) {
@@ -153,17 +147,26 @@
         $container.find(".assist-actions").css('right', -$container.scrollLeft() + 'px');
       }
     };
+
+    self.reload = function() {
+      var lastSelectedDb = self.selectedDatabase() ? self.selectedDatabase().definition.name : null;
+      self.reloading(true);
+      self.assistHelper.clearCache(self.snippet);
+      self.assistHelper.load(self.snippet, function() {
+        if (self.assistHelper.loaded()) {
+          updateDatabases(self.assistHelper.availableDatabases());
+          if (lastSelectedDb !== null) {
+            self.selectedDatabase(dbIndex[lastSelectedDb]);
+          } else {
+            self.selectedDatabase(null);
+          }
+        }
+
+        self.reloading(false);
+      });
+    };
   }
 
-  AssistSource.prototype.reloadAssist = function() {
-    var self = this;
-    self.reloading(true);
-    self.selectedDatabase(null);
-    self.assistHelper.clearCache(self.snippet);
-    self.assistHelper.load(self.snippet, function() {
-      self.reloading(false);
-    });
-  };
 
   return AssistSource;
 }));

+ 9 - 9
desktop/core/src/desktop/templates/assist.mako

@@ -216,7 +216,7 @@ from desktop.views import _ko
   </script>
 
   <script type="text/html" id="assist-sources-template">
-    <li class="nav-header">
+    <li class="nav-header" data-bind="visibleOnHover: { selector: '.hover-actions' }">
       ${_('sources')}
     </li>
     <li>
@@ -229,10 +229,10 @@ from desktop.views import _ko
   </script>
 
   <script type="text/html" id="assist-databases-template">
-    <li class="nav-header">
+    <li class="nav-header" data-bind="visibleOnHover: { selector: '.hover-actions' }">
       ${_('databases')}
       <div class="pull-right" data-bind="css: { 'hover-actions' : ! reloading() }">
-        <a class="inactive-action" href="javascript:void(0)" data-bind="click: reloadAssist"><i class="pointer fa fa-refresh" data-bind="css: { 'fa-spin' : reloading }" title="${_('Manually refresh the table list')}"></i></a>
+        <a class="inactive-action" href="javascript:void(0)" data-bind="click: reload"><i class="pointer fa fa-refresh" data-bind="css: { 'fa-spin' : reloading }" title="${_('Manually refresh the databases list')}"></i></a>
       </div>
     </li>
     <li data-bind="visible: ! hasErrors() && ! assistHelper.loading()" >
@@ -252,12 +252,13 @@ from desktop.views import _ko
   </script>
 
   <script type="text/html" id="assist-tables-template">
-    <div data-bind="visibleOnHover: { selector: '.hover-actions' }" style="position: relative; width:100%">
+    <div data-bind="visibleOnHover: { selector: '.hover-actions', override: $parent.reloading }" style="position: relative; width:100%">
       <li class="nav-header" style="margin-top: 0" data-bind="visible: ! $parent.assistHelper.loading() && ! $parent.hasErrors()">
         ${_('tables')}
-        <div class="pull-right" data-bind="visible: hasEntries, css: { 'hover-actions': ! filter(), 'blue': filter }">
+        <div class="pull-right hover-actions" data-bind="visible: hasEntries">
           <span class="assist-tables-counter">(<span data-bind="text: filteredEntries().length"></span>)</span>
-          <a class="inactive-action" href="javascript:void(0)" data-bind="click: function () { $parent.options.isSearchVisible(!$parent.options.isSearchVisible()) }"><i class="pointer fa fa-search" title="${_('Search')}"></i></a>
+          <a class="inactive-action" href="javascript:void(0)" data-bind="click: function () { $parent.options.isSearchVisible(!$parent.options.isSearchVisible()) }, css: { 'blue' : $parent.options.isSearchVisible() }"><i class="pointer fa fa-search" title="${_('Search')}"></i></a>
+          <a class="inactive-action" href="javascript:void(0)" data-bind="click: $parent.reload"><i class="pointer fa fa-refresh" data-bind="css: { 'fa-spin blue' : $parent.reloading }" title="${_('Manually refresh the table list')}"></i></a>
         </div>
       </li>
 
@@ -400,15 +401,14 @@ from desktop.views import _ko
             return self.selectedSource().name;
           }
           return null;
-        })
+        });
       }
 
       AssistPanel.prototype.back = function () {
         var self = this;
         if (self.selectedSource() && self.selectedSource().selectedDatabase()) {
-            self.selectedSource().selectedDatabase(null)
+          self.selectedSource().selectedDatabase(null)
         } else if (self.selectedSource()) {
-          console.log(self.selectedSource());
           self.selectedSource(null);
         }
       };