From 4414582a35e9c587fb4cb670cad13e211c1097b5 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Sun, 5 Mar 2017 12:56:07 -0700 Subject: Close #873 by importing checklists from Trello --- models/import.js | 42 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) (limited to 'models') diff --git a/models/import.js b/models/import.js index 86ef75b3..3385dd7d 100644 --- a/models/import.js +++ b/models/import.js @@ -25,6 +25,8 @@ class TrelloCreator { this.labels = {}; // Map of lists Trello ID => Wekan ID this.lists = {}; + // Map of cards Trello ID => Wekan ID + this.cards = {}; // The comments, indexed by Trello card id (to map when importing cards) this.comments = {}; // the members, indexed by Trello member id => Wekan user ID @@ -119,6 +121,18 @@ class TrelloCreator { })]); } + checkChecklists(trelloChecklists) { + check(trelloChecklists, [Match.ObjectIncluding({ + idBoard: String, + idCard: String, + name: String, + checkItems: [Match.ObjectIncluding({ + state: String, + name: String + })] + })]); + } + // You must call parseActions before calling this one. createBoardAndLabels(trelloBoard) { const boardToCreate = { @@ -241,6 +255,8 @@ class TrelloCreator { } // insert card const cardId = Cards.direct.insert(cardToCreate); + // keep track of Trello id => WeKan id + this.cards[card.id] = cardId; // log activity Activities.direct.insert({ activityType: 'importCard', @@ -280,7 +296,7 @@ class TrelloCreator { createdAt: this._now(commentToCreate.createdAt), // we attribute the addComment (not the import) // to the original author - it is needed by some UI elements. - userId: commentToCreate.userId, + userId: this._user(commentToCreate.userId), }); }); } @@ -365,6 +381,28 @@ class TrelloCreator { }); } + createChecklists(trelloChecklists) { + trelloChecklists.forEach((checklist) => { + // Create the checklist + const checklistToCreate = { + cardId: this.cards[checklist.idCard], + title: checklist.name, + createdAt: this._now() + }; + const checklistId = Checklists.direct.insert(checklistToCreate); + // Now add the items to the checklist + const itemsToCreate = []; + checklist.checkItems.forEach((item) => { + itemsToCreate.push({ + _id: checklistId + itemsToCreate.length, + title: item.name, + isFinished: item.state == 'complete' + }); + }); + Checklists.direct.update(checklistId, {$set: {items: itemsToCreate}}); + }); + } + getAdmin(trelloMemberType) { return trelloMemberType === 'admin'; } @@ -446,6 +484,7 @@ Meteor.methods({ trelloCreator.checkLabels(trelloBoard.labels); trelloCreator.checkLists(trelloBoard.lists); trelloCreator.checkCards(trelloBoard.cards); + trelloCreator.checkChecklists(trelloBoard.checklists); } catch (e) { throw new Meteor.Error('error-json-schema'); } @@ -458,6 +497,7 @@ Meteor.methods({ const boardId = trelloCreator.createBoardAndLabels(trelloBoard); trelloCreator.createLists(trelloBoard.lists, boardId); trelloCreator.createCards(trelloBoard.cards, boardId); + trelloCreator.createChecklists(trelloBoard.checklists); // XXX add members return boardId; }, -- cgit v1.2.3-1-g7c22 From bc9e093e07e81c75bc94277b7dd3aff9936e3c28 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Sun, 5 Mar 2017 13:08:53 -0700 Subject: Fix up some linting issues --- models/import.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'models') diff --git a/models/import.js b/models/import.js index 3385dd7d..41c2204b 100644 --- a/models/import.js +++ b/models/import.js @@ -128,8 +128,8 @@ class TrelloCreator { name: String, checkItems: [Match.ObjectIncluding({ state: String, - name: String - })] + name: String, + })], })]); } @@ -387,7 +387,7 @@ class TrelloCreator { const checklistToCreate = { cardId: this.cards[checklist.idCard], title: checklist.name, - createdAt: this._now() + createdAt: this._now(), }; const checklistId = Checklists.direct.insert(checklistToCreate); // Now add the items to the checklist @@ -396,7 +396,7 @@ class TrelloCreator { itemsToCreate.push({ _id: checklistId + itemsToCreate.length, title: item.name, - isFinished: item.state == 'complete' + isFinished: item.state === 'complete', }); }); Checklists.direct.update(checklistId, {$set: {items: itemsToCreate}}); -- cgit v1.2.3-1-g7c22