From 0bba0a2ca922454aaf10a60bd0e15636ed74630a Mon Sep 17 00:00:00 2001 From: Gabriel Horner Date: Thu, 15 Feb 2024 15:01:01 -0500 Subject: [PATCH] enhance: import built-in logseq.* props - part of LOG-2977 --- deps/db/src/logseq/db/frontend/property.cljs | 13 +++++++ .../src/logseq/graph_parser/exporter.cljs | 35 +++++++++++++------ src/main/frontend/handler/property/util.cljs | 13 ++++--- 3 files changed, 43 insertions(+), 18 deletions(-) diff --git a/deps/db/src/logseq/db/frontend/property.cljs b/deps/db/src/logseq/db/frontend/property.cljs index a1c083a26..7adbfd1d0 100644 --- a/deps/db/src/logseq/db/frontend/property.cljs +++ b/deps/db/src/logseq/db/frontend/property.cljs @@ -172,3 +172,16 @@ (defn shape-block? [repo db block] (= :whiteboard-shape (get-block-property-value repo db block :ls-type))) + +(defn get-closed-property-values + [db property-name] + (when-let [property (get-property db property-name)] + (get-in property [:block/schema :values]))) + +(defn get-closed-value-entity-by-name + [db property-name value-name] + (let [values (get-closed-property-values db property-name)] + (some (fn [id] + (let [e (d/entity db [:block/uuid id])] + (when (= (get-in e [:block/schema :value]) value-name) + e))) values))) diff --git a/deps/graph-parser/src/logseq/graph_parser/exporter.cljs b/deps/graph-parser/src/logseq/graph_parser/exporter.cljs index 0d55f935e..071ab66c1 100644 --- a/deps/graph-parser/src/logseq/graph_parser/exporter.cljs +++ b/deps/graph-parser/src/logseq/graph_parser/exporter.cljs @@ -122,6 +122,28 @@ (map #(add-uuid-to-page-map % page-names-to-uuids))))) block))) +(defn- update-built-in-property-values + [props db] + (->> props + (map (fn [[prop val]] + [prop + (case prop + :query-properties + (try + (mapv #(if (#{:page :block :created-at :updated-at} %) % (get-pid db %)) + (edn/read-string val)) + (catch :default e + (js/console.error "Translating query properties failed with:" e) + [])) + :query-sort-by + (if (#{:page :block :created-at :updated-at} val) val (get-pid db val)) + (:logseq.color :logseq.table.headers :logseq.table.hover) + (:block/uuid (db-property/get-closed-value-entity-by-name db prop val)) + :logseq.table.version + (parse-long val) + val)])) + (into {}))) + (defn- update-block-properties [props db page-names-to-uuids {:keys [whiteboard?]}] (let [prop-name->uuid (if whiteboard? (fn prop-name->uuid [k] @@ -139,17 +161,8 @@ :card-last-interval :card-repeats :card-last-reviewed :card-next-schedule :card-ease-factor :card-last-score])] (cond-> (apply dissoc props dissoced-props) - (:query-properties props) - (update :query-properties - (fn [val] - (try - (mapv #(if (#{:page :block :created-at :updated-at} %) % (get-pid db %)) - (edn/read-string val)) - (catch :default e - (js/console.error "Translating query properties failed with:" e) - [])))) - (:query-sort-by props) - (update :query-sort-by #(if (#{:page :block :created-at :updated-at} %) % (get-pid db %))) + (seq (select-keys props db-property/built-in-properties-keys)) + (update-built-in-property-values db) true (update-keys prop-name->uuid)))) diff --git a/src/main/frontend/handler/property/util.cljs b/src/main/frontend/handler/property/util.cljs index 78dc7ca75..8dcb1640c 100644 --- a/src/main/frontend/handler/property/util.cljs +++ b/src/main/frontend/handler/property/util.cljs @@ -55,13 +55,12 @@ (defn get-closed-property-values [property-name] - (when-let [property (get-property property-name)] - (get-in property [:block/schema :values]))) + (let [repo (state/get-current-repo) + db (db/get-db repo)] + (db-property/get-closed-property-values db property-name))) (defn get-closed-value-entity-by-name [property-name value-name] - (let [values (get-closed-property-values property-name)] - (some (fn [id] - (let [e (db/entity [:block/uuid id])] - (when (= (get-in e [:block/schema :value]) value-name) - e))) values))) + (let [repo (state/get-current-repo) + db (db/get-db repo)] + (db-property/get-closed-value-entity-by-name db property-name value-name)))