Issue #3445 Custom field definitions duplicated on copy and move

Check the *to* board to see if it has a custome field of the same name
and type. If it does use that custome field definition.
This commit is contained in:
John R. Supplee 2021-01-20 15:07:53 +02:00
parent b365599bc8
commit e1192d1200

View file

@ -367,6 +367,24 @@ Cards.allow({
});
Cards.helpers({
mapCustomFieldsToBoard(boardId) {
// Map custom fields to new board
return this.customFields.map(cf => {
const oldCf = CustomFields.findOne(cf._id);
const newCf = CustomFields.findOne({
boardIds: boardId,
name: oldCf.name,
type: oldCf.type,
});
if (newCf) {
cf._id = newCf._id;
} else if (!_.contains(oldCf.boardIds, boardId)) {
oldCf.addBoard(boardId);
}
return cf;
});
},
copy(boardId, swimlaneId, listId) {
const oldId = this._id;
const oldCard = Cards.findOne(oldId);
@ -397,16 +415,7 @@ Cards.helpers({
delete this.labelIds;
this.labelIds = newCardLabels;
// Copy Custom Fields
CustomFields.find({
_id: {
$in: oldCard.customFields.map(cf => {
return cf._id;
}),
},
}).forEach(cf => {
if (!_.contains(cf.boardIds, boardId)) cf.addBoard(boardId);
});
this.customFields = this.mapCustomFieldsToBoard(newBoard._id);
}
delete this._id;
@ -1528,16 +1537,7 @@ Cards.mutations({
labelIds: newCardLabelIds,
});
// Copy custom fields
CustomFields.find({
_id: {
$in: this.customFields.map(cf => {
return cf._id;
}),
},
}).forEach(cf => {
if (!_.contains(cf.boardIds, boardId)) cf.addBoard(boardId);
});
mutatedFields.customFields = this.mapCustomFieldsToBoard(newBoard._id);
}
Cards.update(this._id, {