summaryrefslogtreecommitdiffstats
path: root/models
diff options
context:
space:
mode:
Diffstat (limited to 'models')
-rw-r--r--models/cards.js2
-rw-r--r--models/lists.js47
2 files changed, 43 insertions, 6 deletions
diff --git a/models/cards.js b/models/cards.js
index 7d66bf8b..5b752ec3 100644
--- a/models/cards.js
+++ b/models/cards.js
@@ -182,7 +182,7 @@ Cards.helpers({
canBeRestored() {
const list = Lists.findOne({_id: this.listId});
- if(list.wipLimit.enabled && list.wipLimit.value == list.cards().count()){
+ if(list.getWipLimit() && list.getWipLimit('enabled') && list.getWipLimit('value') === list.cards().count()){
return false;
}
return true;
diff --git a/models/lists.js b/models/lists.js
index 442b9ee1..877b3d83 100644
--- a/models/lists.js
+++ b/models/lists.js
@@ -46,16 +46,24 @@ Lists.attachSchema(new SimpleSchema({
type: Object,
optional: true,
},
- "wipLimit.value": {
- type: SimpleSchema.Integer,
+ 'wipLimit.value': {
+ type: Number,
+ decimal: false,
+ autoValue() {
+ if(this.isInsert){
+ return 0;
+ }
+ return this.value;
+ },
optional: true,
},
- "wipLimit.enabled":{
+ 'wipLimit.enabled':{
type: Boolean,
autoValue() {
if(this.isInsert){
return false;
}
+ return this.value;
},
optional: true,
},
@@ -89,6 +97,17 @@ Lists.helpers({
board() {
return Boards.findOne(this.boardId);
},
+
+ getWipLimit(option){
+ const list = Lists.findOne({ _id: this._id });
+ if(!list.wipLimit) { // Necessary check to avoid exceptions for the case where the doc doesn't have the wipLimit field yet set
+ return 0;
+ } else if(!option) {
+ return list.wipLimit;
+ } else {
+ return list.wipLimit[option] ? list.wipLimit[option] : 0; // Necessary check to avoid exceptions for the case where the doc doesn't have the wipLimit field yet set
+ }
+ },
});
Lists.mutations({
@@ -105,11 +124,29 @@ Lists.mutations({
},
toggleWipLimit(toggle) {
- return { $set: { "wipLimit.enabled": toggle } };
+ return { $set: { 'wipLimit.enabled': toggle } };
},
setWipLimit(limit) {
- return { $set: { "wipLimit.value": limit } };
+ return { $set: { 'wipLimit.value': limit } };
+ },
+});
+
+Meteor.methods({
+ applyWipLimit(listId, limit){
+ check(listId, String);
+ check(limit, Number);
+ Lists.findOne({ _id: listId }).setWipLimit(limit);
+ },
+
+ enableWipLimit(listId) {
+ check(listId, String);
+ const list = Lists.findOne({ _id: listId });
+ if( list.getWipLimit() ){ // Necessary check to avoid exceptions for the case where the doc doesn't have the wipLimit field yet set
+ list.toggleWipLimit(!list.wipLimit.enabled);
+ } else {
+ list.toggleWipLimit(true); // First time toggle is always to 'true' because default is 'false'
+ }
},
});