mirror of
https://github.com/logseq/logseq.git
synced 2026-05-25 13:14:39 +00:00
fix: all pages view
This commit is contained in:
6
deps/db/src/logseq/db.cljs
vendored
6
deps/db/src/logseq/db.cljs
vendored
@@ -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")
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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/<get-views (state/get-current-repo) (:db/id view-parent) view-identity)
|
||||
views (get-views view-parent)]
|
||||
views (get-views view-parent view-identity)]
|
||||
(if-let [v (first views)]
|
||||
(do
|
||||
(when-not view-entity (set-view-entity! v))
|
||||
@@ -1671,7 +1686,7 @@
|
||||
(p/let [new-view (create-view! view-parent view-identity)]
|
||||
(set-view-entity! new-view)
|
||||
(set-views! (concat views [new-view])))))))
|
||||
[])
|
||||
[view-entity views])
|
||||
(view-container view-entity (assoc option
|
||||
:views views
|
||||
:set-views! set-views!
|
||||
|
||||
@@ -15,25 +15,33 @@
|
||||
#_{:clj-kondo/ignore [:discouraged-var]}
|
||||
(defn use-memo
|
||||
[f deps & {:keys [equal-fn]}]
|
||||
(rum/use-memo f #js[(memo-deps equal-fn deps)]))
|
||||
(rum/use-memo f (if (empty? deps)
|
||||
deps
|
||||
#js[(memo-deps equal-fn deps)])))
|
||||
|
||||
#_{:clj-kondo/ignore [:discouraged-var]}
|
||||
(defn use-effect!
|
||||
"setup-fn will be invoked every render of component when no deps arg provided"
|
||||
([setup-fn] (rum/use-effect! setup-fn))
|
||||
([setup-fn deps & {:keys [equal-fn]}]
|
||||
(rum/use-effect! setup-fn #js[(memo-deps equal-fn deps)])))
|
||||
(rum/use-effect! setup-fn (if (empty? deps)
|
||||
deps
|
||||
#js[(memo-deps equal-fn deps)]))))
|
||||
|
||||
#_{:clj-kondo/ignore [:discouraged-var]}
|
||||
(defn use-layout-effect!
|
||||
([setup-fn] (rum/use-layout-effect! setup-fn))
|
||||
([setup-fn deps & {:keys [equal-fn]}]
|
||||
(rum/use-layout-effect! setup-fn #js[(memo-deps equal-fn deps)])))
|
||||
(rum/use-layout-effect! setup-fn (if (empty? deps)
|
||||
deps
|
||||
#js[(memo-deps equal-fn deps)]))))
|
||||
|
||||
#_{:clj-kondo/ignore [:discouraged-var]}
|
||||
(defn use-callback
|
||||
[callback deps & {:keys [equal-fn]}]
|
||||
(rum/use-callback callback #js[(memo-deps equal-fn deps)]))
|
||||
(rum/use-callback callback (if (empty? deps)
|
||||
deps
|
||||
#js[(memo-deps equal-fn deps)])))
|
||||
|
||||
;;; unchanged hooks, link to rum/use-xxx directly
|
||||
(def use-ref rum/use-ref)
|
||||
|
||||
Reference in New Issue
Block a user