Bläddra i källkod

fix: later picked settings should have higher priority for sorting

fix https://test.logseq.com/#/page/67cd8311-b5f6-4974-b18d-038876725b0d
Tienson Qin 7 månader sedan
förälder
incheckning
da74228213

+ 7 - 4
deps/db/src/logseq/db/frontend/view.cljs

@@ -19,13 +19,15 @@
   [block property]
   (let [typ (:logseq.property/type property)
         many? (= :db.cardinality/many (get property :db/cardinality))
-        number-type? (= :number typ)
+        number-type? (or (= :number typ) (= :datetime typ))
         v (get block (:db/ident property))
         v' (if many? v [v])
         col (->> (if (db-property-type/all-ref-property-types typ) (map db-property/property-value-content v') v')
                  (remove nil?))]
-    (if number-type?
+    (cond
+      number-type?
       (reduce + (filter number? col))
+      :else
       (string/join ", " col))))
 
 (defn- get-value-for-sort
@@ -61,7 +63,7 @@
             ordering (if (and (number? v1) (number? v2))
                        (if asc? < >)
                        (if asc? compare #(compare %2 %1)))
-            order (ordering)]
+            order (ordering v1 v2)]
         (if (and (zero? order) orderings)
           (recur orderings)
           order)))))
@@ -91,7 +93,8 @@
   (let [sorting' (map (fn [{:keys [id asc?]}]
                         (let [property (or (d/entity db id) {:id id})]
                           {:asc? asc?
-                           :get-value (fn [row] ((get-value-for-sort property) row))})) sorting)]
+                           :get-value (fn [row]
+                                        ((get-value-for-sort property) row))})) sorting)]
     (sort (by sorting') rows)))
 
 (defn sort-rows

+ 1 - 1
deps/shui/src/logseq/shui/table/core.cljc

@@ -85,7 +85,7 @@
                        (remove (fn [item] (= (:id item) id)) sorting)
                        (map (fn [item] (if (= (:id item) id) (assoc item :asc? asc?) item)) sorting))
                      (when-not (nil? asc?)
-                       (conj (if (vector? sorting) sorting (vec sorting)) {:id id :asc? asc?})))
+                       (into [{:id id :asc? asc?}] sorting)))
                    (remove nil?)
                    vec)]
     (set-sorting! value)

+ 1 - 1
src/main/frontend/components/cmdk/core.cljs

@@ -804,7 +804,7 @@
                                   (handle-input-change state e)
                                   (when-let [on-change (:on-input-change opts)]
                                     (on-change new-value))))
-                              100)
+                              200)
                              [])]
     ;; use-effect [results-ordered input] to check whether the highlighted item is still in the results,
     ;; if not then clear that puppy out!

+ 4 - 1
src/main/frontend/components/views.cljs

@@ -906,6 +906,9 @@
         [dropdown-open? set-dropdown-open!] (hooks/use-state false)]
     (hooks/use-effect!
      (fn []
+       (let [values (if (coll? value) value [value])
+             ids (filter #(and (uuid? %) (nil? (db/entity [:block/uuid %]))) values)]
+         (when (seq ids) (db-async/<get-blocks (state/get-current-repo) ids)))
        (when (and property-ident dropdown-open?
                   (not (contains? #{:data :datetime :checkbox} type)))
          (p/let [data (get-property-values (:db/id view-entity) property-ident)]
@@ -974,7 +977,7 @@
                                 (t/to-default-time-zone)
                                 (tf/unparse (tf/formatter "yyyy-MM-dd")))
                        (and (coll? value) (every? uuid? value))
-                       (set (map #(db/entity [:block/uuid %]) value))
+                       (keep #(db/entity [:block/uuid %]) value)
                        :else
                        value)]
            [:div.flex.flex-row.items-center.gap-1.text-xs