|
|
@@ -178,21 +178,23 @@
|
|
|
:add-property! (fn []
|
|
|
(state/pub-event! [:editor/new-property {:block class
|
|
|
:class-schema? true}]))
|
|
|
- :on-delete-rows (fn [table selected-rows]
|
|
|
- (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)
|
|
|
- (outliner-op/delete-blocks! blocks nil))
|
|
|
- (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})))))))}))))
|
|
|
+ ;; Objects of built-in classes must not be deleted e.g. Tag, Property and Root
|
|
|
+ :on-delete-rows (when-not (:logseq.property/built-in? class)
|
|
|
+ (fn [table selected-rows]
|
|
|
+ (let [pages (->> selected-rows (filter ldb/page?) (remove :logseq.property/built-in?))
|
|
|
+ blocks (->> selected-rows (remove ldb/page?) (remove :logseq.property/built-in?))]
|
|
|
+ (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)
|
|
|
+ (outliner-op/delete-blocks! blocks nil))
|
|
|
+ (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}))))))))}))))
|
|
|
|
|
|
(rum/defcs class-objects < rum/reactive db-mixins/query mixins/container-id
|
|
|
[state class {:keys [current-page? sidebar?]}]
|
|
|
@@ -250,25 +252,25 @@
|
|
|
:title-key :views.table/property-nodes
|
|
|
:columns columns
|
|
|
:add-new-object! #(add-new-property-object! property set-data!)
|
|
|
- ;; TODO: Add support for adding column
|
|
|
+ ;; TODO: Add support for adding column
|
|
|
:show-add-property? false
|
|
|
- :on-delete-rows (when-not (contains? #{:logseq.property/built-in? :logseq.property/parent}
|
|
|
- (:db/ident property))
|
|
|
- (fn [table selected-rows]
|
|
|
- (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)
|
|
|
- (outliner-op/delete-blocks! blocks nil))
|
|
|
- (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}))))))))}))))
|
|
|
+ ;; Relationships with built-in properties must not be deleted e.g. built-in? or parent
|
|
|
+ :on-delete-rows (when-not (:logseq.property/built-in? property)
|
|
|
+ (fn [table selected-rows]
|
|
|
+ (let [pages (->> selected-rows (filter ldb/page?) (remove :logseq.property/built-in?))
|
|
|
+ blocks (->> selected-rows (remove ldb/page?) (remove :logseq.property/built-in?))]
|
|
|
+ (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)
|
|
|
+ (outliner-op/delete-blocks! blocks nil))
|
|
|
+ (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}))))))))}))))
|
|
|
|
|
|
;; Show all nodes containing the given property
|
|
|
(rum/defcs property-related-objects < rum/reactive db-mixins/query mixins/container-id
|