Explorar o código

fix: custom query transform should support pages too

Tienson Qin %!s(int64=5) %!d(string=hai) anos
pai
achega
88b37d2d70
Modificáronse 2 ficheiros con 42 adicións e 21 borrados
  1. 19 0
      src/main/frontend/components/block.cljs
  2. 23 21
      src/main/frontend/db/query_custom.cljs

+ 19 - 0
src/main/frontend/components/block.cljs

@@ -1584,6 +1584,25 @@
                       {:style {:margin-top "0.25rem"
                                :margin-left "0.25rem"}})
 
+            ;; page list
+            (and (seq result)
+                 (:page/name (first result)))
+            [:ol
+             (for [{:page/keys [name original-name] :as page-entity} result]
+               [:li
+                [:a {:href (rfe/href :page {:name name})
+                     :on-click (fn [e]
+                                 (util/stop e)
+                                 (if (gobj/get e "shiftKey")
+                                   (state/sidebar-add-block!
+                                    (state/get-current-repo)
+                                    (:db/id page-entity)
+                                    :page
+                                    {:page page-entity})
+                                   (route-handler/redirect! {:to :page
+                                                             :path-params {:name name}})))}
+                 (or original-name name)]])]
+
             (seq result)                     ;TODO: table
             (let [result (->>
                           (for [record result]

+ 23 - 21
src/main/frontend/db/query_custom.cljs

@@ -69,24 +69,26 @@
   (let [repo (state/get-current-repo)
         result (db-utils/seq-flatten query-result)
         block? (:block/uuid (first result))]
-    (if block?
-      (let [result (if (seq remove-blocks)
-                     (let [remove-blocks (set remove-blocks)]
-                       (remove (fn [h]
-                                 (contains? remove-blocks (:block/uuid h)))
-                               result))
-                     result)
-            result (some->> result
-                            (db-utils/with-repo repo)
-                            (model/with-block-refs-count repo)
-                            (model/sort-blocks))]
-        (if-let [result-transform (:result-transform q)]
-          (if-let [f (sci/eval-string (pr-str result-transform))]
-            (try
-              (sci/call-fn f result)
-              (catch js/Error e
-                (log/error :sci/call-error e)
-                result))
-            result)
-          (db-utils/group-by-page result)))
-      result)))
+    (let [result (if block?
+                   (let [result (if (seq remove-blocks)
+                                  (let [remove-blocks (set remove-blocks)]
+                                    (remove (fn [h]
+                                              (contains? remove-blocks (:block/uuid h)))
+                                            result))
+                                  result)]
+                     (some->> result
+                              (db-utils/with-repo repo)
+                              (model/with-block-refs-count repo)
+                              (model/sort-blocks)))
+                   result)]
+      (if-let [result-transform (:result-transform q)]
+        (if-let [f (sci/eval-string (pr-str result-transform))]
+          (try
+            (sci/call-fn f result)
+            (catch js/Error e
+              (log/error :sci/call-error e)
+              result))
+          result)
+        (if block?
+          (db-utils/group-by-page result)
+          result)))))