diff --git a/src/main/frontend/commands.cljs b/src/main/frontend/commands.cljs index 060485a53a..4c55a9e17e 100644 --- a/src/main/frontend/commands.cljs +++ b/src/main/frontend/commands.cljs @@ -278,7 +278,7 @@ [["Query" [[:editor/input "{{query }}" {:backward-pos 2}] [:editor/exit]] query-doc] ["Zotero" (zotero-steps) "Import Zotero journal article"] - ["Query table function" [[:editor/input "{{function }}" {:backward-pos 2}]] "Create a query table function"] + ["Query function" [[:editor/input "{{function }}" {:backward-pos 2}]] "Create a query function"] ["Calculator" [[:editor/input "```calc\n\n```" {:type "block" :backward-pos 4}] [:codemirror/focus]] "Insert a calculator"] diff --git a/src/main/frontend/components/block.cljs b/src/main/frontend/components/block.cljs index 0a7617aad1..dd0bdb8841 100644 --- a/src/main/frontend/components/block.cljs +++ b/src/main/frontend/components/block.cljs @@ -2733,8 +2733,13 @@ block (merge block (block/parse-title-and-body uuid format pre-block? content)) blocks-container-id (:blocks-container-id config) config (update config :block merge block) - ;; Each block might have multiple queries, but we store only the first query's result - config (assoc config :query-result (atom nil)) + ;; Each block might have multiple queries, but we store only the first query's result. + ;; This :query-result atom is used by the query function feature to share results between + ;; the parent's query block and the children blocks. This works because config is shared + ;; between parent and children blocks + config (if (nil? (:query-result config)) + (assoc config :query-result (atom nil)) + config) config (if ref? (block-handler/attach-order-list-state config block) config) heading? (:heading properties) *control-show? (get state ::control-show?) diff --git a/src/main/frontend/components/query/result.cljs b/src/main/frontend/components/query/result.cljs index cd3833387b..f5bb67e67a 100644 --- a/src/main/frontend/components/query/result.cljs +++ b/src/main/frontend/components/query/result.cljs @@ -60,6 +60,8 @@ (not (and (string? query) (string/includes? query "(by-page false)"))))))) (defn get-query-result + "Fetches a query's result, transforms it as needed and saves the result into + an atom that is passed in as an argument" [state config *query-error *query-triggered? current-block-uuid q options] (let [query-atom (trigger-custom-query! state *query-error *query-triggered?) query-result (and query-atom (rum/react query-atom))