Browse Source

enhance: debounced filter

Tienson Qin 1 year ago
parent
commit
afb6417023
1 changed files with 7 additions and 4 deletions
  1. 7 4
      src/main/frontend/components/objects.cljs

+ 7 - 4
src/main/frontend/components/objects.cljs

@@ -29,7 +29,8 @@
             [cljs-time.core :as t]
             [cljs-time.coerce :as tc]
             [frontend.db.async :as db-async]
-            [frontend.db-mixins :as db-mixins]))
+            [frontend.db-mixins :as db-mixins]
+            [goog.functions :refer [debounce]]))
 
 (defn header-checkbox [{:keys [selected-all? selected-some? toggle-selected-all!]}]
   [:label.h-8.w-8.flex.items-center.justify-center.cursor-pointer
@@ -815,6 +816,7 @@
                                     :set-visible-columns! set-visible-columns!
                                     :set-ordered-columns! set-ordered-columns!})
         [row-filter set-row-filter!] (rum/use-state nil)
+        debounced-set-row-filter! (debounce set-row-filter! 200)
         [row-selection set-row-selection!] (rum/use-state {})
         [data set-data!] (rum/use-state [])
         _ (rum/use-effect!
@@ -843,9 +845,10 @@
         ]
     (rum/use-effect!
      (fn []
-       (set-row-filter! (fn []
-                          (fn [row]
-                            (row-matched? row input filters)))))
+       (debounced-set-row-filter!
+        (fn []
+          (fn [row]
+            (row-matched? row input filters)))))
      [input filters])
     [:div.ls-table.flex.flex-col.gap-2.grid
      [:div.flex.items-center.justify-between