mirror of
https://github.com/logseq/logseq.git
synced 2026-04-29 08:26:40 +00:00
feat: select to delete rows from query result
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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)))))))})]))
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user