File tree Expand file tree Collapse file tree 2 files changed +38
-10
lines changed Expand file tree Collapse file tree 2 files changed +38
-10
lines changed Original file line number Diff line number Diff line change 37
37
retract-multiple-values? (and multiple-values? (sequential? value))
38
38
multiple-values-empty? (and (sequential? old-value)
39
39
(contains? (set (map :db/ident old-value)) :logseq.property/empty-placeholder ))
40
- block' (assoc (outliner-core/block-with-updated-at {:db/id (:db/id block)})
41
- property-id value)
42
- block-tx-data (cond-> block'
43
- (and status? (not (ldb/class-instance? (d/entity @conn :logseq.class/Task ) block)))
44
- (assoc :block/tags :logseq.class/Task ))]
45
- [(when multiple-values-empty?
46
- [:db/retract (:db/id block') property-id :logseq.property/empty-placeholder ])
47
- (when retract-multiple-values?
48
- [:db/retract (:db/id block') property-id])
49
- block-tx-data]))))
40
+ update-block-tx (cond-> (outliner-core/block-with-updated-at {:db/id (:db/id block)})
41
+ true
42
+ (assoc property-id value)
43
+ (and status? (or (empty? (:block/tags block)) (ldb/internal-page? block)))
44
+ (assoc :block/tags :logseq.class/Task ))]
45
+ (cond-> []
46
+ multiple-values-empty?
47
+ (conj [:db/retract (:db/id update-block-tx) property-id :logseq.property/empty-placeholder ])
48
+ retract-multiple-values?
49
+ (conj [:db/retract (:db/id update-block-tx) property-id])
50
+ true
51
+ (conj update-block-tx))))))
50
52
51
53
(defn- get-property-value-schema
52
54
" Gets a malli schema to validate the property value for the given property type and builds
Original file line number Diff line number Diff line change 195
195
updated-blocks))
196
196
" Property values are batch set" )))
197
197
198
+ (deftest status-property-setting-classes
199
+ (let [conn (db-test/create-conn-with-blocks
200
+ {:classes {:Project {:build/class-properties [:logseq.task/status ]}}
201
+ :pages-and-blocks
202
+ [{:page {:block/title " page1" }
203
+ :blocks [{:block/title " " }
204
+ {:block/title " project task" :build/tags [:Project ]}]}]})
205
+ page1 (:block/uuid (db-test/find-page-by-title @conn " page1" ))
206
+ [empty-task project]
207
+ (map #(:block/uuid (db-test/find-block-by-content @conn %)) [" " " project task" ])]
208
+
209
+ (outliner-property/batch-set-property! conn [empty-task] :logseq.task/status :logseq.task/status.doing )
210
+ (is (= [:logseq.class/Task ]
211
+ (mapv :db/ident (:block/tags (d/entity @conn [:block/uuid empty-task]))))
212
+ " Adds Task to block when it is not tagged" )
213
+
214
+ (outliner-property/batch-set-property! conn [page1] :logseq.task/status :logseq.task/status.doing )
215
+ (is (= #{:logseq.class/Task :logseq.class/Page }
216
+ (set (map :db/ident (:block/tags (d/entity @conn [:block/uuid page1])))))
217
+ " Adds Task to page without tag" )
218
+
219
+ (outliner-property/batch-set-property! conn [project] :logseq.task/status :logseq.task/status.doing )
220
+ (is (= [:user.class/Project ]
221
+ (mapv :db/ident (:block/tags (d/entity @conn [:block/uuid project]))))
222
+ " Doesn't add Task to block when it is already tagged" )))
223
+
198
224
(deftest batch-remove-property!
199
225
(let [conn (db-test/create-conn-with-blocks
200
226
[{:page {:block/title " page1" }
You can’t perform that action at this time.
0 commit comments