Bladeren bron

fix: reactive custom query

Tienson Qin 1 jaar geleden
bovenliggende
commit
d6f17ac7f3
2 gewijzigde bestanden met toevoegingen van 42 en 39 verwijderingen
  1. 41 39
      src/main/frontend/components/query.cljs
  2. 1 0
      src/main/frontend/db/react.cljs

+ 41 - 39
src/main/frontend/components/query.cljs

@@ -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

+ 1 - 0
src/main/frontend/db/react.cljs

@@ -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)