mirror of
https://github.com/logseq/logseq.git
synced 2026-02-01 22:47:36 +00:00
enhance: add /Advanced Query for db graphs
Related to https://linear.app/logseq/issue/LOG-3246/improve-advanced-query-editor. Had to upgrade promesa to get p/doseq
This commit is contained in:
@@ -201,6 +201,7 @@
|
||||
:lint-as {promesa.core/let clojure.core/let
|
||||
promesa.core/loop clojure.core/loop
|
||||
promesa.core/recur clojure.core/recur
|
||||
promesa.core/doseq clojure.core/doseq
|
||||
rum.core/defcc rum.core/defc
|
||||
rum.core/with-context clojure.core/let
|
||||
rum.core/defcontext clojure.core/def
|
||||
|
||||
2
deps.edn
2
deps.edn
@@ -8,7 +8,7 @@
|
||||
|
||||
datascript-transit/datascript-transit {:mvn/version "0.3.0"}
|
||||
borkdude/rewrite-edn {:mvn/version "0.4.7"}
|
||||
funcool/promesa {:mvn/version "4.0.2"}
|
||||
funcool/promesa {:mvn/version "11.0.678"}
|
||||
medley/medley {:mvn/version "1.4.0"}
|
||||
metosin/reitit-frontend {:mvn/version "0.3.10"}
|
||||
cljs-bean/cljs-bean {:mvn/version "1.5.0"}
|
||||
|
||||
2
deps/graph-parser/deps.edn
vendored
2
deps/graph-parser/deps.edn
vendored
@@ -9,7 +9,7 @@
|
||||
;; stubbed in nbb
|
||||
com.lambdaisland/glogi {:mvn/version "1.1.144"}
|
||||
;; built in to nbb
|
||||
funcool/promesa {:mvn/version "4.0.2"}
|
||||
funcool/promesa {:mvn/version "11.0.678"}
|
||||
cljs-bean/cljs-bean {:mvn/version "1.5.0"}}
|
||||
|
||||
:aliases
|
||||
|
||||
2
deps/shui/deps.edn
vendored
2
deps/shui/deps.edn
vendored
@@ -2,7 +2,7 @@
|
||||
:deps
|
||||
{org.clojure/clojure {:mvn/version "1.11.1"}
|
||||
org.clojure/clojurescript {:mvn/version "1.11.132"}
|
||||
funcool/promesa {:mvn/version "4.0.2"}
|
||||
funcool/promesa {:mvn/version "11.0.678"}
|
||||
rum/rum {:mvn/version "0.12.9"}
|
||||
medley/medley {:mvn/version "1.4.0"}
|
||||
cljs-bean/cljs-bean {:mvn/version "1.5.0"}}}
|
||||
|
||||
@@ -154,6 +154,43 @@
|
||||
(db-based-query)
|
||||
(file-based-query)))
|
||||
|
||||
(defn ->block
|
||||
([type]
|
||||
(->block type nil))
|
||||
([type optional]
|
||||
(let [format (get (state/get-edit-block) :block/format)
|
||||
markdown-src? (and (= format :markdown)
|
||||
(= (string/lower-case type) "src"))
|
||||
[left right] (cond
|
||||
markdown-src?
|
||||
["```" "\n```"]
|
||||
|
||||
:else
|
||||
(->> ["#+BEGIN_%s" "\n#+END_%s"]
|
||||
(map #(util/format %
|
||||
(string/upper-case type)))))
|
||||
template (str
|
||||
left
|
||||
(if optional (str " " optional) "")
|
||||
"\n"
|
||||
right)
|
||||
backward-pos (if (= type "src")
|
||||
(+ 1 (count right))
|
||||
(count right))]
|
||||
[[:editor/input template {:type "block"
|
||||
:last-pattern command-trigger
|
||||
:backward-pos backward-pos}]])))
|
||||
|
||||
(defn- advanced-query-steps
|
||||
[]
|
||||
(if (config/db-based-graph? (state/get-current-repo))
|
||||
[[:editor/input "" {:last-pattern command-trigger}]
|
||||
[:editor/set-property :block/tags :logseq.class/Query]
|
||||
[:editor/set-property :logseq.property/query ""]
|
||||
[:editor/set-property-on-block-property :logseq.property/query :logseq.property.node/type :code]
|
||||
[:editor/set-property-on-block-property :logseq.property/query :logseq.property.code/mode "clojure"]]
|
||||
(->block "query")))
|
||||
|
||||
(defn db-based-code-block
|
||||
[]
|
||||
[[:editor/input "" {:last-pattern command-trigger}]
|
||||
@@ -173,7 +210,6 @@
|
||||
(db-based-code-block)
|
||||
(file-based-code-block)))
|
||||
|
||||
(declare ->block)
|
||||
(defn quote-block-steps
|
||||
[]
|
||||
(if (config/db-based-graph? (state/get-current-repo))
|
||||
@@ -256,33 +292,6 @@
|
||||
(defonce *matched-commands (atom nil))
|
||||
(defonce *initial-commands (atom nil))
|
||||
|
||||
(defn ->block
|
||||
([type]
|
||||
(->block type nil))
|
||||
([type optional]
|
||||
(let [format (get (state/get-edit-block) :block/format)
|
||||
markdown-src? (and (= format :markdown)
|
||||
(= (string/lower-case type) "src"))
|
||||
[left right] (cond
|
||||
markdown-src?
|
||||
["```" "\n```"]
|
||||
|
||||
:else
|
||||
(->> ["#+BEGIN_%s" "\n#+END_%s"]
|
||||
(map #(util/format %
|
||||
(string/upper-case type)))))
|
||||
template (str
|
||||
left
|
||||
(if optional (str " " optional) "")
|
||||
"\n"
|
||||
right)
|
||||
backward-pos (if (= type "src")
|
||||
(+ 1 (count right))
|
||||
(count right))]
|
||||
[[:editor/input template {:type "block"
|
||||
:last-pattern command-trigger
|
||||
:backward-pos backward-pos}]])))
|
||||
|
||||
(defn ->properties
|
||||
[]
|
||||
[[:editor/clear-current-slash]
|
||||
@@ -375,7 +384,6 @@
|
||||
(cond->
|
||||
[;; Should this be replaced by "Code block"?
|
||||
["Src" (->block "src") "Create a code block"]
|
||||
["Advanced Query" (->block "query") "Create an advanced query block"]
|
||||
["Math block" (->block "export" "latex") "Create a latex block"]
|
||||
["Note" (->block "note") "Create a note block"]
|
||||
["Tip" (->block "tip") "Create a tip block"]
|
||||
@@ -399,6 +407,7 @@
|
||||
query-doc
|
||||
:icon/query
|
||||
"ADVANCED"]
|
||||
["Advanced Query" (advanced-query-steps) "Create an advanced query block" :icon/advanced-query]
|
||||
(when-not db?
|
||||
["Zotero" (zotero-steps) "Import Zotero journal article" :icon/circle-letter-z])
|
||||
["Query function" [[:editor/input "{{function }}" {:backward-pos 2}]] "Create a query function" :icon/queryCode]
|
||||
@@ -739,6 +748,14 @@
|
||||
(when-let [block (state/get-edit-block)]
|
||||
(db-property-handler/set-block-property! (:db/id block) property-id value))))
|
||||
|
||||
(defmethod handle-step :editor/set-property-on-block-property [[_ block-property-id property-id value]]
|
||||
(when (config/db-based-graph? (state/get-current-repo))
|
||||
(let [updated-block (when-let [block-uuid (:block/uuid (state/get-edit-block))]
|
||||
(db/entity [:block/uuid block-uuid]))
|
||||
block-property-value (get updated-block block-property-id)]
|
||||
(when block-property-value
|
||||
(db-property-handler/set-block-property! (:db/id block-property-value) property-id value)))))
|
||||
|
||||
(defn- file-based-set-priority
|
||||
[priority]
|
||||
(when-let [input-id (state/get-edit-input-id)]
|
||||
@@ -897,8 +914,11 @@
|
||||
|
||||
(defn handle-steps
|
||||
[vector' format]
|
||||
(doseq [step vector']
|
||||
(handle-step step format)))
|
||||
(if (config/db-based-graph? (state/get-current-repo))
|
||||
(p/doseq [step vector']
|
||||
(handle-step step format))
|
||||
(doseq [step vector']
|
||||
(handle-step step format))))
|
||||
|
||||
(defn exec-plugin-simple-command!
|
||||
[pid {:keys [block-id] :as cmd} action]
|
||||
|
||||
Reference in New Issue
Block a user