feat: select to delete rows from query result

This commit is contained in:
Tienson Qin
2024-12-26 04:27:16 +08:00
parent b30bc6d1df
commit f72ec588b6
4 changed files with 47 additions and 30 deletions

View File

@@ -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

View File

@@ -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)))))))})]))

View File

@@ -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