fix: page/date closed values for *property queries

Also updated example graph to show closed value queries working
pull/11102/head
Gabriel Horner 2024-03-08 10:16:18 -05:00
parent 44a4ecdcd0
commit 62e6084b45
6 changed files with 31 additions and 14 deletions

View File

@ -209,3 +209,8 @@
(let [e (d/entity db [:block/uuid id])]
(when (= (get-in e [:block/schema :value]) value-name)
e))) values)))
(defn closed-value-name
"Gets name of closed value given closed value ent/map. Works for all closed value types including pages"
[ent]
(or (:block/original-name ent) (get-in ent [:block/schema :value])))

View File

@ -4,6 +4,7 @@
NOTE: This script is also used in CI to confirm graph creation works"
(:require [logseq.tasks.db-graph.create-graph :as create-graph]
[logseq.common.util.date-time :as date-time-util]
[logseq.common.util.page-ref :as page-ref]
[logseq.db.frontend.property.type :as db-property-type]
[clojure.string :as string]
[datascript.core :as d]
@ -48,8 +49,15 @@
yesterday (subtract-days today 1)
two-days-ago (subtract-days today 2)
closed-values-config (build-closed-values-config {:dates [today yesterday two-days-ago]})
random-closed-value #(-> closed-values-config % rand-nth :uuid)
random-page-closed-value #(-> closed-values-config % rand-nth :value)]
;; Stores random closed values for use with queries
closed-values (atom {})
random-closed-value #(let [val (-> closed-values-config % rand-nth)]
(swap! closed-values assoc % (:value val))
(:uuid val))
random-page-closed-value #(let [val (-> closed-values-config % rand-nth :value)]
(swap! closed-values assoc % (second val))
val)
get-closed-value #(get @closed-values %)]
{:pages-and-blocks
[{:page
{:block/name (date-journal-title today) :block/journal? true :block/journal-day (date-journal-day today)}
@ -83,13 +91,17 @@
[{:block/content "{{query (property :default \"haha\")}}"}
{: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)) ")}}")}
{:block/content "{{query (property :checkbox true)}}"}
{:block/content "{{query (property :number 5)}}"}
{:block/content "{{query (property :number-many 10)}}"}
{:block/content (str "{{query (property :number-closed " (pr-str (get-closed-value :number-closed)) ")}}")}
{:block/content "{{query (property :page [[Page 1]])}}"}
{:block/content "{{query (property :page-many [[Page 2]])}}"}
{:block/content (str "{{query (property :date [[" (string/capitalize (date-journal-title today)) "]])}}")}
{:block/content (str "{{query (property :date-many [[" (string/capitalize (date-journal-title yesterday)) "]])}}")}]}
{:block/content (str "{{query (property :page-closed " (page-ref/->page-ref (string/capitalize (get-closed-value :page-closed))) ")}}")}
{: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 {:block/name "page 1"}
:blocks
[{:block/content "yee"}

View File

@ -17,7 +17,8 @@
[frontend.db.async :as db-async]
[frontend.state :as state]
[frontend.handler.property.util :as pu]
[promesa.core :as p]))
[promesa.core :as p]
[logseq.db.frontend.property :as db-property]))
(defn- <upsert-closed-value!
"Create new closed value and returns its block UUID."
@ -110,8 +111,7 @@
(rum/local false ::hover?)
[state item {:keys [toggle-fn delete-choice update-icon]} parent-opts]
(let [*hover? (::hover? state)
value (or (:block/original-name item)
(get-in item [:block/schema :value]))
value (db-property/closed-value-name item)
page? (:block/original-name item)]
[:div.flex.flex-1.flex-row.items-center.gap-2.justify-between
{:on-mouse-over #(reset! *hover? true)

View File

@ -24,7 +24,8 @@
[promesa.core :as p]
[frontend.db.async :as db-async]
[logseq.common.util.macro :as macro-util]
[logseq.db :as ldb]))
[logseq.db :as ldb]
[logseq.db.frontend.property :as db-property]))
(defn- select-type?
[property type]
@ -393,8 +394,7 @@
(keep (fn [id]
(when-let [block (when id (db/entity [:block/uuid id]))]
(let [icon (pu/get-block-property-value block :icon)
value (or (:block/original-name block)
(get-in block [:block/schema :value]))]
value (db-property/closed-value-name block)]
{:label (if icon
[:div.flex.flex-row.gap-2
(icon-component/icon icon)

View File

@ -276,7 +276,7 @@
values (get-in property [:block/schema :values])
v' (if (seq values) ; closed values
(or
(some #(when-let [closed-value (get-in (db-utils/entity [:block/uuid %]) [:block/schema :value])]
(some #(when-let [closed-value (db-property/closed-value-name (db-utils/entity [:block/uuid %]))]
(when (= v closed-value)
%))
values)

View File

@ -3,7 +3,8 @@
(:require [frontend.db.utils :as db-utils]
[frontend.state :as state]
[logseq.common.util :as common-util]
[frontend.db :as db]))
[frontend.db :as db]
[logseq.db.frontend.property :as db-property]))
(defn get-property-name
"Get a property's name given its uuid"
@ -39,8 +40,7 @@
readable-property-val
#(if (seq (get-in prop-ent [:block/schema :values])) ; closed values
(when-let [block (db-utils/entity [:block/uuid %])]
(or (:block/original-name block)
(get-in block [:block/schema :value])))
(db-property/closed-value-name block))
%)]
[(-> prop-ent :block/name keyword)
(if (set? v)