Эх сурвалжийг харах

HUE-4300 [fb] Avoid double file listing call on folder search

Enrico Berti 9 жил өмнө
parent
commit
6266cf3

+ 1 - 1
apps/filebrowser/src/filebrowser/templates/listdir.mako

@@ -39,7 +39,7 @@ ${ fb_components.menubar() }
     <div class="actionbar">
     <%actionbar:render>
       <%def name="search()">
-        <input type="text" class="input-large search-query" placeholder="${_('Search for file name')}" data-bind="value: searchQuery">
+        <input type="text" class="input-large search-query" placeholder="${_('Search for file name')}" data-bind="clearable: searchQuery, valueUpdate: 'afterkeydown'">
       </%def>
 
       <%def name="actions()">

+ 8 - 6
apps/filebrowser/src/filebrowser/templates/listdir_components.mako

@@ -556,6 +556,7 @@ from django.utils.translation import ugettext as _
   <script src="${ static('desktop/ext/js/jquery/plugins/jquery-ui-1.10.4.draggable-droppable-sortable.min.js') }" type="text/javascript" charset="utf-8"></script>
   <script src="${ static('desktop/ext/js/datatables-paging-0.1.js') }" type="text/javascript" charset="utf-8"></script>
   <script src="${ static('desktop/js/dropzone.js') }" type="text/javascript" charset="utf-8"></script>
+  <script src="${ static('desktop/js/ko.hue-bindings.js') }" type="text/javascript" charset="utf-8"></script>
 
 
   <script charset="utf-8">
@@ -834,6 +835,8 @@ from django.utils.translation import ugettext as _
       self.sortBy = ko.observable("name");
       self.sortDescending = ko.observable(false);
       self.searchQuery = ko.observable("");
+      self.searchQuery.extend({ rateLimit: 500 });
+      self.enableFilterAfterSearch = true;
       self.isCurrentDirSentryManaged = ko.observable(false);
       self.pendingUploads = ko.observable(0);
       self.pendingUploads.subscribe(function (val) {
@@ -1097,7 +1100,10 @@ from django.utils.translation import ugettext as _
       };
 
       self.searchQuery.subscribe(function (newValue) {
-        self.filter();
+        if (newValue !== '' || self.enableFilterAfterSearch) {
+          self.filter();
+        }
+        self.enableFilterAfterSearch = true;
       });
 
       self.filter = function () {
@@ -1109,6 +1115,7 @@ from django.utils.translation import ugettext as _
         if (file.type == "dir") {
           // Reset page number so that we don't hit a page that doesn't exist
           self.targetPageNum(1);
+          self.enableFilterAfterSearch = false;
           self.searchQuery("");
           self.targetPath("${url('filebrowser.views.view', path='')}" + stripHashes(file.path));
           location.hash = stripHashes(file.path);
@@ -1976,11 +1983,6 @@ from django.utils.translation import ugettext as _
 
       viewModel.retrieveData();
 
-      $(".search-query").jHueDelayedInput(function(){
-        viewModel.searchQuery($(".search-query").val());
-        viewModel.filter();
-      }, 500);
-
       $("#editBreadcrumb").click(function (e) {
         if ($(e.target).is('ul')){
           $(this).hide();

+ 3 - 0
desktop/core/src/desktop/static/desktop/js/ko.hue-bindings.js

@@ -1700,6 +1700,9 @@
     },
     update: function (element, valueAccessor, allBindingsAccessor) {
       $(element).val(ko.unwrap(valueAccessor()));
+      if ($(element).val() === '') {
+        $(element).removeClass('x');
+      }
     }
   }