diff options
-rw-r--r-- | client/components/cards/labels.js | 2 | ||||
-rw-r--r-- | models/boards.js | 19 |
2 files changed, 15 insertions, 6 deletions
diff --git a/client/components/cards/labels.js b/client/components/cards/labels.js index d2ee0140..6a411561 100644 --- a/client/components/cards/labels.js +++ b/client/components/cards/labels.js @@ -69,12 +69,12 @@ Template.formLabel.events({ Template.createLabelPopup.events({ // Create the new label 'submit .create-label'(evt, tpl) { + evt.preventDefault(); const board = Boards.findOne(Session.get('currentBoard')); const name = tpl.$('#labelName').val().trim(); const color = Blaze.getData(tpl.find('.fa-check')).color; board.addLabel(name, color); Popup.back(); - evt.preventDefault(); }, }); diff --git a/models/boards.js b/models/boards.js index 8d2b63e4..fd0212c5 100644 --- a/models/boards.js +++ b/models/boards.js @@ -93,9 +93,7 @@ Boards.helpers({ }, getLabel(name, color) { - return this.labels.find((current) => { - return ((current.name === name) && (current.color === color)); - }); + return _.findWhere(this.labels, { name, color }); }, labelIndex(labelId) { @@ -138,11 +136,22 @@ Boards.mutations({ addLabel(name, color) { const _id = Random.id(6); + + // If an empty label of a given color already exists we don't want to create + // an other one because they would be indistinguishable in the UI (they + // would still have different `_id` but that is not exposed to the user). + if (name === '' && this.getLabel(name, color)) { + return {}; + } return { $push: {labels: { _id, name, color }}}; }, editLabel(labelId, name, color) { const labelIndex = this.labelIndex(labelId); + + if (name === '' && this.getLabel(name, color)) { + return {}; + } return { $set: { [`labels.${labelIndex}.name`]: name, @@ -299,8 +308,8 @@ if (Meteor.isServer) { }); }); - // If the user removes a label from a board, we have to remove references to - // this label in all cards of the board. + // If the user remove one label from a board, we cant to remove reference of + // this label in any card of this board. Boards.after.update((userId, doc, fieldNames, modifier) => { if (!_.contains(fieldNames, 'labels') || !modifier.$pull || |