From d59583915cca24d53a11251c54ca7caf6b5edb4e Mon Sep 17 00:00:00 2001 From: Nicu Tofan Date: Mon, 18 Jun 2018 23:25:56 +0300 Subject: Initial implementation for subtasks --- models/activities.js | 3 +++ models/cards.js | 24 ++++++++++++++++++++++++ models/export.js | 2 ++ models/subtasks.js | 8 +------- 4 files changed, 30 insertions(+), 7 deletions(-) (limited to 'models') diff --git a/models/activities.js b/models/activities.js index f64b53f8..1ff0a299 100644 --- a/models/activities.js +++ b/models/activities.js @@ -44,6 +44,9 @@ Activities.helpers({ checklistItem() { return ChecklistItems.findOne(this.checklistItemId); }, + subtasks() { + return Subtasks.findOne(this.subtaskId); + }, customField() { return CustomFields.findOne(this.customFieldId); }, diff --git a/models/cards.js b/models/cards.js index 00ec14c2..6edffb79 100644 --- a/models/cards.js +++ b/models/cards.js @@ -215,6 +215,27 @@ Cards.helpers({ return this.checklistItemCount() !== 0; }, + subtasks() { + return Subtasks.find({cardId: this._id}, {sort: { sort: 1 } }); + }, + + subtasksCount() { + return Subtasks.find({cardId: this._id}).count(); + }, + + subtasksFinishedCount() { + return Subtasks.find({cardId: this._id, isFinished: true}).count(); + }, + + subtasksFinished() { + const finishCount = this.subtasksFinishedCount(); + return finishCount > 0 && this.subtasksCount() === finishCount; + }, + + hasSubtasks() { + return this.subtasksCount() !== 0; + }, + customFieldIndex(customFieldId) { return _.pluck(this.customFields, '_id').indexOf(customFieldId); }, @@ -513,6 +534,9 @@ function cardRemover(userId, doc) { Checklists.remove({ cardId: doc._id, }); + Subtasks.remove({ + cardId: doc._id, + }); CardComments.remove({ cardId: doc._id, }); diff --git a/models/export.js b/models/export.js index aff66801..778633f9 100644 --- a/models/export.js +++ b/models/export.js @@ -58,9 +58,11 @@ class Exporter { result.activities = Activities.find(byBoard, noBoardId).fetch(); result.checklists = []; result.checklistItems = []; + result.subtaskItems = []; result.cards.forEach((card) => { result.checklists.push(...Checklists.find({ cardId: card._id }).fetch()); result.checklistItems.push(...ChecklistItems.find({ cardId: card._id }).fetch()); + result.subtaskItems.push(...Subtasks.find({ cardId: card._id }).fetch()); }); // [Old] for attachments we only export IDs and absolute url to original doc diff --git a/models/subtasks.js b/models/subtasks.js index e842d11d..3f8b932c 100644 --- a/models/subtasks.js +++ b/models/subtasks.js @@ -41,13 +41,7 @@ Subtasks.attachSchema(new SimpleSchema({ })); Subtasks.helpers({ - isFinished() { - return 0 !== this.itemCount() && this.itemCount() === this.finishedCount(); - }, - itemIndex(itemId) { - const items = self.findOne({_id : this._id}).items; - return _.pluck(items, '_id').indexOf(itemId); - }, + // ... }); Subtasks.allow({ -- cgit v1.2.3-1-g7c22