From 4ac6a507cdd3e7a4610c8961e0a9f76f945a5e6d Mon Sep 17 00:00:00 2001 From: Nicu Tofan Date: Sun, 24 Jun 2018 00:21:23 +0300 Subject: Get rid of old implementation for substacks --- models/activities.js | 2 +- models/cards.js | 6 ++ models/export.js | 2 +- models/subtasks.js | 167 --------------------------------------------------- 4 files changed, 8 insertions(+), 169 deletions(-) delete mode 100644 models/subtasks.js (limited to 'models') diff --git a/models/activities.js b/models/activities.js index 1ff0a299..5b54759c 100644 --- a/models/activities.js +++ b/models/activities.js @@ -45,7 +45,7 @@ Activities.helpers({ return ChecklistItems.findOne(this.checklistItemId); }, subtasks() { - return Subtasks.findOne(this.subtaskId); + return Cards.findOne(this.subtaskId); }, customField() { return CustomFields.findOne(this.customFieldId); diff --git a/models/cards.js b/models/cards.js index ca0e16be..4ec3ea7c 100644 --- a/models/cards.js +++ b/models/cards.js @@ -127,6 +127,12 @@ Cards.attachSchema(new SimpleSchema({ type: Number, decimal: true, }, + subtaskSort: { + type: Number, + decimal: true, + defaultValue: -1, + optional: true, + }, })); Cards.allow({ diff --git a/models/export.js b/models/export.js index 778633f9..8c4c29d4 100644 --- a/models/export.js +++ b/models/export.js @@ -62,7 +62,7 @@ class Exporter { 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()); + result.subtaskItems.push(...Cards.find({ parentid: 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 deleted file mode 100644 index 3f8b932c..00000000 --- a/models/subtasks.js +++ /dev/null @@ -1,167 +0,0 @@ -Subtasks = new Mongo.Collection('subtasks'); - -Subtasks.attachSchema(new SimpleSchema({ - title: { - type: String, - }, - startAt: { // this is a predicted time - type: Date, - optional: true, - }, - endAt: { // this is a predicted time - type: Date, - optional: true, - }, - finishedAt: { // The date & time when it is marked as being done - type: Date, - optional: true, - }, - createdAt: { - type: Date, - denyUpdate: false, - autoValue() { // eslint-disable-line consistent-return - if (this.isInsert) { - return new Date(); - } else { - this.unset(); - } - }, - }, - sort: { - type: Number, - decimal: true, - }, - isFinished: { - type: Boolean, - defaultValue: false, - }, - cardId: { - type: String, - }, -})); - -Subtasks.helpers({ - // ... -}); - -Subtasks.allow({ - insert(userId, doc) { - return allowIsBoardMemberByCard(userId, Cards.findOne(doc.cardId)); - }, - update(userId, doc) { - return allowIsBoardMemberByCard(userId, Cards.findOne(doc.cardId)); - }, - remove(userId, doc) { - return allowIsBoardMemberByCard(userId, Cards.findOne(doc.cardId)); - }, - fetch: ['userId', 'cardId'], -}); - -Subtasks.before.insert((userId, doc) => { - doc.createdAt = new Date(); - if (!doc.userId) { - doc.userId = userId; - } -}); - -// Mutations -Subtasks.mutations({ - setTitle(title) { - return { $set: { title } }; - }, - toggleItem() { - return { $set: { isFinished: !this.isFinished } }; - }, - move(sortIndex) { - const mutatedFields = { - sort: sortIndex, - }; - - return {$set: mutatedFields}; - }, -}); - -// Activities helper -function itemCreation(userId, doc) { - const card = Cards.findOne(doc.cardId); - const boardId = card.boardId; - Activities.insert({ - userId, - activityType: 'addSubtaskItem', - cardId: doc.cardId, - boardId, - subtaskItemId: doc._id, - }); -} - -function itemRemover(userId, doc) { - Activities.remove({ - subtaskItemId: doc._id, - }); -} - -// Activities -if (Meteor.isServer) { - Meteor.startup(() => { - Subtasks._collection._ensureIndex({ cardId: 1 }); - }); - - Subtasks.after.insert((userId, doc) => { - itemCreation(userId, doc); - }); - - Subtasks.after.remove((userId, doc) => { - itemRemover(userId, doc); - }); -} - -// APIs -if (Meteor.isServer) { - JsonRoutes.add('GET', '/api/boards/:boardId/cards/:cardId/subtasks/:itemId', function (req, res) { - Authentication.checkUserId( req.userId); - const paramItemId = req.params.itemId; - const subtaskItem = Subtasks.findOne({ _id: paramItemId }); - if (subtaskItem) { - JsonRoutes.sendResult(res, { - code: 200, - data: subtaskItem, - }); - } else { - JsonRoutes.sendResult(res, { - code: 500, - }); - } - }); - - JsonRoutes.add('PUT', '/api/boards/:boardId/cards/:cardId/subtasks/:itemId', function (req, res) { - Authentication.checkUserId( req.userId); - - const paramItemId = req.params.itemId; - - if (req.body.hasOwnProperty('isFinished')) { - Subtasks.direct.update({_id: paramItemId}, {$set: {isFinished: req.body.isFinished}}); - } - if (req.body.hasOwnProperty('title')) { - Subtasks.direct.update({_id: paramItemId}, {$set: {title: req.body.title}}); - } - - JsonRoutes.sendResult(res, { - code: 200, - data: { - _id: paramItemId, - }, - }); - }); - - JsonRoutes.add('DELETE', '/api/boards/:boardId/cards/:cardId/subtasks/:itemId', function (req, res) { - Authentication.checkUserId( req.userId); - const paramItemId = req.params.itemId; - Subtasks.direct.remove({ _id: paramItemId }); - JsonRoutes.sendResult(res, { - code: 200, - data: { - _id: paramItemId, - }, - }); - }); -} -- cgit v1.2.3-1-g7c22