|
|
|
@ -15,6 +15,7 @@ export class WekanCreator { |
|
|
|
|
cards: {}, |
|
|
|
|
lists: {}, |
|
|
|
|
swimlanes: {}, |
|
|
|
|
customFields: {}, |
|
|
|
|
}; |
|
|
|
|
// The object creator Wekan Id, indexed by the object Wekan id
|
|
|
|
|
// (so we only parse actions once!)
|
|
|
|
@ -30,6 +31,8 @@ export class WekanCreator { |
|
|
|
|
this.lists = {}; |
|
|
|
|
// Map of cards Wekan ID => Wekan ID
|
|
|
|
|
this.cards = {}; |
|
|
|
|
// Map of custom fields Wekan ID => Wekan ID
|
|
|
|
|
this.customFields = {}; |
|
|
|
|
// Map of comments Wekan ID => Wekan ID
|
|
|
|
|
this.commentIds = {}; |
|
|
|
|
// Map of attachments Wekan ID => Wekan ID
|
|
|
|
@ -356,6 +359,17 @@ export class WekanCreator { |
|
|
|
|
if (card.color) { |
|
|
|
|
cardToCreate.color = card.color; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// add custom fields
|
|
|
|
|
if (card.customFields) { |
|
|
|
|
cardToCreate.customFields = card.customFields.map(field => { |
|
|
|
|
return { |
|
|
|
|
_id: this.customFields[field._id], |
|
|
|
|
value: field.value, |
|
|
|
|
}; |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// insert card
|
|
|
|
|
const cardId = Cards.direct.insert(cardToCreate); |
|
|
|
|
// keep track of Wekan id => Wekan id
|
|
|
|
@ -481,6 +495,39 @@ export class WekanCreator { |
|
|
|
|
return result; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Create the Wekan custom fields corresponding to the supplied Wekan |
|
|
|
|
* custom fields. |
|
|
|
|
* @param wekanCustomFields |
|
|
|
|
* @param boardId |
|
|
|
|
*/ |
|
|
|
|
createCustomFields(wekanCustomFields, boardId) { |
|
|
|
|
wekanCustomFields.forEach((field, fieldIndex) => { |
|
|
|
|
const fieldToCreate = { |
|
|
|
|
boardIds: [boardId], |
|
|
|
|
name: field.name, |
|
|
|
|
type: field.type, |
|
|
|
|
settings: field.settings, |
|
|
|
|
showOnCard: field.showOnCard, |
|
|
|
|
showLabelOnMiniCard: field.showLabelOnMiniCard, |
|
|
|
|
automaticallyOnCard: field.automaticallyOnCard, |
|
|
|
|
//use date "now" if now created at date is provided (e.g. for very old boards)
|
|
|
|
|
createdAt: this._now(this.createdAt.customFields[field._id]), |
|
|
|
|
modifiedAt: field.modifiedAt, |
|
|
|
|
}; |
|
|
|
|
//insert copy of custom field
|
|
|
|
|
const fieldId = CustomFields.direct.insert(fieldToCreate); |
|
|
|
|
//set modified date to now
|
|
|
|
|
CustomFields.direct.update(fieldId, { |
|
|
|
|
$set: { |
|
|
|
|
modifiedAt: this._now(), |
|
|
|
|
}, |
|
|
|
|
}); |
|
|
|
|
//store mapping of old id to new id
|
|
|
|
|
this.customFields[field._id] = fieldId; |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Create labels if they do not exist and load this.labels.
|
|
|
|
|
createLabels(wekanLabels, board) { |
|
|
|
|
wekanLabels.forEach(label => { |
|
|
|
@ -690,6 +737,11 @@ export class WekanCreator { |
|
|
|
|
this.createdAt.swimlanes[swimlaneId] = activity.createdAt; |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
case 'createCustomField': { |
|
|
|
|
const customFieldId = activity.customFieldId; |
|
|
|
|
this.createdAt.customFields[customFieldId] = activity.createdAt; |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
@ -840,6 +892,7 @@ export class WekanCreator { |
|
|
|
|
const boardId = this.createBoardAndLabels(board); |
|
|
|
|
this.createLists(board.lists, boardId); |
|
|
|
|
this.createSwimlanes(board.swimlanes, boardId); |
|
|
|
|
this.createCustomFields(board.customFields, boardId); |
|
|
|
|
this.createCards(board.cards, boardId); |
|
|
|
|
this.createChecklists(board.checklists); |
|
|
|
|
this.createChecklistItems(board.checklistItems); |
|
|
|
|