Prevent dublicated empty labels of the same color

This commit is contained in:
Maxime Quandalle 2015-10-14 23:40:00 +02:00
parent ab761f1186
commit 43de3b8a01
2 changed files with 15 additions and 6 deletions

View file

@ -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();
},
});

View file

@ -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 ||