Browse Source

fix: linked references do not group blocks by page in file graphs

Tienson Qin 7 months ago
parent
commit
f4848f0c57
2 changed files with 18 additions and 8 deletions
  1. 7 3
      deps/db/src/logseq/db/common/view.cljs
  2. 11 5
      src/main/frontend/components/views.cljs

+ 7 - 3
deps/db/src/logseq/db/common/view.cljs

@@ -501,8 +501,12 @@
        :data ids})
     :else
     (let [view (d/entity db view-id)
+          db-based? (ldb/db-based-graph? db)
           group-by-property (:logseq.property.view/group-by-property view)
-          group-by-property-ident (:db/ident group-by-property)
+          group-by-property-ident (if db-based?
+                                    (:db/ident group-by-property)
+                                    (when (contains? #{:linked-references :unlinked-references} view-feature-type)
+                                      :block/page))
           group-by-closed-values? (some? (:property/closed-values group-by-property))
           ref-property? (= (:db/valueType group-by-property) :db.type/ref)
           filters (or (:logseq.property.table/filters view) filters)
@@ -523,7 +527,7 @@
                               (filter (fn [row] (row-matched? db row filters input)) entities)
                               entities)
           group-by-page? (= group-by-property-ident :block/page)
-          result (if group-by-property
+          result (if group-by-property-ident
                    (->> filtered-entities
                         (group-by group-by-property-ident)
                         (seq)
@@ -539,7 +543,7 @@
                                      by-value))
                                  (if group-by-page? #(compare %2 %1) compare)))
                    (sort-entities db sorting filtered-entities))
-          data' (if group-by-property
+          data' (if group-by-property-ident
                   (map
                    (fn [[by-value entities]]
                      (let [by-value' (if (de/entity? by-value)

+ 11 - 5
src/main/frontend/components/views.cljs

@@ -1598,7 +1598,8 @@
 (rum/defc ^:large-vars/cleanup-todo view-inner < rum/static
   [view-entity {:keys [view-parent data full-data set-data! columns add-new-object! foldable-options input set-input! sorting set-sorting! filters set-filters! view-feature-type] :as option*}
    *scroller-ref]
-  (let [option (assoc option* :properties
+  (let [db-based? (config/db-based-graph?)
+        option (assoc option* :properties
                       (-> (remove #{:id :select} (map :id columns))
                           (conj :block/uuid :block/name)
                           vec))
@@ -1669,7 +1670,11 @@
                          :logseq.property.view/type.table
                          :logseq.property.view/type.list))
         gallery? (= display-type :logseq.property.view/type.gallery)
-        list-view? (= display-type :logseq.property.view/type.list)]
+        list-view? (= display-type :logseq.property.view/type.list)
+        group-by-property-ident (or (:db/ident group-by-property)
+                                    (when (and (not db-based?) (contains? #{:linked-references :unlinked-references} view-feature-type))
+                                      :block/page))]
+
     (run-effects! option table-map *scroller-ref gallery?)
 
     [:div.flex.flex-col.gap-2.grid
@@ -1683,7 +1688,7 @@
                         :display-type display-type
                         :row-selection row-selection
                         :add-new-object! add-new-object!}]
-         (if (and group-by-property (not (number? (first (:rows table)))))
+         (if (and group-by-property-ident (not (number? (first (:rows table)))))
            (when (seq (:rows table))
              [:div.flex.flex-col.border-t.pt-2
               (ui/virtualized-list
@@ -1707,7 +1712,8 @@
                                       readable-property-value #(if (and (map? %) (or (:block/title %) (:logseq.property/value %)))
                                                                  (db-property/property-value-content %)
                                                                  (str %))
-                                      group-by-page? (= :block/page (:db/ident group-by-property))]
+                                      group-by-page? (or (= :block/page group-by-property-ident)
+                                                         (and (not db-based?) (contains? #{:linked-references :unlinked-references} display-type)))]
                                   (rum/with-key
                                     (ui/foldable
                                      [:div
@@ -1828,7 +1834,7 @@
                                           :input input
                                           :items-count (if (every? number? data)
                                                          (count data)
-                                                             ;; grouped
+                                                         ;; grouped
                                                          (reduce (fn [total [_ col]]
                                                                    (+ total (count col))) 0 data))
                                           :ref-pages-count ref-pages-count