From 0a53ee87b94232608b5131f47dd77d2fa4bbc5ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Manelli?= Date: Fri, 22 Feb 2019 22:59:19 +0100 Subject: Add first draft of data model and user interface. No actions. --- models/lists.js | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'models/lists.js') diff --git a/models/lists.js b/models/lists.js index 54e7d037..e0040752 100644 --- a/models/lists.js +++ b/models/lists.js @@ -107,6 +107,13 @@ Lists.attachSchema(new SimpleSchema({ 'saddlebrown', 'paleturquoise', 'mistyrose', 'indigo', ], }, + type: { + /** + * The type of list + */ + type: String, + defaultValue: 'list', + }, })); Lists.allow({ @@ -169,6 +176,10 @@ Lists.helpers({ return this.color; return ''; }, + + isTemplateList() { + return this.type === 'template-list'; + }, }); Lists.mutations({ -- cgit v1.2.3-1-g7c22 From cdf070189e11205eecd11641226ae62964cc03e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Manelli?= Date: Sat, 23 Feb 2019 01:40:11 +0100 Subject: Remove links from templates board for the moment Insert the correct template type in templates board Allow independant lists in templates board Add some helpers --- models/lists.js | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'models/lists.js') diff --git a/models/lists.js b/models/lists.js index e0040752..a0b882bc 100644 --- a/models/lists.js +++ b/models/lists.js @@ -27,6 +27,13 @@ Lists.attachSchema(new SimpleSchema({ */ type: String, }, + swimlaneId: { + /** + * the swimalen associated to this list. Used for templates + */ + type: String, + defaultValue: '', + }, createdAt: { /** * creation date -- cgit v1.2.3-1-g7c22 From 7a6afb8aea2c3398ec0fe34d664398bd94cac90a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Manelli?= Date: Sat, 23 Feb 2019 15:32:44 +0100 Subject: Add template search in Add Card menu Archive all cards in list when list is archived Remove default board in link popup Only list non-template boards in card link and search --- models/lists.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'models/lists.js') diff --git a/models/lists.js b/models/lists.js index a0b882bc..236432cc 100644 --- a/models/lists.js +++ b/models/lists.js @@ -195,10 +195,23 @@ Lists.mutations({ }, archive() { + Cards.find({ + listId: this._id, + archived: false, + }).forEach((card) => { + return card.archive(); + }); return { $set: { archived: true } }; }, restore() { + cardsToRestore = Cards.find({ + listId: this._id, + archived: true, + }); + cardsToRestore.forEach((card) => { + card.restore(); + }); return { $set: { archived: false } }; }, -- cgit v1.2.3-1-g7c22 From f888cfd565b197903c24a07221f6a6a44e1b6223 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Manelli?= Date: Sat, 23 Feb 2019 20:41:36 +0100 Subject: Allow list creation from template --- models/lists.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'models/lists.js') diff --git a/models/lists.js b/models/lists.js index 236432cc..e2ded36e 100644 --- a/models/lists.js +++ b/models/lists.js @@ -137,6 +137,24 @@ Lists.allow({ }); Lists.helpers({ + copy() { + const oldId = this._id; + this._id = null; + const _id = Lists.insert(this); + + // Copy all cards in list + Cards.find({ + listId: oldId, + archived: false, + }).forEach((card) => { + card.type = 'cardType-card'; + card.listId = _id; + card.boardId = this.boardId; + card.swimlaneId = this.swimlaneId; + card.copy(); + }); + }, + cards(swimlaneId) { const selector = { listId: this._id, -- cgit v1.2.3-1-g7c22 From 60be4df76e02afdf4dd62f8e03505d55c0ed119e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Manelli?= Date: Sat, 23 Feb 2019 23:07:54 +0100 Subject: Allow swimlane creation from template Mix lists with same name to avoid duplicates --- models/lists.js | 36 +++++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 15 deletions(-) (limited to 'models/lists.js') diff --git a/models/lists.js b/models/lists.js index e2ded36e..76708ffd 100644 --- a/models/lists.js +++ b/models/lists.js @@ -139,8 +139,17 @@ Lists.allow({ Lists.helpers({ copy() { const oldId = this._id; - this._id = null; - const _id = Lists.insert(this); + let _id = null; + existingListWithSameName = Lists.findOne({ + boardId: this.boardId, + title: this.title, + }); + if (existingListWithSameName) { + _id = existingListWithSameName._id; + } else { + this._id = null; + _id = Lists.insert(this); + } // Copy all cards in list Cards.find({ @@ -213,23 +222,20 @@ Lists.mutations({ }, archive() { - Cards.find({ - listId: this._id, - archived: false, - }).forEach((card) => { - return card.archive(); - }); + if (this.isTemplateList()) { + this.cards().forEach((card) => { + return card.archive(); + }); + } return { $set: { archived: true } }; }, restore() { - cardsToRestore = Cards.find({ - listId: this._id, - archived: true, - }); - cardsToRestore.forEach((card) => { - card.restore(); - }); + if (this.isTemplateList()) { + this.allCards().forEach((card) => { + return card.restore(); + }); + } return { $set: { archived: false } }; }, -- cgit v1.2.3-1-g7c22 From eb62c9ce6ad0fa0d5de7889ec087db8cdc579339 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Manelli?= Date: Sun, 24 Feb 2019 00:13:35 +0100 Subject: Fix lint errors --- models/lists.js | 50 +++++++++++++++++++++++++------------------------- 1 file changed, 25 insertions(+), 25 deletions(-) (limited to 'models/lists.js') diff --git a/models/lists.js b/models/lists.js index 76708ffd..453e0be1 100644 --- a/models/lists.js +++ b/models/lists.js @@ -138,30 +138,30 @@ Lists.allow({ Lists.helpers({ copy() { - const oldId = this._id; - let _id = null; - existingListWithSameName = Lists.findOne({ - boardId: this.boardId, - title: this.title, - }); - if (existingListWithSameName) { - _id = existingListWithSameName._id; - } else { - this._id = null; - _id = Lists.insert(this); - } + const oldId = this._id; + let _id = null; + existingListWithSameName = Lists.findOne({ + boardId: this.boardId, + title: this.title, + }); + if (existingListWithSameName) { + _id = existingListWithSameName._id; + } else { + this._id = null; + _id = Lists.insert(this); + } - // Copy all cards in list - Cards.find({ - listId: oldId, - archived: false, - }).forEach((card) => { - card.type = 'cardType-card'; - card.listId = _id; - card.boardId = this.boardId; - card.swimlaneId = this.swimlaneId; - card.copy(); - }); + // Copy all cards in list + Cards.find({ + listId: oldId, + archived: false, + }).forEach((card) => { + card.type = 'cardType-card'; + card.listId = _id; + card.boardId = this.boardId; + card.swimlaneId = this.swimlaneId; + card.copy(); + }); }, cards(swimlaneId) { @@ -224,7 +224,7 @@ Lists.mutations({ archive() { if (this.isTemplateList()) { this.cards().forEach((card) => { - return card.archive(); + return card.archive(); }); } return { $set: { archived: true } }; @@ -233,7 +233,7 @@ Lists.mutations({ restore() { if (this.isTemplateList()) { this.allCards().forEach((card) => { - return card.restore(); + return card.restore(); }); } return { $set: { archived: false } }; -- cgit v1.2.3-1-g7c22 From 775476f97c1dda92e856ca4650e6003ea1487d2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Manelli?= Date: Sun, 24 Feb 2019 11:54:52 +0100 Subject: Fix miniscreen render --- models/lists.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'models/lists.js') diff --git a/models/lists.js b/models/lists.js index 453e0be1..bf2430ee 100644 --- a/models/lists.js +++ b/models/lists.js @@ -29,7 +29,7 @@ Lists.attachSchema(new SimpleSchema({ }, swimlaneId: { /** - * the swimalen associated to this list. Used for templates + * the swimlane associated to this list. Used for templates */ type: String, defaultValue: '', @@ -137,7 +137,7 @@ Lists.allow({ }); Lists.helpers({ - copy() { + copy(swimlaneId) { const oldId = this._id; let _id = null; existingListWithSameName = Lists.findOne({ @@ -159,7 +159,7 @@ Lists.helpers({ card.type = 'cardType-card'; card.listId = _id; card.boardId = this.boardId; - card.swimlaneId = this.swimlaneId; + card.swimlaneId = swimlaneId; card.copy(); }); }, -- cgit v1.2.3-1-g7c22 From dc7286a0ef8111c0855129911492588ba8a384df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Manelli?= Date: Mon, 25 Feb 2019 22:48:25 +0100 Subject: Fix list view issues. Allow creation of boards from templates --- models/lists.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'models/lists.js') diff --git a/models/lists.js b/models/lists.js index bf2430ee..d76c961c 100644 --- a/models/lists.js +++ b/models/lists.js @@ -139,20 +139,24 @@ Lists.allow({ Lists.helpers({ copy(swimlaneId) { const oldId = this._id; + const oldSwimlaneId = this.swimlaneId || null; let _id = null; existingListWithSameName = Lists.findOne({ boardId: this.boardId, title: this.title, + archived: false, }); if (existingListWithSameName) { _id = existingListWithSameName._id; } else { - this._id = null; + delete this._id; + delete this.swimlaneId; _id = Lists.insert(this); } // Copy all cards in list Cards.find({ + swimlaneId: oldSwimlaneId, listId: oldId, archived: false, }).forEach((card) => { -- cgit v1.2.3-1-g7c22