mirror of https://github.com/logseq/logseq
fix: page-property queries for closed values
Also update properties graph to demo all the page property equivalents to block property examplespull/11102/head
parent
b1eeff0083
commit
15825bd2ea
|
@ -59,16 +59,20 @@
|
|||
val)
|
||||
get-closed-value #(get @closed-values %)]
|
||||
{:pages-and-blocks
|
||||
;; Journals
|
||||
[{:page
|
||||
{:block/name (date-journal-title today) :block/journal? true :block/journal-day (date-journal-day today)}
|
||||
:blocks
|
||||
[{:block/content "[[Properties]]"}
|
||||
{:block/content "[[Queries]]"}]}
|
||||
[{:block/content "[[Block Properties]]"}
|
||||
{:block/content "[[Block Property Queries]]"}
|
||||
{:block/content "[[Page Property Queries]]"}]}
|
||||
{:page
|
||||
{:block/name (date-journal-title yesterday) :block/journal? true :block/journal-day (date-journal-day yesterday)}}
|
||||
{:page
|
||||
{:block/name (date-journal-title two-days-ago) :block/journal? true :block/journal-day (date-journal-day two-days-ago)}}
|
||||
{:page {:block/name "properties"}
|
||||
|
||||
;; Block property blocks and queries
|
||||
{:page {:block/original-name "Block Properties"}
|
||||
:blocks
|
||||
[{:block/content "default property block" :properties {:default "haha"}}
|
||||
{:block/content "default-closed property block" :properties {:default-closed (random-closed-value :default-closed)}}
|
||||
|
@ -86,9 +90,10 @@
|
|||
{:block/content "date-many property block" :properties {:date-many #{[:page (date-journal-title today)]
|
||||
[:page (date-journal-title yesterday)]}}}
|
||||
{:block/content "date-closed property block" :properties {:date-closed (random-page-closed-value :date-closed)}}]}
|
||||
{:page {:block/name "queries"}
|
||||
{:page {:block/original-name "Block Property Queries"}
|
||||
:blocks
|
||||
[{:block/content "{{query (property :default \"haha\")}}"}
|
||||
{:block/content (str "{{query (property :default-closed " (pr-str (get-closed-value :default-closed)) ")}}")}
|
||||
{:block/content "{{query (property :url \"https://logseq.com\")}}"}
|
||||
{:block/content "{{query (property :url-many \"https://logseq.com\")}}"}
|
||||
{:block/content (str "{{query (property :url-closed " (pr-str (get-closed-value :url-closed)) ")}}")}
|
||||
|
@ -102,12 +107,51 @@
|
|||
{:block/content (str "{{query (property :date " (page-ref/->page-ref (string/capitalize (date-journal-title today))) ")}}")}
|
||||
{:block/content (str "{{query (property :date-many " (page-ref/->page-ref (string/capitalize (date-journal-title yesterday))) ")}}")}
|
||||
{:block/content (str "{{query (property :date-closed " (page-ref/->page-ref (string/capitalize (get-closed-value :date-closed))) ")}}")}]}
|
||||
|
||||
;; Page property pages and queries
|
||||
{:page {:block/name "default page" :properties {:default "yolo"}}}
|
||||
{:page {:block/name "default-closed page" :properties {:default-closed (random-closed-value :default-closed)}}}
|
||||
{:page {:block/name "url page" :properties {:url "https://logseq.com"}}}
|
||||
{:page {:block/name "url-many page" :properties {:url-many #{"https://logseq.com" "https://docs.logseq.com"}}}}
|
||||
{:page {:block/name "url-closed page" :properties {:url-closed (random-closed-value :url-closed)}}}
|
||||
{:page {:block/name "checkbox page" :properties {:checkbox true}}}
|
||||
{:page {:block/name "number page" :properties {:number 5}}}
|
||||
{:page {:block/name "number-many page" :properties {:number-many #{5 10}}}}
|
||||
{:page {:block/name "number-closed page" :properties {:number-closed (random-closed-value :number-closed)}}}
|
||||
{:page {:block/name "page page" :properties {:page [:page "page 1"]}}}
|
||||
{:page {:block/name "page-many page" :properties {:page-many #{[:page "page 1"] [:page "page 2"]}}}}
|
||||
{:page {:block/name "page-closed page" :properties {:page-closed (random-page-closed-value :page-closed)}}}
|
||||
{:page {:block/name "date page" :properties {:date [:page (date-journal-title today)]}}}
|
||||
{:page {:block/name "date-many page" :properties {:date-many #{[:page (date-journal-title today)]
|
||||
[:page (date-journal-title yesterday)]}}}}
|
||||
{:page {:block/name "date-closed page" :properties {:date-closed (random-page-closed-value :date-closed)}}}
|
||||
{:page {:block/original-name "Page Property Queries"}
|
||||
:blocks
|
||||
[{:block/content "{{query (page-property :default \"yolo\")}}"}
|
||||
{:block/content (str "{{query (page-property :default-closed " (pr-str (get-closed-value :default-closed)) ")}}")}
|
||||
{:block/content "{{query (page-property :url \"https://logseq.com\")}}"}
|
||||
{:block/content "{{query (page-property :url-many \"https://logseq.com\")}}"}
|
||||
{:block/content (str "{{query (page-property :url-closed " (pr-str (get-closed-value :url-closed)) ")}}")}
|
||||
{:block/content "{{query (page-property :checkbox true)}}"}
|
||||
{:block/content "{{query (page-property :number 5)}}"}
|
||||
{:block/content "{{query (page-property :number-many 10)}}"}
|
||||
{:block/content (str "{{query (page-property :number-closed " (pr-str (get-closed-value :number-closed)) ")}}")}
|
||||
{:block/content "{{query (page-property :page [[Page 1]])}}"}
|
||||
{:block/content "{{query (page-property :page-many [[Page 2]])}}"}
|
||||
{:block/content (str "{{query (page-property :page-closed " (page-ref/->page-ref (string/capitalize (get-closed-value :page-closed))) ")}}")}
|
||||
{:block/content (str "{{query (page-property :date " (page-ref/->page-ref (string/capitalize (date-journal-title today))) ")}}")}
|
||||
{:block/content (str "{{query (page-property :date-many " (page-ref/->page-ref (string/capitalize (date-journal-title yesterday))) ")}}")}
|
||||
{:block/content (str "{{query (page-property :date-closed " (page-ref/->page-ref (string/capitalize (get-closed-value :date-closed))) ")}}")}]}
|
||||
|
||||
;; Property values
|
||||
{:page {:block/name "page 1"}
|
||||
:blocks
|
||||
[{:block/content "yee"}
|
||||
{:block/content "haw"}]}
|
||||
{:page {:block/name "page 2"}}
|
||||
{:page {:block/name "page 3"}}]
|
||||
|
||||
;; Properties
|
||||
:properties
|
||||
(->> [:default :url :checkbox :number :page :date]
|
||||
(mapcat #(cond-> [[% {:block/schema {:type %}}]]
|
||||
|
|
|
@ -311,13 +311,17 @@
|
|||
:rules [:priority]}))))
|
||||
|
||||
(defn- build-page-property
|
||||
[e]
|
||||
[e {:keys [db-graph?]}]
|
||||
(let [[k v] (rest e)
|
||||
k (string/replace (name k) "_" "-")]
|
||||
(if (some? v)
|
||||
(let [v' (parse-property-value (str v))
|
||||
val (if (coll? v') (first v') v')]
|
||||
{:query (list 'page-property '?p (->keyword-property k) val)
|
||||
v'' (if (coll? v') (first v') v')
|
||||
v''' (if-let [closed-value (and db-graph?
|
||||
(db-property/get-closed-value-entity-by-name (conn/get-db) k v''))]
|
||||
(:block/uuid closed-value)
|
||||
v'')]
|
||||
{:query (list 'page-property '?p (->keyword-property k) v''')
|
||||
:rules [:page-property]})
|
||||
{:query (list 'has-page-property '?p (->keyword-property k))
|
||||
:rules [:has-page-property]})))
|
||||
|
@ -445,7 +449,7 @@ Some bindings in this fn:
|
|||
(build-namespace e)
|
||||
|
||||
(= 'page-property fe)
|
||||
(build-page-property e)
|
||||
(build-page-property e env)
|
||||
|
||||
(= 'page-tags fe)
|
||||
(build-page-tags e)
|
||||
|
|
Loading…
Reference in New Issue