mirror of
https://github.com/wekan/wekan.git
synced 2025-12-20 09:20:12 +01:00
Merge branch 'feature/import-activities' of https://github.com/GhassenRjab/wekan into GhassenRjab-feature/import-activities
This commit is contained in:
commit
decb31ffa4
2 changed files with 298 additions and 69 deletions
|
|
@ -27,6 +27,10 @@ export class TrelloCreator {
|
||||||
this.lists = {};
|
this.lists = {};
|
||||||
// Map of cards Trello ID => Wekan ID
|
// Map of cards Trello ID => Wekan ID
|
||||||
this.cards = {};
|
this.cards = {};
|
||||||
|
// Map of attachments Wekan ID => Wekan ID
|
||||||
|
this.attachmentIds = {};
|
||||||
|
// Map of checklists Wekan ID => Wekan ID
|
||||||
|
this.checklists = {};
|
||||||
// The comments, indexed by Trello card id (to map when importing cards)
|
// The comments, indexed by Trello card id (to map when importing cards)
|
||||||
this.comments = {};
|
this.comments = {};
|
||||||
// the members, indexed by Trello member id => Wekan user ID
|
// the members, indexed by Trello member id => Wekan user ID
|
||||||
|
|
@ -261,21 +265,21 @@ export class TrelloCreator {
|
||||||
// keep track of Trello id => WeKan id
|
// keep track of Trello id => WeKan id
|
||||||
this.cards[card.id] = cardId;
|
this.cards[card.id] = cardId;
|
||||||
// log activity
|
// log activity
|
||||||
Activities.direct.insert({
|
// Activities.direct.insert({
|
||||||
activityType: 'importCard',
|
// activityType: 'importCard',
|
||||||
boardId,
|
// boardId,
|
||||||
cardId,
|
// cardId,
|
||||||
createdAt: this._now(),
|
// createdAt: this._now(),
|
||||||
listId: cardToCreate.listId,
|
// listId: cardToCreate.listId,
|
||||||
source: {
|
// source: {
|
||||||
id: card.id,
|
// id: card.id,
|
||||||
system: 'Trello',
|
// system: 'Trello',
|
||||||
url: card.url,
|
// url: card.url,
|
||||||
},
|
// },
|
||||||
// we attribute the import to current user,
|
// // we attribute the import to current user,
|
||||||
// not the author of the original card
|
// // not the author of the original card
|
||||||
userId: this._user(),
|
// userId: this._user(),
|
||||||
});
|
// });
|
||||||
// add comments
|
// add comments
|
||||||
const comments = this.comments[card.id];
|
const comments = this.comments[card.id];
|
||||||
if (comments) {
|
if (comments) {
|
||||||
|
|
@ -291,12 +295,14 @@ export class TrelloCreator {
|
||||||
// dateLastActivity will be set from activity insert, no need to
|
// dateLastActivity will be set from activity insert, no need to
|
||||||
// update it ourselves
|
// update it ourselves
|
||||||
const commentId = CardComments.direct.insert(commentToCreate);
|
const commentId = CardComments.direct.insert(commentToCreate);
|
||||||
|
// We need to keep adding comment activities this way with Trello
|
||||||
|
// because it doesn't provide a comment ID
|
||||||
Activities.direct.insert({
|
Activities.direct.insert({
|
||||||
activityType: 'addComment',
|
activityType: 'addComment',
|
||||||
boardId: commentToCreate.boardId,
|
boardId: commentToCreate.boardId,
|
||||||
cardId: commentToCreate.cardId,
|
cardId: commentToCreate.cardId,
|
||||||
commentId,
|
commentId,
|
||||||
createdAt: this._now(commentToCreate.createdAt),
|
createdAt: this._now(comment.date),
|
||||||
// we attribute the addComment (not the import)
|
// we attribute the addComment (not the import)
|
||||||
// to the original author - it is needed by some UI elements.
|
// to the original author - it is needed by some UI elements.
|
||||||
userId: commentToCreate.userId,
|
userId: commentToCreate.userId,
|
||||||
|
|
@ -322,6 +328,7 @@ export class TrelloCreator {
|
||||||
const wekanAtt = Attachments.insert(file, () => {
|
const wekanAtt = Attachments.insert(file, () => {
|
||||||
// we do nothing
|
// we do nothing
|
||||||
});
|
});
|
||||||
|
this.attachmentIds[att.id] = wekanAtt._id;
|
||||||
//
|
//
|
||||||
if(trelloCoverId === att.id) {
|
if(trelloCoverId === att.id) {
|
||||||
Cards.direct.update(cardId, { $set: {coverId: wekanAtt._id}});
|
Cards.direct.update(cardId, { $set: {coverId: wekanAtt._id}});
|
||||||
|
|
@ -368,19 +375,19 @@ export class TrelloCreator {
|
||||||
Lists.direct.update(listId, {$set: {'updatedAt': this._now()}});
|
Lists.direct.update(listId, {$set: {'updatedAt': this._now()}});
|
||||||
this.lists[list.id] = listId;
|
this.lists[list.id] = listId;
|
||||||
// log activity
|
// log activity
|
||||||
Activities.direct.insert({
|
// Activities.direct.insert({
|
||||||
activityType: 'importList',
|
// activityType: 'importList',
|
||||||
boardId,
|
// boardId,
|
||||||
createdAt: this._now(),
|
// createdAt: this._now(),
|
||||||
listId,
|
// listId,
|
||||||
source: {
|
// source: {
|
||||||
id: list.id,
|
// id: list.id,
|
||||||
system: 'Trello',
|
// system: 'Trello',
|
||||||
},
|
// },
|
||||||
// We attribute the import to current user,
|
// // We attribute the import to current user,
|
||||||
// not the creator of the original object
|
// // not the creator of the original object
|
||||||
userId: this._user(),
|
// userId: this._user(),
|
||||||
});
|
// });
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -393,6 +400,8 @@ export class TrelloCreator {
|
||||||
createdAt: this._now(),
|
createdAt: this._now(),
|
||||||
};
|
};
|
||||||
const checklistId = Checklists.direct.insert(checklistToCreate);
|
const checklistId = Checklists.direct.insert(checklistToCreate);
|
||||||
|
// keep track of Trello id => WeKan id
|
||||||
|
this.checklists[checklist.id] = checklistId;
|
||||||
// Now add the items to the checklist
|
// Now add the items to the checklist
|
||||||
const itemsToCreate = [];
|
const itemsToCreate = [];
|
||||||
checklist.checkItems.forEach((item) => {
|
checklist.checkItems.forEach((item) => {
|
||||||
|
|
@ -472,6 +481,99 @@ export class TrelloCreator {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
importActions(actions, boardId) {
|
||||||
|
actions.forEach((action) => {
|
||||||
|
switch (action.type) {
|
||||||
|
// Board related actions
|
||||||
|
// TODO: addBoardMember, removeBoardMember
|
||||||
|
case 'createBoard': {
|
||||||
|
Activities.direct.insert({
|
||||||
|
userId: this._user(action.idMemberCreator),
|
||||||
|
type: 'board',
|
||||||
|
activityTypeId: boardId,
|
||||||
|
activityType: 'createBoard',
|
||||||
|
boardId,
|
||||||
|
createdAt: this._now(action.date),
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// List related activities
|
||||||
|
// TODO: removeList, archivedList
|
||||||
|
case 'createList': {
|
||||||
|
Activities.direct.insert({
|
||||||
|
userId: this._user(action.idMemberCreator),
|
||||||
|
type: 'list',
|
||||||
|
activityType: 'createList',
|
||||||
|
listId: this.lists[action.data.list.id],
|
||||||
|
boardId,
|
||||||
|
createdAt: this._now(action.date),
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// Card related activities
|
||||||
|
// TODO: archivedCard, restoredCard, joinMember, unjoinMember
|
||||||
|
case 'createCard': {
|
||||||
|
Activities.direct.insert({
|
||||||
|
userId: this._user(action.idMemberCreator),
|
||||||
|
activityType: 'createCard',
|
||||||
|
listId: this.lists[action.data.list.id],
|
||||||
|
cardId: this.cards[action.data.card.id],
|
||||||
|
boardId,
|
||||||
|
createdAt: this._now(action.date),
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 'updateCard': {
|
||||||
|
if (action.data.old.idList) {
|
||||||
|
Activities.direct.insert({
|
||||||
|
userId: this._user(action.idMemberCreator),
|
||||||
|
oldListId: this.lists[action.data.old.idList],
|
||||||
|
activityType: 'moveCard',
|
||||||
|
listId: this.lists[action.data.listAfter.id],
|
||||||
|
cardId: this.cards[action.data.card.id],
|
||||||
|
boardId,
|
||||||
|
createdAt: this._now(action.date),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// Comment related activities
|
||||||
|
// Trello doesn't export the comment id
|
||||||
|
// Attachment related activities
|
||||||
|
// TODO: We can't add activities related to adding attachments
|
||||||
|
// because when we import an attachment, an activity is
|
||||||
|
// autmatically created. We need to directly insert the attachment
|
||||||
|
// without calling the "Attachments.files.after.insert" hook first,
|
||||||
|
// then we can uncomment the code below
|
||||||
|
// case 'addAttachment': {
|
||||||
|
// console.log(this.attachmentIds);
|
||||||
|
// Activities.direct.insert({
|
||||||
|
// userId: this._user(activity.userId),
|
||||||
|
// type: 'card',
|
||||||
|
// activityType: activity.activityType,
|
||||||
|
// attachmentId: this.attachmentIds[activity.attachmentId],
|
||||||
|
// cardId: this.cards[activity.cardId],
|
||||||
|
// boardId,
|
||||||
|
// createdAt: this._now(activity.createdAt),
|
||||||
|
// });
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
// Checklist related activities
|
||||||
|
case 'addChecklistToCard': {
|
||||||
|
Activities.direct.insert({
|
||||||
|
userId: this._user(action.idMemberCreator),
|
||||||
|
activityType: 'addChecklist',
|
||||||
|
cardId: this.cards[action.data.card.id],
|
||||||
|
checklistId: this.checklists[action.data.checklist.id],
|
||||||
|
boardId,
|
||||||
|
createdAt: this._now(action.date),
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}}
|
||||||
|
// Trello doesn't have an add checklist item action
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
check(board) {
|
check(board) {
|
||||||
try {
|
try {
|
||||||
// check(data, {
|
// check(data, {
|
||||||
|
|
@ -501,6 +603,7 @@ export class TrelloCreator {
|
||||||
this.createLists(board.lists, boardId);
|
this.createLists(board.lists, boardId);
|
||||||
this.createCards(board.cards, boardId);
|
this.createCards(board.cards, boardId);
|
||||||
this.createChecklists(board.checklists);
|
this.createChecklists(board.checklists);
|
||||||
|
this.importActions(board.actions, boardId);
|
||||||
// XXX add members
|
// XXX add members
|
||||||
return boardId;
|
return boardId;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,12 @@ export class WekanCreator {
|
||||||
this.lists = {};
|
this.lists = {};
|
||||||
// Map of cards Wekan ID => Wekan ID
|
// Map of cards Wekan ID => Wekan ID
|
||||||
this.cards = {};
|
this.cards = {};
|
||||||
|
// Map of comments Wekan ID => Wekan ID
|
||||||
|
this.commentIds = {};
|
||||||
|
// Map of attachments Wekan ID => Wekan ID
|
||||||
|
this.attachmentIds = {};
|
||||||
|
// Map of checklists Wekan ID => Wekan ID
|
||||||
|
this.checklists = {};
|
||||||
// The comments, indexed by Wekan card id (to map when importing cards)
|
// The comments, indexed by Wekan card id (to map when importing cards)
|
||||||
this.comments = {};
|
this.comments = {};
|
||||||
// the members, indexed by Wekan member id => Wekan user ID
|
// the members, indexed by Wekan member id => Wekan user ID
|
||||||
|
|
@ -249,21 +255,21 @@ export class WekanCreator {
|
||||||
const cardId = Cards.direct.insert(cardToCreate);
|
const cardId = Cards.direct.insert(cardToCreate);
|
||||||
// keep track of Wekan id => WeKan id
|
// keep track of Wekan id => WeKan id
|
||||||
this.cards[card._id] = cardId;
|
this.cards[card._id] = cardId;
|
||||||
// log activity
|
// // log activity
|
||||||
Activities.direct.insert({
|
// Activities.direct.insert({
|
||||||
activityType: 'importCard',
|
// activityType: 'importCard',
|
||||||
boardId,
|
// boardId,
|
||||||
cardId,
|
// cardId,
|
||||||
createdAt: this._now(),
|
// createdAt: this._now(),
|
||||||
listId: cardToCreate.listId,
|
// listId: cardToCreate.listId,
|
||||||
source: {
|
// source: {
|
||||||
id: card._id,
|
// id: card._id,
|
||||||
system: 'Wekan',
|
// system: 'Wekan',
|
||||||
},
|
// },
|
||||||
// we attribute the import to current user,
|
// // we attribute the import to current user,
|
||||||
// not the author of the original card
|
// // not the author of the original card
|
||||||
userId: this._user(),
|
// userId: this._user(),
|
||||||
});
|
// });
|
||||||
// add comments
|
// add comments
|
||||||
const comments = this.comments[card._id];
|
const comments = this.comments[card._id];
|
||||||
if (comments) {
|
if (comments) {
|
||||||
|
|
@ -271,7 +277,7 @@ export class WekanCreator {
|
||||||
const commentToCreate = {
|
const commentToCreate = {
|
||||||
boardId,
|
boardId,
|
||||||
cardId,
|
cardId,
|
||||||
createdAt: this._now(comment.date),
|
createdAt: this._now(comment.createdAt),
|
||||||
text: comment.text,
|
text: comment.text,
|
||||||
// we attribute the comment to the original author, default to current user
|
// we attribute the comment to the original author, default to current user
|
||||||
userId: this._user(comment.userId),
|
userId: this._user(comment.userId),
|
||||||
|
|
@ -279,16 +285,17 @@ export class WekanCreator {
|
||||||
// dateLastActivity will be set from activity insert, no need to
|
// dateLastActivity will be set from activity insert, no need to
|
||||||
// update it ourselves
|
// update it ourselves
|
||||||
const commentId = CardComments.direct.insert(commentToCreate);
|
const commentId = CardComments.direct.insert(commentToCreate);
|
||||||
Activities.direct.insert({
|
this.commentIds[comment._id] = commentId;
|
||||||
activityType: 'addComment',
|
// Activities.direct.insert({
|
||||||
boardId: commentToCreate.boardId,
|
// activityType: 'addComment',
|
||||||
cardId: commentToCreate.cardId,
|
// boardId: commentToCreate.boardId,
|
||||||
commentId,
|
// cardId: commentToCreate.cardId,
|
||||||
createdAt: this._now(commentToCreate.createdAt),
|
// commentId,
|
||||||
// we attribute the addComment (not the import)
|
// createdAt: this._now(commentToCreate.createdAt),
|
||||||
// to the original author - it is needed by some UI elements.
|
// // we attribute the addComment (not the import)
|
||||||
userId: commentToCreate.userId,
|
// // to the original author - it is needed by some UI elements.
|
||||||
});
|
// userId: commentToCreate.userId,
|
||||||
|
// });
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
const attachments = this.attachments[card._id];
|
const attachments = this.attachments[card._id];
|
||||||
|
|
@ -311,6 +318,7 @@ export class WekanCreator {
|
||||||
const wekanAtt = Attachments.insert(file, () => {
|
const wekanAtt = Attachments.insert(file, () => {
|
||||||
// we do nothing
|
// we do nothing
|
||||||
});
|
});
|
||||||
|
this.attachmentIds[att._id] = wekanAtt._id;
|
||||||
//
|
//
|
||||||
if(wekanCoverId === att._id) {
|
if(wekanCoverId === att._id) {
|
||||||
Cards.direct.update(cardId, { $set: {coverId: wekanAtt._id}});
|
Cards.direct.update(cardId, { $set: {coverId: wekanAtt._id}});
|
||||||
|
|
@ -328,6 +336,7 @@ export class WekanCreator {
|
||||||
const wekanAtt = Attachments.insert(file, () => {
|
const wekanAtt = Attachments.insert(file, () => {
|
||||||
// we do nothing
|
// we do nothing
|
||||||
});
|
});
|
||||||
|
this.attachmentIds[att._id] = wekanAtt._id;
|
||||||
//
|
//
|
||||||
if(wekanCoverId === att._id) {
|
if(wekanCoverId === att._id) {
|
||||||
Cards.direct.update(cardId, { $set: {coverId: wekanAtt._id}});
|
Cards.direct.update(cardId, { $set: {coverId: wekanAtt._id}});
|
||||||
|
|
@ -374,20 +383,20 @@ export class WekanCreator {
|
||||||
const listId = Lists.direct.insert(listToCreate);
|
const listId = Lists.direct.insert(listToCreate);
|
||||||
Lists.direct.update(listId, {$set: {'updatedAt': this._now()}});
|
Lists.direct.update(listId, {$set: {'updatedAt': this._now()}});
|
||||||
this.lists[list._id] = listId;
|
this.lists[list._id] = listId;
|
||||||
// log activity
|
// // log activity
|
||||||
Activities.direct.insert({
|
// Activities.direct.insert({
|
||||||
activityType: 'importList',
|
// activityType: 'importList',
|
||||||
boardId,
|
// boardId,
|
||||||
createdAt: this._now(),
|
// createdAt: this._now(),
|
||||||
listId,
|
// listId,
|
||||||
source: {
|
// source: {
|
||||||
id: list._id,
|
// id: list._id,
|
||||||
system: 'Wekan',
|
// system: 'Wekan',
|
||||||
},
|
// },
|
||||||
// We attribute the import to current user,
|
// // We attribute the import to current user,
|
||||||
// not the creator of the original object
|
// // not the creator of the original object
|
||||||
userId: this._user(),
|
// userId: this._user(),
|
||||||
});
|
// });
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -400,6 +409,8 @@ export class WekanCreator {
|
||||||
createdAt: checklist.createdAt,
|
createdAt: checklist.createdAt,
|
||||||
};
|
};
|
||||||
const checklistId = Checklists.direct.insert(checklistToCreate);
|
const checklistId = Checklists.direct.insert(checklistToCreate);
|
||||||
|
// keep track of Wekan id => WeKan id
|
||||||
|
this.checklists[checklist._id] = checklistId;
|
||||||
// Now add the items to the checklist
|
// Now add the items to the checklist
|
||||||
const itemsToCreate = [];
|
const itemsToCreate = [];
|
||||||
checklist.items.forEach((item) => {
|
checklist.items.forEach((item) => {
|
||||||
|
|
@ -463,6 +474,120 @@ export class WekanCreator {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
importActivities(activities, boardId) {
|
||||||
|
activities.forEach((activity) => {
|
||||||
|
switch (activity.activityType) {
|
||||||
|
// Board related activities
|
||||||
|
// TODO: addBoardMember, removeBoardMember
|
||||||
|
case 'createBoard': {
|
||||||
|
Activities.direct.insert({
|
||||||
|
userId: this._user(activity.userId),
|
||||||
|
type: 'board',
|
||||||
|
activityTypeId: boardId,
|
||||||
|
activityType: activity.activityType,
|
||||||
|
boardId,
|
||||||
|
createdAt: this._now(activity.createdAt),
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// List related activities
|
||||||
|
// TODO: removeList, archivedList
|
||||||
|
case 'createList': {
|
||||||
|
Activities.direct.insert({
|
||||||
|
userId: this._user(activity.userId),
|
||||||
|
type: 'list',
|
||||||
|
activityType: activity.activityType,
|
||||||
|
listId: this.lists[activity.listId],
|
||||||
|
boardId,
|
||||||
|
createdAt: this._now(activity.createdAt),
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// Card related activities
|
||||||
|
// TODO: archivedCard, restoredCard, joinMember, unjoinMember
|
||||||
|
case 'createCard': {
|
||||||
|
Activities.direct.insert({
|
||||||
|
userId: this._user(activity.userId),
|
||||||
|
activityType: activity.activityType,
|
||||||
|
listId: this.lists[activity.listId],
|
||||||
|
cardId: this.cards[activity.cardId],
|
||||||
|
boardId,
|
||||||
|
createdAt: this._now(activity.createdAt),
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 'moveCard': {
|
||||||
|
Activities.direct.insert({
|
||||||
|
userId: this._user(activity.userId),
|
||||||
|
oldListId: this.lists[activity.oldListId],
|
||||||
|
activityType: activity.activityType,
|
||||||
|
listId: this.lists[activity.listId],
|
||||||
|
cardId: this.cards[activity.cardId],
|
||||||
|
boardId,
|
||||||
|
createdAt: this._now(activity.createdAt),
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// Comment related activities
|
||||||
|
case 'addComment': {
|
||||||
|
Activities.direct.insert({
|
||||||
|
userId: this._user(activity.userId),
|
||||||
|
activityType: activity.activityType,
|
||||||
|
cardId: this.cards[activity.cardId],
|
||||||
|
commentId: this.commentIds[activity.commentId],
|
||||||
|
boardId,
|
||||||
|
createdAt: this._now(activity.createdAt),
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// Attachment related activities
|
||||||
|
// TODO: We can't add activities related to adding attachments
|
||||||
|
// because when we import an attachment, an activity is
|
||||||
|
// autmatically created. We need to directly insert the attachment
|
||||||
|
// without calling the "Attachments.files.after.insert" hook first,
|
||||||
|
// then we can uncomment the code below
|
||||||
|
// case 'addAttachment': {
|
||||||
|
// console.log(this.attachmentIds);
|
||||||
|
// Activities.direct.insert({
|
||||||
|
// userId: this._user(activity.userId),
|
||||||
|
// type: 'card',
|
||||||
|
// activityType: activity.activityType,
|
||||||
|
// attachmentId: this.attachmentIds[activity.attachmentId],
|
||||||
|
// cardId: this.cards[activity.cardId],
|
||||||
|
// boardId,
|
||||||
|
// createdAt: this._now(activity.createdAt),
|
||||||
|
// });
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
// Checklist related activities
|
||||||
|
case 'addChecklist': {
|
||||||
|
Activities.direct.insert({
|
||||||
|
userId: this._user(activity.userId),
|
||||||
|
activityType: activity.activityType,
|
||||||
|
cardId: this.cards[activity.cardId],
|
||||||
|
checklistId: this.checklists[activity.checklistId],
|
||||||
|
boardId,
|
||||||
|
createdAt: this._now(activity.createdAt),
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 'addChecklistItem': {
|
||||||
|
Activities.direct.insert({
|
||||||
|
userId: this._user(activity.userId),
|
||||||
|
activityType: activity.activityType,
|
||||||
|
cardId: this.cards[activity.cardId],
|
||||||
|
checklistId: this.checklists[activity.checklistId],
|
||||||
|
checklistItemId: activity.checklistItemId.replace(
|
||||||
|
activity.checklistId,
|
||||||
|
this.checklists[activity.checklistId]),
|
||||||
|
boardId,
|
||||||
|
createdAt: this._now(activity.createdAt),
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
check(board) {
|
check(board) {
|
||||||
try {
|
try {
|
||||||
// check(data, {
|
// check(data, {
|
||||||
|
|
@ -492,6 +617,7 @@ export class WekanCreator {
|
||||||
this.createLists(board.lists, boardId);
|
this.createLists(board.lists, boardId);
|
||||||
this.createCards(board.cards, boardId);
|
this.createCards(board.cards, boardId);
|
||||||
this.createChecklists(board.checklists);
|
this.createChecklists(board.checklists);
|
||||||
|
this.importActivities(board.activities, boardId);
|
||||||
// XXX add members
|
// XXX add members
|
||||||
return boardId;
|
return boardId;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue