diff options
author | Lauri Ojansivu <x@xet7.org> | 2018-09-16 00:10:40 +0300 |
---|---|---|
committer | Lauri Ojansivu <x@xet7.org> | 2018-09-16 00:10:40 +0300 |
commit | 6673b79738720651f186039808d4e22ef14e4c3c (patch) | |
tree | 464eb186f382f14b93c9c9ca7b21a14851746770 /models/checklistItems.js | |
parent | 053757f135b54241b4899a83cd3bb749b1e81bc9 (diff) | |
parent | 36c04edb9f7cf16fb450b76598c4957968d4674b (diff) | |
download | wekan-6673b79738720651f186039808d4e22ef14e4c3c.tar.gz wekan-6673b79738720651f186039808d4e22ef14e4c3c.tar.bz2 wekan-6673b79738720651f186039808d4e22ef14e4c3c.zip |
Merge branch 'feature-rules' of https://github.com/Angtrim/wekan into Angtrim-feature-rules
Diffstat (limited to 'models/checklistItems.js')
-rw-r--r-- | models/checklistItems.js | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/models/checklistItems.js b/models/checklistItems.js index e075eda2..e24f0cbd 100644 --- a/models/checklistItems.js +++ b/models/checklistItems.js @@ -44,6 +44,12 @@ ChecklistItems.mutations({ setTitle(title) { return { $set: { title } }; }, + check(){ + return { $set: { isFinished: true } }; + }, + uncheck(){ + return { $set: { isFinished: false } }; + }, toggleItem() { return { $set: { isFinished: !this.isFinished } }; }, @@ -70,21 +76,102 @@ function itemCreation(userId, doc) { boardId, checklistId: doc.checklistId, checklistItemId: doc._id, + checklistItemName:doc.title }); } function itemRemover(userId, doc) { + const card = Cards.findOne(doc.cardId); + const boardId = card.boardId; + Activities.insert({ + userId, + activityType: 'removedChecklistItem', + cardId: doc.cardId, + boardId, + checklistId: doc.checklistId, + checklistItemId: doc._id, + checklistItemName:doc.title + }); Activities.remove({ checklistItemId: doc._id, }); } +function publishCheckActivity(userId,doc){ + const card = Cards.findOne(doc.cardId); + const boardId = card.boardId; + let activityType; + if(doc.isFinished){ + activityType = "checkedItem"; + }else{ + activityType = "uncheckedItem"; + } + let act = { + userId, + activityType: activityType, + cardId: doc.cardId, + boardId, + checklistId: doc.checklistId, + checklistItemId: doc._id, + checklistItemName:doc.title + } + console.log(act); + Activities.insert(act); +} + +function publishChekListCompleted(userId,doc,fieldNames,modifier){ + const card = Cards.findOne(doc.cardId); + const boardId = card.boardId; + const checklistId = doc.checklistId; + const checkList = Checklists.findOne({_id:checklistId}); + if(checkList.isFinished()){ + let act = { + userId, + activityType: "checklistCompleted", + cardId: doc.cardId, + boardId, + checklistId: doc.checklistId, + checklistName:doc.title + } + Activities.insert(act); + } +} + +function publishChekListUncompleted(userId,doc,fieldNames,modifier){ + const card = Cards.findOne(doc.cardId); + const boardId = card.boardId; + const checklistId = doc.checklistId; + const checkList = Checklists.findOne({_id:checklistId}); + if(checkList.isFinished()){ + let act = { + userId, + activityType: "checklistUncompleted", + cardId: doc.cardId, + boardId, + checklistId: doc.checklistId, + checklistName:doc.title + } + Activities.insert(act); + } +} + // Activities if (Meteor.isServer) { Meteor.startup(() => { ChecklistItems._collection._ensureIndex({ checklistId: 1 }); }); + ChecklistItems.after.update((userId, doc, fieldNames, modifier) => { + publishCheckActivity(userId,doc); + publishChekListCompleted(userId,doc,fieldNames,modifier) + }); + + ChecklistItems.before.update((userId, doc, fieldNames, modifier) => { + publishChekListUncompleted(userId,doc,fieldNames,modifier) + }); + + + ChecklistItems.after.insert((userId, doc) => { itemCreation(userId, doc); }); |