Преглед изворни кода

fix: status and priority should be :entity type

Tienson Qin пре 1 година
родитељ
комит
7007fa7d41

+ 2 - 2
deps/db/src/logseq/db/frontend/property.cljs

@@ -75,7 +75,7 @@
    :logseq.task/status
    {:original-name "Status"
     :schema
-    {:type :default
+    {:type :entity
      :public? true}
     :closed-values
     (mapv (fn [[db-ident value icon]]
@@ -92,7 +92,7 @@
    :logseq.task/priority
    {:original-name "Priority"
     :schema
-    {:type :default
+    {:type :entity
      :public? true}
     :closed-values
     (mapv (fn [[db-ident value]]

+ 5 - 3
deps/db/src/logseq/db/frontend/property/util.cljs

@@ -50,16 +50,18 @@
    the hidden page and closed value blocks as needed"
   [db-ident prop-name property {:keys [translate-closed-page-value-fn property-attributes]
                                 :or {translate-closed-page-value-fn identity}}]
-  (let [property-schema (assoc (:block/schema property)
+  (let [ref-type? (contains? (disj db-property-type/ref-property-types :entity)
+                             (get-in property [:block/schema :type]))
+        property-schema (assoc (:block/schema property)
                                :values
-                               (if (contains? db-property-type/ref-property-types (get-in property [:block/schema :type]))
+                               (if ref-type?
                                  (mapv translate-closed-page-value-fn (:closed-values property))
                                  (mapv :uuid (:closed-values property))))
         property-tx (merge (sqlite-util/build-new-property db-ident property-schema {:original-name prop-name})
                            property-attributes)
         hidden-tx
         ;; closed ref types don't have hidden tx
-        (if (contains? db-property-type/ref-property-types (get-in property [:block/schema :type]))
+        (if ref-type?
           []
           (let [page-tx (build-property-hidden-page property)
                 closed-value-blocks-tx

+ 9 - 14
src/main/frontend/components/property/value.cljs

@@ -536,15 +536,10 @@
           [:div.opacity-50.pointer.text-sm.cursor-pointer "Empty"])))))
 
 (rum/defc closed-value-item < rum/reactive
-  {:init (fn [state]
-           (let [block-id (first (:rum/args state))]
-             (db-async/<get-block (state/get-current-repo) block-id :children? false))
-           state)}
   [value {:keys [page-cp inline-text icon?]}]
   (when value
-    (if (state/sub-async-query-loading value)
-      [:div.text-sm.opacity-70 "loading"]
-      (when-let [block (db/sub-block (:db/id (db/entity [:block/uuid value])))]
+    (let [eid (if (de/entity? value) (:db/id value) [:block/uuid value])]
+      (when-let [block (db/sub-block (:db/id (db/entity eid)))]
         (let [value' (get-in block [:block/schema :value])
               icon (get block (pu/get-pid :logseq.property/icon))]
           (cond
@@ -612,16 +607,16 @@
                         (" " "Enter")
                         (do (set-open! true) (util/stop e))
                         :dune))}
-       (if (string/blank? value)
-         [:div.opacity-50.pointer.text-sm.cursor-pointer "Empty"]
-         (value-f)))
-      (shui/dropdown-menu-content
-        {:align "start"
-         :on-interact-outside #(set-open! false)
+      (if (string/blank? value)
+        [:div.opacity-50.pointer.text-sm.cursor-pointer "Empty"]
+        (value-f)))
+     (shui/dropdown-menu-content
+      {:align "start"
+       :on-interact-outside #(set-open! false)
        :onEscapeKeyDown #(set-open! false)}
       [:div.property-select
        (case type
-         (:number :url :default)
+         (:entity :number :url :default)
          (select block property select-opts' opts)
 
          (:page :date)

+ 8 - 1
src/main/frontend/handler/db_based/property.cljs

@@ -230,6 +230,10 @@
         _ (assert (keyword? property-id) "property-id should be a keyword")
         block (db/entity repo block-eid)
         property (db/entity property-id)
+        v (if (and (uuid? v)
+                   (= :entity (get-in property [:block/schema :type])))
+            (:db/id (db/entity [:block/uuid v]))
+            v)
         k-name (:block/original-name property)
         property-schema (:block/schema property)
         {:keys [type cardinality]} property-schema
@@ -759,7 +763,10 @@
 (defn batch-set-property-closed-value!
   [block-ids db-ident closed-value]
   (let [repo (state/get-current-repo)
-        closed-value-id (:block/uuid (pu/get-closed-value-entity-by-name db-ident closed-value))]
+        property (db/entity db-ident)
+        ref-type? (contains? db-property-type/ref-property-types (get-in property [:block/schema :type]))
+        closed-value-entity (pu/get-closed-value-entity-by-name db-ident closed-value)
+        closed-value-id (if ref-type? (:db/id closed-value-entity) (:block/uuid closed-value-entity))]
     (when closed-value-id
       (batch-set-property! repo
                            block-ids