From 6a5555bfafd48b3f0c5cbcd69b726f4acfb698a4 Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Mon, 17 Feb 2025 18:14:09 +0800 Subject: [PATCH] fix: all pages view --- deps/db/src/logseq/db.cljs | 6 -- .../db/src/logseq/db/sqlite/create_graph.cljs | 8 --- src/main/frontend/components/all_pages.cljs | 7 +-- src/main/frontend/components/views.cljs | 55 ++++++++++++------- src/main/frontend/hooks.cljs | 16 ++++-- 5 files changed, 50 insertions(+), 42 deletions(-) diff --git a/deps/db/src/logseq/db.cljs b/deps/db/src/logseq/db.cljs index a724148b30..5514c5fd8d 100644 --- a/deps/db/src/logseq/db.cljs +++ b/deps/db/src/logseq/db.cljs @@ -611,12 +611,6 @@ (let [class-parent-ids (set (map :db/id (get-classes-parents tags)))] (contains? (set/union class-parent-ids tags-ids) (:db/id class)))))) -(defn get-all-pages-views - [db] - (when (db-based-graph? db) - (when-let [page (get-page db common-config/views-page-name)] - (:logseq.property/_view-for page)))) - (defn inline-tag? [block-raw-title tag] (assert (string? block-raw-title) "block-raw-title should be a string") diff --git a/deps/db/src/logseq/db/sqlite/create_graph.cljs b/deps/db/src/logseq/db/sqlite/create_graph.cljs index 6662bb8399..5bab95c975 100644 --- a/deps/db/src/logseq/db/sqlite/create_graph.cljs +++ b/deps/db/src/logseq/db/sqlite/create_graph.cljs @@ -177,14 +177,6 @@ :block/title common-config/views-page-name :block/tags [:logseq.class/Page] :logseq.property/hide? true - :logseq.property/built-in? true}) - (sqlite-util/block-with-timestamps - {:block/uuid (common-uuid/gen-uuid) - :block/title "All Pages Default View" - :block/parent [:block/uuid page-id] - :block/order (db-order/gen-key nil) - :block/page [:block/uuid page-id] - :logseq.property/view-for [:block/uuid page-id] :logseq.property/built-in? true})])) (defn- build-favorites-page diff --git a/src/main/frontend/components/all_pages.cljs b/src/main/frontend/components/all_pages.cljs index 135d3da938..9fe11206cf 100644 --- a/src/main/frontend/components/all_pages.cljs +++ b/src/main/frontend/components/all_pages.cljs @@ -10,6 +10,7 @@ [frontend.hooks :as hooks] [frontend.state :as state] [frontend.ui :as ui] + [logseq.common.config :as common-config] [logseq.db :as ldb] [logseq.shui.ui :as shui] [promesa.core :as p] @@ -55,9 +56,7 @@ [loading? set-loading!] (rum/use-state true) columns' (views/build-columns {} (columns) {:with-object-name? false - :with-id? false}) - ;; view-entity (first (ldb/get-all-pages-views db)) - ] + :with-id? false})] (hooks/use-effect! (fn [] (when-let [^js worker @state/*db-worker] @@ -73,7 +72,7 @@ (ui/skeleton) (views/view {:data data :set-data! set-data! - :view-parent nil + :view-parent (db/get-page common-config/views-page-name) :view-identity :all-pages :columns columns' :on-delete-rows (fn [table selected-rows] diff --git a/src/main/frontend/components/views.cljs b/src/main/frontend/components/views.cljs index 21475cb6b5..2849d103cf 100644 --- a/src/main/frontend/components/views.cljs +++ b/src/main/frontend/components/views.cljs @@ -1417,6 +1417,14 @@ (table-view table option row-selection *scroller-ref))) +(defn- get-views + [ent view-identity] + (let [entity (db/entity (:db/id ent)) + views (->> (:logseq.property/_view-for entity) + (filter (fn [view] + (= view-identity (:logseq.property.view/identity view)))))] + (ldb/sort-by-order views))) + (defn- create-view! [view-parent view-identity] (when-let [page (db/get-case-page common-config/views-page-name)] @@ -1425,8 +1433,24 @@ :logseq.property.view/identity view-identity} (contains? #{:linked-references :unlinked-references} view-identity) (assoc :logseq.property.view/type (:db/id (db/entity :logseq.property.view/type.list)))) - result (editor-handler/api-insert-new-block! "" {:page (:block/uuid page) - :properties properties})] + view-exists? (seq (get-views view-parent view-identity)) + view-title (if view-exists? + "" + (case view-identity + :linked-references + "Linked references" + :unlinked-references + "Unlinked references" + :class-objects + "All" + :property-objects + "All" + :all-pages + "All pages" + "")) + result (editor-handler/api-insert-new-block! view-title + {:page (:block/uuid page) + :properties properties})] (db/entity [:block/uuid (:block/uuid result)])))) (rum/defc views-tab < rum/reactive db-mixins/query @@ -1469,17 +1493,17 @@ :logseq.property.view/type.table)] (when-let [icon (:logseq.property/icon (db/entity display-type))] (icon-component/icon icon {:color? true}))) - (if (= (:db/id view) (:db/id view-parent)) - "All" - (let [title (:block/title view)] - (if (= title "") - "New view" - title)))))) + (let [title (:block/title view)] + (if (= title "") + "New view" + title))))) (shui/button {:variant :text :size :sm :class "!px-1 text-muted-foreground hover:text-foreground" - :on-click (fn [] (create-view! view-parent view-identity))} + :on-click (fn [] + (p/let [view (create-view! view-parent view-identity)] + (set-views! (concat views [view]))))} (ui/icon "plus" {}))]) (rum/defc ^:large-vars/cleanup-todo view-inner < rum/static @@ -1646,15 +1670,6 @@ (::scroller-ref state)) (str "view-" (:db/id view-entity'))))) -(defn- get-views - [ent] - (let [class (db/entity (:db/id ent))] - (->> (:logseq.property/_view-for class) - (remove (fn [view] - (contains? #{:linked-references :unlinked-references} - (:logseq.property.view/identity view)))) - (ldb/sort-by-order)))) - (rum/defc view < rum/static [{:keys [view-parent view-identity view-entity] :as option}] (let [[view-entity set-view-entity!] (rum/use-state view-entity) @@ -1662,7 +1677,7 @@ (hooks/use-effect! (fn [] (p/let [_result (db-async/