wekan/models/import.js

67 lines
2 KiB
JavaScript
Raw Normal View History

2017-07-08 13:23:33 +01:00
import { TrelloCreator } from './trelloCreator';
import { WekanCreator } from './wekanCreator';
import { CsvCreator } from './csvCreator';
import { Exporter } from './exporter';
import { getMembersToMap } from './wekanmapper';
Meteor.methods({
2017-07-24 23:56:51 +01:00
importBoard(board, data, importSource, currentBoard) {
check(data, Object);
check(importSource, String);
check(currentBoard, Match.Maybe(String));
2017-07-08 13:23:33 +01:00
let creator;
switch (importSource) {
2019-06-28 12:52:09 -05:00
case 'trello':
check(board, Object);
2019-06-28 12:52:09 -05:00
creator = new TrelloCreator(data);
break;
case 'wekan':
check(board, Object);
2019-06-28 12:52:09 -05:00
creator = new WekanCreator(data);
break;
case 'csv':
check(board, Array);
creator = new CsvCreator(data);
break;
2017-07-08 13:23:33 +01:00
}
// 1. check all parameters are ok from a syntax point of view
//creator.check(board);
// 2. check parameters are ok from a business point of view (exist &
// authorized) nothing to check, everyone can import boards in their account
// 3. create all elements
2017-07-24 23:56:51 +01:00
return creator.create(board, currentBoard);
},
});
2019-02-12 23:40:12 +01:00
Meteor.methods({
2019-04-06 09:00:13 +03:00
cloneBoard(sourceBoardId, currentBoardId) {
2019-02-12 23:40:12 +01:00
check(sourceBoardId, String);
check(currentBoardId, Match.Maybe(String));
const exporter = new Exporter(sourceBoardId);
2019-04-06 09:00:13 +03:00
const data = exporter.build();
const additionalData = {};
//get the members to map
const membersMapping = getMembersToMap(data);
//now mirror the mapping done in finishImport in client/components/import/import.js:
if (membersMapping) {
const mappingById = {};
membersMapping.forEach(member => {
if (member.wekanId) {
mappingById[member.id] = member.wekanId;
}
});
additionalData.membersMapping = mappingById;
}
const creator = new WekanCreator(additionalData);
//data.title = `${data.title } - ${ TAPi18n.__('copy-tag')}`;
data.title = `${data.title}`;
2019-02-12 23:40:12 +01:00
return creator.create(data, currentBoardId);
},
});