summaryrefslogtreecommitdiffstats
path: root/models/swimlanes.js
diff options
context:
space:
mode:
authorAndrés Manelli <andresmanelli@gmail.com>2019-02-23 23:07:54 +0100
committerAndrés Manelli <andresmanelli@gmail.com>2019-02-24 00:05:00 +0100
commit60be4df76e02afdf4dd62f8e03505d55c0ed119e (patch)
tree73d22fb7d30eb738ffd876762f1a20f28ce623a2 /models/swimlanes.js
parentf888cfd565b197903c24a07221f6a6a44e1b6223 (diff)
downloadwekan-60be4df76e02afdf4dd62f8e03505d55c0ed119e.tar.gz
wekan-60be4df76e02afdf4dd62f8e03505d55c0ed119e.tar.bz2
wekan-60be4df76e02afdf4dd62f8e03505d55c0ed119e.zip
Allow swimlane creation from template
Mix lists with same name to avoid duplicates
Diffstat (limited to 'models/swimlanes.js')
-rw-r--r--models/swimlanes.js31
1 files changed, 31 insertions, 0 deletions
diff --git a/models/swimlanes.js b/models/swimlanes.js
index be3f617c..205f1498 100644
--- a/models/swimlanes.js
+++ b/models/swimlanes.js
@@ -101,6 +101,23 @@ Swimlanes.allow({
});
Swimlanes.helpers({
+ copy() {
+ const oldId = this._id;
+ this._id = null;
+ const _id = Swimlanes.insert(this);
+
+ // Copy all lists in swimlane
+ Lists.find({
+ swimlaneId: oldId,
+ archived: false,
+ }).forEach((list) => {
+ list.type = 'list';
+ list.swimlaneId = _id;
+ list.boardId = this.boardId;
+ list.copy();
+ });
+ },
+
cards() {
return Cards.find(Filter.mongoSelector({
swimlaneId: this._id,
@@ -115,6 +132,10 @@ Swimlanes.helpers({
}), { sort: ['sort'] });
},
+ allLists() {
+ return Lists.find({ swimlaneId: this._id });
+ },
+
allCards() {
return Cards.find({ swimlaneId: this._id });
},
@@ -159,10 +180,20 @@ Swimlanes.mutations({
},
archive() {
+ if (this.isTemplateSwimlane()) {
+ this.lists().forEach((list) => {
+ return list.archive();
+ });
+ }
return { $set: { archived: true } };
},
restore() {
+ if (this.isTemplateSwimlane()) {
+ this.allLists().forEach((list) => {
+ return list.restore();
+ });
+ }
return { $set: { archived: false } };
},