diff --git a/src/main/frontend/components/objects.cljs b/src/main/frontend/components/objects.cljs index 626d617c71..66168c4922 100644 --- a/src/main/frontend/components/objects.cljs +++ b/src/main/frontend/components/objects.cljs @@ -182,6 +182,9 @@ (let [pages (filter ldb/page? selected-rows) blocks (remove ldb/page? selected-rows)] (p/do! + (set-data! (get-class-objects class)) + (when-let [f (get-in table [:data-fns :set-row-selection!])] + (f {})) (ui-outliner-tx/transact! {:outliner-op :delete-blocks} (when (seq blocks) @@ -189,10 +192,7 @@ (let [page-ids (map :db/id pages) tx-data (map (fn [pid] [:db/retract pid :block/tags (:db/id class)]) page-ids)] (when (seq tx-data) - (outliner-op/transact! tx-data {:outliner-op :save-block})))) - (set-data! (get-class-objects class)) - (when-let [f (get-in table [:data-fns :set-row-selection!])] - (f {})))))})))) + (outliner-op/transact! tx-data {:outliner-op :save-block})))))))})))) (rum/defcs class-objects < rum/reactive db-mixins/query mixins/container-id [state class {:keys [current-page? sidebar?]}] @@ -258,6 +258,9 @@ (let [pages (filter ldb/page? selected-rows) blocks (remove ldb/page? selected-rows)] (p/do! + (set-data! (get-property-related-objects (state/get-current-repo) property)) + (when-let [f (get-in table [:data-fns :set-row-selection!])] + (f {})) (ui-outliner-tx/transact! {:outliner-op :delete-blocks} (when (seq blocks) @@ -265,10 +268,7 @@ (let [page-ids (map :db/id pages) tx-data (map (fn [pid] [:db/retract pid (:db/ident property)]) page-ids)] (when (seq tx-data) - (outliner-op/transact! tx-data {:outliner-op :save-block})))) - (set-data! (get-property-related-objects (state/get-current-repo) property)) - (when-let [f (get-in table [:data-fns :set-row-selection!])] - (f {}))))))})))) + (outliner-op/transact! tx-data {:outliner-op :save-block}))))))))})))) ;; Show all nodes containing the given property (rum/defcs property-related-objects < rum/reactive db-mixins/query mixins/container-id diff --git a/src/main/frontend/components/query/view.cljs b/src/main/frontend/components/query/view.cljs index 7018873289..f55cbaf2f5 100644 --- a/src/main/frontend/components/query/view.cljs +++ b/src/main/frontend/components/query/view.cljs @@ -4,7 +4,11 @@ [frontend.db :as db] [logseq.db :as ldb] [rum.core :as rum] - [frontend.mixins :as mixins])) + [frontend.mixins :as mixins] + [promesa.core :as p] + [frontend.modules.outliner.ui :as ui-outliner-tx] + [frontend.modules.outliner.op :as outliner-op] + [frontend.state])) (defn- columns [config result] @@ -41,11 +45,25 @@ [state config view-entity result] (let [*result (::result state) result' (or @*result (init-result result view-entity)) - columns' (columns (assoc config :container-id (::container-id state)) result')] + columns' (columns (assoc config :container-id (::container-id state)) result') + set-data! (fn [data] (reset! *result data))] [:div.query-result.w-full (views/view view-entity {:title-key :views.table/live-query-title :data result' - :set-data! (fn [data] - (when (seq data) (reset! *result data))) - :columns columns'})])) + :set-data! set-data! + :columns columns' + :on-delete-rows (fn [table selected-rows] + (let [pages (filter ldb/page? selected-rows) + blocks (remove ldb/page? selected-rows) + selected (set (map :id selected-rows)) + data' (remove (fn [row] (contains? selected (:id row))) (:data table))] + (p/do! + (set-data! data') + (ui-outliner-tx/transact! + {:outliner-op :delete-blocks} + (when (seq blocks) + (outliner-op/delete-blocks! blocks nil)) + (doseq [page pages] + (when-let [id (:block/uuid page)] + (outliner-op/delete-page! id)))))))})])) diff --git a/src/main/frontend/components/views.cljs b/src/main/frontend/components/views.cljs index 2b4f808dc0..44f638726a 100644 --- a/src/main/frontend/components/views.cljs +++ b/src/main/frontend/components/views.cljs @@ -1278,18 +1278,17 @@ (more-actions columns table) (when add-new-object! (new-record-button table view-entity))]] - (fn [] - [:div.ls-view-body.flex.flex-col.gap-2.grid - (filters-row table) + [:div.ls-view-body.flex.flex-col.gap-2.grid + (filters-row table) - (case display-type - :logseq.property.view/type.list - (list-view (:config option) view-entity (:rows table)) + (case display-type + :logseq.property.view/type.list + (list-view (:config option) view-entity (:rows table)) - :logseq.property.view/type.gallery - (gallery-view (:config option) table view-entity (:rows table) *scroller-ref) + :logseq.property.view/type.gallery + (gallery-view (:config option) table view-entity (:rows table) *scroller-ref) - (table-view table option row-selection add-new-object! *scroller-ref))]) + (table-view table option row-selection add-new-object! *scroller-ref))] {:title-trigger? false})])) (rum/defcs view diff --git a/src/main/frontend/modules/outliner/ui.cljc b/src/main/frontend/modules/outliner/ui.cljc index b1dd689a93..2717c235a1 100644 --- a/src/main/frontend/modules/outliner/ui.cljc +++ b/src/main/frontend/modules/outliner/ui.cljc @@ -1,6 +1,6 @@ (ns frontend.modules.outliner.ui #?(:cljs (:require-macros [frontend.modules.outliner.ui])) - #?(:cljs (:require [frontend.state :as state] + #?(:cljs (:require [frontend.state] [frontend.db.transact] [frontend.db.conn] [logseq.outliner.op] @@ -11,32 +11,32 @@ [opts & body] `(let [test?# frontend.util/node-test?] (let [ops# frontend.modules.outliner.op/*outliner-ops* - editor-info# (state/get-editor-info)] + editor-info# (frontend.state/get-editor-info)] (if ops# (do ~@body) ; nested transact! (binding [frontend.modules.outliner.op/*outliner-ops* (transient [])] ~@body (let [r# (persistent! frontend.modules.outliner.op/*outliner-ops*) - worker# @state/*db-worker] + worker# @frontend.state/*db-worker] ;; (js/console.groupCollapsed "ui/transact!") ;; (prn :ops r#) ;; (js/console.trace) ;; (js/console.groupEnd) (if test?# (when (seq r#) - (logseq.outliner.op/apply-ops! (state/get-current-repo) + (logseq.outliner.op/apply-ops! (frontend.state/get-current-repo) (frontend.db.conn/get-db false) r# - (state/get-date-formatter) + (frontend.state/get-date-formatter) ~opts)) (when (and worker# (seq r#)) - (let [request-id# (state/get-worker-next-request-id) - request# #(.apply-outliner-ops ^Object worker# (state/get-current-repo) + (let [request-id# (frontend.state/get-worker-next-request-id) + request# #(.apply-outliner-ops ^Object worker# (frontend.state/get-current-repo) (logseq.db/write-transit-str r#) (logseq.db/write-transit-str (assoc ~opts :request-id request-id# :editor-info editor-info#))) - response# (state/add-worker-request! request-id# request#)] + response# (frontend.state/add-worker-request! request-id# request#)] response#)))))))))