|
|
|
@ -368,30 +368,36 @@ Cards.allow({ |
|
|
|
|
|
|
|
|
|
Cards.helpers({ |
|
|
|
|
copy(boardId, swimlaneId, listId) { |
|
|
|
|
const oldBoard = Boards.findOne(this.boardId); |
|
|
|
|
const oldBoardLabels = oldBoard.labels; |
|
|
|
|
// Get old label names
|
|
|
|
|
const oldCardLabels = _.pluck( |
|
|
|
|
_.filter(oldBoardLabels, label => { |
|
|
|
|
return _.contains(this.labelIds, label._id); |
|
|
|
|
}), |
|
|
|
|
'name', |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
const newBoard = Boards.findOne(boardId); |
|
|
|
|
const newBoardLabels = newBoard.labels; |
|
|
|
|
const newCardLabels = _.pluck( |
|
|
|
|
_.filter(newBoardLabels, label => { |
|
|
|
|
return _.contains(oldCardLabels, label.name); |
|
|
|
|
}), |
|
|
|
|
'_id', |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
const oldId = this._id; |
|
|
|
|
const oldCard = Cards.findOne(oldId); |
|
|
|
|
|
|
|
|
|
// Copy Custom Fields
|
|
|
|
|
if (oldBoard._id !== boardId) { |
|
|
|
|
// we must only copy the labels and custom fields if the target board
|
|
|
|
|
// differs from the source board
|
|
|
|
|
if (this.boardId !== boardId) { |
|
|
|
|
const oldBoard = Boards.findOne(this.boardId); |
|
|
|
|
const oldBoardLabels = oldBoard.labels; |
|
|
|
|
|
|
|
|
|
// Get old label names
|
|
|
|
|
const oldCardLabels = _.pluck( |
|
|
|
|
_.filter(oldBoardLabels, label => { |
|
|
|
|
return _.contains(this.labelIds, label._id); |
|
|
|
|
}), |
|
|
|
|
'name', |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
const newBoard = Boards.findOne(boardId); |
|
|
|
|
const newBoardLabels = newBoard.labels; |
|
|
|
|
const newCardLabels = _.pluck( |
|
|
|
|
_.filter(newBoardLabels, label => { |
|
|
|
|
return _.contains(oldCardLabels, label.name); |
|
|
|
|
}), |
|
|
|
|
'_id', |
|
|
|
|
); |
|
|
|
|
// now set the new label ids
|
|
|
|
|
delete this.labelIds; |
|
|
|
|
this.labelIds = newCardLabels; |
|
|
|
|
|
|
|
|
|
// Copy Custom Fields
|
|
|
|
|
CustomFields.find({ |
|
|
|
|
_id: { |
|
|
|
|
$in: oldCard.customFields.map(cf => { |
|
|
|
@ -404,8 +410,6 @@ Cards.helpers({ |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
delete this._id; |
|
|
|
|
delete this.labelIds; |
|
|
|
|
this.labelIds = newCardLabels; |
|
|
|
|
this.boardId = boardId; |
|
|
|
|
this.swimlaneId = swimlaneId; |
|
|
|
|
this.listId = listId; |
|
|
|
@ -1298,8 +1302,40 @@ Cards.mutations({ |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
move(boardId, swimlaneId, listId, sort) { |
|
|
|
|
// Copy Custom Fields
|
|
|
|
|
const mutatedFields = { |
|
|
|
|
boardId, |
|
|
|
|
swimlaneId, |
|
|
|
|
listId, |
|
|
|
|
sort, |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
// we must only copy the labels and custom fields if the target board
|
|
|
|
|
// differs from the source board
|
|
|
|
|
if (this.boardId !== boardId) { |
|
|
|
|
// Get label names
|
|
|
|
|
const oldBoard = Boards.findOne(this.boardId); |
|
|
|
|
const oldBoardLabels = oldBoard.labels; |
|
|
|
|
const oldCardLabels = _.pluck( |
|
|
|
|
_.filter(oldBoardLabels, label => { |
|
|
|
|
return _.contains(this.labelIds, label._id); |
|
|
|
|
}), |
|
|
|
|
'name', |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
const newBoard = Boards.findOne(boardId); |
|
|
|
|
const newBoardLabels = newBoard.labels; |
|
|
|
|
const newCardLabelIds = _.pluck( |
|
|
|
|
_.filter(newBoardLabels, label => { |
|
|
|
|
return label.name && _.contains(oldCardLabels, label.name); |
|
|
|
|
}), |
|
|
|
|
'_id', |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
Object.assign(mutatedFields, { |
|
|
|
|
labelIds: newCardLabelIds, |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
// Copy custom fields
|
|
|
|
|
CustomFields.find({ |
|
|
|
|
_id: { |
|
|
|
|
$in: this.customFields.map(cf => { |
|
|
|
@ -1311,33 +1347,6 @@ Cards.mutations({ |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Get label names
|
|
|
|
|
const oldBoard = Boards.findOne(this.boardId); |
|
|
|
|
const oldBoardLabels = oldBoard.labels; |
|
|
|
|
const oldCardLabels = _.pluck( |
|
|
|
|
_.filter(oldBoardLabels, label => { |
|
|
|
|
return _.contains(this.labelIds, label._id); |
|
|
|
|
}), |
|
|
|
|
'name', |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
const newBoard = Boards.findOne(boardId); |
|
|
|
|
const newBoardLabels = newBoard.labels; |
|
|
|
|
const newCardLabelIds = _.pluck( |
|
|
|
|
_.filter(newBoardLabels, label => { |
|
|
|
|
return label.name && _.contains(oldCardLabels, label.name); |
|
|
|
|
}), |
|
|
|
|
'_id', |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
const mutatedFields = { |
|
|
|
|
boardId, |
|
|
|
|
swimlaneId, |
|
|
|
|
listId, |
|
|
|
|
sort, |
|
|
|
|
labelIds: newCardLabelIds, |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
Cards.update(this._id, { |
|
|
|
|
$set: mutatedFields, |
|
|
|
|
}); |
|
|
|
|