fix: reactive custom query

feat/db
Tienson Qin 2024-09-28 14:11:11 +08:00
parent 150f40cbd7
commit d6f17ac7f3
2 changed files with 42 additions and 39 deletions

View File

@ -129,48 +129,50 @@
{:keys [builder query view collapsed?] :as q}
*result]
(let [collapsed?' (:collapsed? config)
result (when *result (query-result/get-query-result config q (rum/react *result)))
result' (rum/react *result)]
(when (seq result')
(let [result (when *result (query-result/get-query-result config q result'))
;; Args for displaying query header and results
view-fn (if (keyword? view) (get-in (state/sub-config) [:query/views view]) view)
view-f (and view-fn (sci/eval-string (pr-str view-fn)))
page-list? (and (seq result) (some? (:block/name (first result))))
opts {:query-error-atom *query-error
:current-block current-block
:table? table?
:view-f view-f
:page-list? page-list?
:result result
:group-by-page? (query-result/get-group-by-page q {:table? table?})}]
(if (:custom-query? config)
view-fn (if (keyword? view) (get-in (state/sub-config) [:query/views view]) view)
view-f (and view-fn (sci/eval-string (pr-str view-fn)))
page-list? (and (seq result) (some? (:block/name (first result))))
opts {:query-error-atom *query-error
:current-block current-block
:table? table?
:view-f view-f
:page-list? page-list?
:result result
:group-by-page? (query-result/get-group-by-page q {:table? table?})}]
(if (:custom-query? config)
;; Don't display recursive results when query blocks are a query result
[:code (if dsl-query? (str "Results for " (pr-str query)) "Advanced query results")]
(when-not (and built-in-query? (empty? result))
[:div.custom-query (get config :attr {})
(when (and (not db-graph?) (not built-in-query?))
(file-query/custom-query-header config
q
{:query-error-atom *query-error
:current-block current-block
:table? table?
:view-f view-f
:page-list? page-list?
:result result
:collapsed? collapsed?'}))
[:code (if dsl-query? (str "Results for " (pr-str query)) "Advanced query results")]
(when-not (and built-in-query? (empty? result))
[:div.custom-query (get config :attr {})
(when (and (not db-graph?) (not built-in-query?))
(file-query/custom-query-header config
q
{:query-error-atom *query-error
:current-block current-block
:table? table?
:view-f view-f
:page-list? page-list?
:result result
:collapsed? collapsed?'}))
(when (and dsl-query? builder) builder)
(when (and dsl-query? builder) builder)
(if built-in-query?
[:div {:style {:margin-left 2}}
(ui/foldable
(query-title config (:title q) {:result-count (count result)})
(fn []
(custom-query-inner config q opts))
{:default-collapsed? collapsed?
:title-trigger? true})]
(when-not (:table? config)
[:div.bd
(when-not collapsed?'
(custom-query-inner config q opts))]))]))))
(if built-in-query?
[:div {:style {:margin-left 2}}
(ui/foldable
(query-title config (:title q) {:result-count (count result)})
(fn []
(custom-query-inner config q opts))
{:default-collapsed? collapsed?
:title-trigger? true})]
(when-not (:table? config)
[:div.bd
(when-not collapsed?'
(custom-query-inner config q opts))]))]))))))
(rum/defc trigger-custom-query
[config q]
@ -179,7 +181,7 @@
(fn []
(query-result/trigger-custom-query! config q (:*query-error config) set-result!))
[q])
(when (and (util/atom? result) (seq @result))
(when (util/atom? result)
(custom-query* config q result))))
(rum/defcs custom-query < rum/static

View File

@ -130,6 +130,7 @@
(do
(p/let [result p-or-value
result' (transform-fn result)]
(prn :debug :query-result result')
(reset! result-atom result'))
result-atom)