Browse Source

fix(regression): slow to scroll on 40k all pages

Tienson Qin 7 months ago
parent
commit
7b5e545747
1 changed files with 9 additions and 8 deletions
  1. 9 8
      src/main/frontend/components/views.cljs

+ 9 - 8
src/main/frontend/components/views.cljs

@@ -82,8 +82,7 @@
 
 (rum/defc row-checkbox < rum/static
   [{:keys [row-selected? row-toggle-selected! data state data-fns]} row _column]
-  (let [idx (.indexOf data (:db/id row))
-        id (str (:db/id row) "-" "checkbox")
+  (let [id (str (:db/id row) "-" "checkbox")
         [show? set-show!] (rum/use-state false)
         checked? (row-selected? row)
         {:keys [last-selected-idx row-selection]} state
@@ -99,17 +98,19 @@
                    (when (and (.-shiftKey e) last-selected-idx)
                      ;; add selection
                      (util/stop e)
-                     (when (not= last-selected-idx idx)
-                       (let [new-ids (keep (fn [idx] (util/nth-safe data idx)) (range (min last-selected-idx idx) (inc (max last-selected-idx idx))))]
-                         (when (seq new-ids)
-                           (let [row-selection' (update row-selection :selected-ids set/union (set new-ids))]
-                             (set-row-selection! row-selection')))))))
+                     (let [idx (.indexOf data (:db/id row))]
+                       (when (not= last-selected-idx idx)
+                         (let [new-ids (keep (fn [idx] (util/nth-safe data idx)) (range (min last-selected-idx idx) (inc (max last-selected-idx idx))))]
+                           (when (seq new-ids)
+                             (let [row-selection' (update row-selection :selected-ids set/union (set new-ids))]
+                               (set-row-selection! row-selection'))))))))
        :on-checked-change (fn [v]
                             (p/do!
                              (when v (db-async/<get-block (state/get-current-repo) (:db/id row) {:skip-refresh? true
                                                                                                  :children? false}))
                              (if v
-                               (set-last-selected-idx! idx)
+                               (let [idx (.indexOf data (:db/id row))]
+                                 (set-last-selected-idx! idx))
                                (when (= (:db/id row) last-selected-idx)
                                  (set-last-selected-idx! nil)))
                              (row-toggle-selected! row-selection row v)))