mirror of https://github.com/logseq/logseq
enhance: import :filters and helpfully ignore :icon
Better to ignore :icon and explain to user than import them as broken with no explanation. part of LOG-2985pull/11049/head
parent
1f3515a70d
commit
531a8ef533
|
@ -121,9 +121,14 @@
|
||||||
{:type {:from prev-type :to prop-type}})))
|
{:type {:from prev-type :to prop-type}})))
|
||||||
|
|
||||||
(defn- update-built-in-property-values
|
(defn- update-built-in-property-values
|
||||||
[props db]
|
[props db ignored-properties {:block/keys [content name]}]
|
||||||
(->> props
|
(->> props
|
||||||
(map (fn [[prop val]]
|
(keep (fn [[prop val]]
|
||||||
|
(if (= :icon prop)
|
||||||
|
(do (swap! ignored-properties
|
||||||
|
conj
|
||||||
|
{:property prop :value val :location (if name {:page name} {:block content})})
|
||||||
|
nil)
|
||||||
[prop
|
[prop
|
||||||
(case prop
|
(case prop
|
||||||
:query-properties
|
:query-properties
|
||||||
|
@ -139,7 +144,12 @@
|
||||||
(:block/uuid (db-property/get-closed-value-entity-by-name db prop val))
|
(:block/uuid (db-property/get-closed-value-entity-by-name db prop val))
|
||||||
:logseq.table.version
|
:logseq.table.version
|
||||||
(parse-long val)
|
(parse-long val)
|
||||||
val)]))
|
:filters
|
||||||
|
(try (edn/read-string val)
|
||||||
|
(catch :default e
|
||||||
|
(js/console.error "Translating filters failed with:" e)
|
||||||
|
{}))
|
||||||
|
val)])))
|
||||||
(into {})))
|
(into {})))
|
||||||
|
|
||||||
(defn- handle-changed-property
|
(defn- handle-changed-property
|
||||||
|
@ -183,7 +193,9 @@
|
||||||
|
|
||||||
(defn- update-properties
|
(defn- update-properties
|
||||||
"Updates block property names and values"
|
"Updates block property names and values"
|
||||||
[props db page-names-to-uuids properties-text-values {:keys [whiteboard? property-changes import-state]}]
|
[props db page-names-to-uuids
|
||||||
|
{:block/keys [properties-text-values] :as block}
|
||||||
|
{:keys [whiteboard? property-changes import-state]}]
|
||||||
(let [prop-name->uuid (if whiteboard?
|
(let [prop-name->uuid (if whiteboard?
|
||||||
(fn prop-name->uuid [k]
|
(fn prop-name->uuid [k]
|
||||||
(or (get-pid db k)
|
(or (get-pid db k)
|
||||||
|
@ -195,7 +207,11 @@
|
||||||
;; TODO: Add import support for :template. Ignore for now as they cause invalid property types
|
;; TODO: Add import support for :template. Ignore for now as they cause invalid property types
|
||||||
(if (contains? props :template)
|
(if (contains? props :template)
|
||||||
{}
|
{}
|
||||||
(-> (update-built-in-property-values (select-keys props db-property/built-in-properties-keys) db)
|
(-> (update-built-in-property-values
|
||||||
|
(select-keys props db-property/built-in-properties-keys)
|
||||||
|
db
|
||||||
|
(:ignored-properties import-state)
|
||||||
|
(select-keys block [:block/name :block/content]))
|
||||||
(merge (update-user-property-values user-properties prop-name->uuid properties-text-values property-changes (:ignored-properties import-state)))
|
(merge (update-user-property-values user-properties prop-name->uuid properties-text-values property-changes (:ignored-properties import-state)))
|
||||||
(update-keys prop-name->uuid)))))
|
(update-keys prop-name->uuid)))))
|
||||||
|
|
||||||
|
@ -223,7 +239,9 @@
|
||||||
_ (when (seq property-changes) (prn :PROP-CHANGES property-changes))
|
_ (when (seq property-changes) (prn :PROP-CHANGES property-changes))
|
||||||
options' (assoc options :property-changes property-changes)]
|
options' (assoc options :property-changes property-changes)]
|
||||||
(assoc-in block [:block/properties]
|
(assoc-in block [:block/properties]
|
||||||
(update-properties properties' db page-names-to-uuids (:block/properties-text-values block) options')))
|
(update-properties properties' db page-names-to-uuids
|
||||||
|
(select-keys block [:block/properties-text-values :block/name :block/content])
|
||||||
|
options')))
|
||||||
block)
|
block)
|
||||||
(dissoc :block/properties-text-values :block/properties-order :block/invalid-properties)))
|
(dissoc :block/properties-text-values :block/properties-order :block/invalid-properties)))
|
||||||
|
|
||||||
|
|
|
@ -360,11 +360,15 @@
|
||||||
[:.text-lg.mb-2 (str "Import ignored " (count ignored-props) " "
|
[:.text-lg.mb-2 (str "Import ignored " (count ignored-props) " "
|
||||||
(if (= 1 (count ignored-props)) "property" "properties"))]
|
(if (= 1 (count ignored-props)) "property" "properties"))]
|
||||||
[:span.text-xs
|
[:span.text-xs
|
||||||
"To fix this, change these property values to have the correct type and reimport the graph"]
|
"To fix a property type, change the property value to the correct type and reimport the graph"]
|
||||||
(->> ignored-props
|
(->> ignored-props
|
||||||
(map (fn [{:keys [property value schema]}]
|
(map (fn [{:keys [property value schema location]}]
|
||||||
[(str "Property " (pr-str property) " with value " (pr-str value))
|
[(str "Property " (pr-str property) " with value " (pr-str value))
|
||||||
(str "Property value has type " (get-in schema [:type :to]) " instead of type " (get-in schema [:type :from]))]))
|
(if (= property :icon)
|
||||||
|
(if (:page location)
|
||||||
|
(str "Page icons can't be imported. Go to the page " (pr-str (:page location)) " to manually import it.")
|
||||||
|
(str "Block icons can't be imported. Manually import it at the block: " (pr-str (:block location))))
|
||||||
|
(str "Property value has type " (get-in schema [:type :to]) " instead of type " (get-in schema [:type :from])))]))
|
||||||
(map (fn [[k v]]
|
(map (fn [[k v]]
|
||||||
[:dl.my-2.mb-0
|
[:dl.my-2.mb-0
|
||||||
[:dt.m-0 [:strong (str k)]]
|
[:dt.m-0 [:strong (str k)]]
|
||||||
|
|
Loading…
Reference in New Issue