Standarize copy functions. Match labels by name

This commit is contained in:
Andrés Manelli 2019-02-27 20:45:58 +01:00
parent 904b5bf0f5
commit da21a2a410
4 changed files with 36 additions and 20 deletions

View file

@ -621,15 +621,12 @@ BlazeComponent.extendComponent({
if (!this.isTemplateSearch || this.isCardTemplateSearch) {
// Card insertion
// 1. Common
element.boardId = this.boardId;
element.listId = this.listId;
element.swimlaneId = this.swimlaneId;
element.sort = Lists.findOne(this.listId).cards().count();
// 1.A From template
if (this.isTemplateSearch) {
element.type = 'cardType-card';
element.linkedId = '';
_id = element.copy();
_id = element.copy(this.boardId, this.swimlaneId, this.listId);
// 1.B Linked card
} else {
delete element._id;
@ -640,21 +637,18 @@ BlazeComponent.extendComponent({
Filter.addException(_id);
// List insertion
} else if (this.isListTemplateSearch) {
element.boardId = this.boardId;
element.sort = Swimlanes.findOne(this.swimlaneId).lists().count();
element.type = 'list';
_id = element.copy(this.swimlaneId);
_id = element.copy(this.boardId, this.swimlaneId);
} else if (this.isSwimlaneTemplateSearch) {
element.boardId = this.boardId;
element.sort = Boards.findOne(this.boardId).swimlanes().count();
element.type = 'swimlalne';
_id = element.copy();
_id = element.copy(this.boardId);
} else if (this.isBoardTemplateSearch) {
board = Boards.findOne(element.linkedId);
board.sort = Boards.find({archived: false}).count();
board.type = 'board';
delete board.slug;
delete board.members;
_id = board.copy();
}
Popup.close();

View file

@ -272,13 +272,32 @@ Cards.allow({
});
Cards.helpers({
copy() {
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;
delete this._id;
delete this.labelIds;
this.labelIds= newCardLabels;
this.boardId = boardId;
this.swimlaneId = swimlaneId;
this.listId = listId;
const _id = Cards.insert(this);
// copy checklists
Checklists.find({cardId: oldId}).forEach((ch) => {
// REMOVE verify copy with arguments
ch.copy(_id);
});
@ -286,11 +305,13 @@ Cards.helpers({
Cards.find({parentId: oldId}).forEach((subtask) => {
subtask.parentId = _id;
subtask._id = null;
// REMOVE verify copy with arguments instead of insert?
Cards.insert(subtask);
});
// copy card comments
CardComments.find({cardId: oldId}).forEach((cmt) => {
// REMOVE verify copy with arguments
cmt.copy(_id);
});

View file

@ -137,12 +137,15 @@ Lists.allow({
});
Lists.helpers({
copy(swimlaneId) {
copy(boardId, swimlaneId) {
const oldId = this._id;
const oldSwimlaneId = this.swimlaneId || null;
this.boardId = boardId;
this.swimlaneId = swimlaneId;
let _id = null;
existingListWithSameName = Lists.findOne({
boardId: this.boardId,
boardId,
title: this.title,
archived: false,
});
@ -160,11 +163,7 @@ Lists.helpers({
listId: oldId,
archived: false,
}).forEach((card) => {
card.type = 'cardType-card';
card.listId = _id;
card.boardId = this.boardId;
card.swimlaneId = swimlaneId;
card.copy();
card.copy(boardId, swimlaneId, _id);
});
},

View file

@ -101,8 +101,10 @@ Swimlanes.allow({
});
Swimlanes.helpers({
copy(oldBoardId) {
copy(boardId) {
const oldId = this._id;
const oldBoardId = this.boardId;
this.boardId = boardId;
delete this._id;
const _id = Swimlanes.insert(this);
@ -118,8 +120,8 @@ Swimlanes.helpers({
Lists.find(query).forEach((list) => {
list.type = 'list';
list.swimlaneId = oldId;
list.boardId = this.boardId;
list.copy(_id);
list.boardId = boardId;
list.copy(boardId, _id);
});
},