|
@@ -2019,6 +2019,41 @@
|
|
|
(ldb/sort-by-order)
|
|
|
((fn [cs] (build-columns config cs {:add-tags-column? false})))))
|
|
|
|
|
|
+(defn- load-view-data-aux
|
|
|
+ [view-entity view-parent {:keys [query? query-entity-ids sorting filters input
|
|
|
+ view-feature-type group-by-property-ident
|
|
|
+ set-data! set-ref-pages-count! set-properties! set-loading!]}]
|
|
|
+ (c.m/run-task*
|
|
|
+ (m/sp
|
|
|
+ (let [need-query? (and query? (seq query-entity-ids) (or sorting filters (not (string/blank? input))))]
|
|
|
+ (cond
|
|
|
+ (and query? (empty? query-entity-ids))
|
|
|
+ (set-data! nil)
|
|
|
+ (and query? (not (or sorting filters)) (string/blank? input))
|
|
|
+ (set-data! query-entity-ids)
|
|
|
+ :else
|
|
|
+ (when (or (not query?) need-query?)
|
|
|
+ (try
|
|
|
+ (let [{:keys [data ref-pages-count properties]}
|
|
|
+ (c.m/<?
|
|
|
+ (<load-view-data view-entity
|
|
|
+ (cond->
|
|
|
+ {:view-for-id (or (:db/id (:logseq.property/view-for view-entity))
|
|
|
+ (:db/id view-parent))
|
|
|
+ :view-feature-type view-feature-type
|
|
|
+ :group-by-property-ident group-by-property-ident
|
|
|
+ :input input
|
|
|
+ :filters filters
|
|
|
+ :sorting sorting}
|
|
|
+ query?
|
|
|
+ (assoc :query-entity-ids query-entity-ids))))]
|
|
|
+ (set-data! data)
|
|
|
+ (when ref-pages-count
|
|
|
+ (set-ref-pages-count! ref-pages-count))
|
|
|
+ (set-properties! properties))
|
|
|
+ (finally
|
|
|
+ (set-loading! false)))))))))
|
|
|
+
|
|
|
(rum/defc view-aux
|
|
|
[view-entity {:keys [config view-parent view-feature-type data query-entity-ids set-view-entity!] :as option}]
|
|
|
(let [[input set-input!] (hooks/use-state "")
|
|
@@ -2052,36 +2087,13 @@
|
|
|
[data set-data!] (hooks/use-state data)
|
|
|
[ref-pages-count set-ref-pages-count!] (hooks/use-state nil)
|
|
|
load-view-data (fn load-view-data []
|
|
|
- (c.m/run-task*
|
|
|
- (m/sp
|
|
|
- (let [need-query? (and query? (seq query-entity-ids) (or sorting filters (not (string/blank? input))))]
|
|
|
- (cond
|
|
|
- (and query? (empty? query-entity-ids))
|
|
|
- (set-data! nil)
|
|
|
- (and query? (not (or sorting filters)) (string/blank? input))
|
|
|
- (set-data! query-entity-ids)
|
|
|
- :else
|
|
|
- (when (or (not query?) need-query?)
|
|
|
- (try
|
|
|
- (let [{:keys [data ref-pages-count properties]}
|
|
|
- (c.m/<?
|
|
|
- (<load-view-data view-entity
|
|
|
- (cond->
|
|
|
- {:view-for-id (or (:db/id (:logseq.property/view-for view-entity))
|
|
|
- (:db/id view-parent))
|
|
|
- :view-feature-type view-feature-type
|
|
|
- :group-by-property-ident group-by-property-ident
|
|
|
- :input input
|
|
|
- :filters filters
|
|
|
- :sorting sorting}
|
|
|
- query?
|
|
|
- (assoc :query-entity-ids query-entity-ids))))]
|
|
|
- (set-data! data)
|
|
|
- (when ref-pages-count
|
|
|
- (set-ref-pages-count! ref-pages-count))
|
|
|
- (set-properties! properties))
|
|
|
- (finally
|
|
|
- (set-loading! false)))))))))]
|
|
|
+ (load-view-data-aux view-entity view-parent
|
|
|
+ {:query? query?
|
|
|
+ :query-entity-ids query-entity-ids
|
|
|
+ :sorting sorting :filters filters :input input
|
|
|
+ :view-feature-type view-feature-type :group-by-property-ident group-by-property-ident
|
|
|
+ :set-data! set-data! :set-ref-pages-count! set-ref-pages-count!
|
|
|
+ :set-properties! set-properties! :set-loading! set-loading!}))]
|
|
|
(let [sorting-filters {:sorting sorting
|
|
|
:filters filters}]
|
|
|
(hooks/use-effect!
|