From a529b14eb3dca6f6c13b93901acdd33a59b35b91 Mon Sep 17 00:00:00 2001 From: Andrew Suzuki Date: Fri, 10 Jun 2016 15:10:53 -0400 Subject: [PATCH] debounce workspace updates (considering slider filters) --- src/cljs/ulysses/handlers.cljs | 24 +++++++----------------- src/cljs/ulysses/utils.cljs | 29 +++++++++++++++++++++++++---- 2 files changed, 32 insertions(+), 21 deletions(-) diff --git a/src/cljs/ulysses/handlers.cljs b/src/cljs/ulysses/handlers.cljs index 7804a95..9712382 100644 --- a/src/cljs/ulysses/handlers.cljs +++ b/src/cljs/ulysses/handlers.cljs @@ -13,7 +13,6 @@ hyphenate-keys parse-int-id str->int - clj->json json->clj to-id-map find-by-id @@ -26,6 +25,7 @@ verify-user-poll-response debounce-request-grant-ops debounce-request-faculties-pool + debounce-request-workspace-save validate-builder-filters]])) ;; ---------------------------------------------------------------------------- @@ -149,10 +149,7 @@ (register-handler :request-faculties-pool - (fn [db _] - (debounce-request-faculties-pool db) - ; (assoc db :builder-faculties-pool []))) - db)) + debounce-request-faculties-pool) (register-handler :receive-faculties-pool @@ -165,9 +162,7 @@ (register-handler :request-grant-ops - (fn [db [_ page]] - (debounce-request-grant-ops db page) - db)) + debounce-request-grant-ops) (register-handler :request-grant-ops-start @@ -273,15 +268,7 @@ (register-handler :workspace-save - (fn [db _] - (if-let [current (:builder-workspace db)] - (request db - [:workspace (:id current)] - :method :put - :params {:faculties (clj->json (or (:faculties current) [])) - :filters (clj->json (:builder-filters db))} - :handler #(dispatch [:workspace-receive %])) - db))) + debounce-request-workspace-save) (register-handler :workspace-new-blank @@ -428,18 +415,21 @@ :builder-filter-faculty-title-set (fn [db [_ title-set]] (dispatch [:request-faculties-pool]) + (dispatch [:workspace-save]) (assoc-in db [:builder-filters :faculty-title-set] title-set))) (register-handler :builder-filter-faculty-years-uconn (fn [db [_ years-uconn]] (dispatch [:request-faculties-pool]) + (dispatch [:workspace-save]) (assoc-in db [:builder-filters :faculty-years-uconn] (or (str->int years-uconn) 0)))) (register-handler :builder-filter-faculty-metric (fn [db [_ metric value]] + (dispatch [:workspace-save]) (assoc-in db [:builder-filters :metrics metric] value))) diff --git a/src/cljs/ulysses/utils.cljs b/src/cljs/ulysses/utils.cljs index 311ce39..8ebcbef 100644 --- a/src/cljs/ulysses/utils.cljs +++ b/src/cljs/ulysses/utils.cljs @@ -463,8 +463,9 @@ :handler #(dispatch [:receive-grant-ops %])))))) (defn debounce-request-grant-ops - [db page] - (put! request-grant-ops-channel [db page])) + [db [_ page]] + (put! request-grant-ops-channel [db page]) + db) ; faculty requests @@ -481,8 +482,28 @@ :handler #(dispatch [:receive-faculties-pool %]))))))) (defn debounce-request-faculties-pool - [db] - (put! request-faculties-pool-channel [db])) + [db _] + (put! request-faculties-pool-channel [db]) + db) + +; workspace updates + +(def request-workspace-save-channel + (debounce-standard + (fn [db] + (if-let [current (:builder-workspace db)] + (request db + [:workspace (:id current)] + :method :put + :params {:faculties (clj->json (or (:faculties current) [])) + :filters (clj->json (:builder-filters db))} + :handler #(dispatch [:workspace-receive %])) + db)))) + +(defn debounce-request-workspace-save + [db _] + (put! request-workspace-save-channel [db]) + db) ;; ---------------------------------------------------------------------------- ;; direct dom mutations