import.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import { TrelloCreator } from './trelloCreator';
  2. import { WekanCreator } from './wekanCreator';
  3. import { CsvCreator } from './csvCreator';
  4. import { Exporter } from './exporter';
  5. import { getMembersToMap } from './wekanmapper';
  6. Meteor.methods({
  7. importBoard(board, data, importSource, currentBoard) {
  8. check(data, Object);
  9. check(importSource, String);
  10. check(currentBoard, Match.Maybe(String));
  11. let creator;
  12. switch (importSource) {
  13. case 'trello':
  14. check(board, Object);
  15. creator = new TrelloCreator(data);
  16. break;
  17. case 'wekan':
  18. check(board, Object);
  19. creator = new WekanCreator(data);
  20. break;
  21. case 'csv':
  22. check(board, Array);
  23. creator = new CsvCreator(data);
  24. break;
  25. }
  26. // 1. check all parameters are ok from a syntax point of view
  27. //creator.check(board);
  28. // 2. check parameters are ok from a business point of view (exist &
  29. // authorized) nothing to check, everyone can import boards in their account
  30. // 3. create all elements
  31. return creator.create(board, currentBoard);
  32. },
  33. });
  34. Meteor.methods({
  35. cloneBoard(sourceBoardId, currentBoardId) {
  36. check(sourceBoardId, String);
  37. check(currentBoardId, Match.Maybe(String));
  38. const exporter = new Exporter(sourceBoardId);
  39. const data = exporter.build();
  40. const additionalData = {};
  41. //get the members to map
  42. const membersMapping = getMembersToMap(data);
  43. //now mirror the mapping done in finishImport in client/components/import/import.js:
  44. if (membersMapping) {
  45. const mappingById = {};
  46. membersMapping.forEach(member => {
  47. if (member.wekanId) {
  48. mappingById[member.id] = member.wekanId;
  49. }
  50. });
  51. additionalData.membersMapping = mappingById;
  52. }
  53. const creator = new WekanCreator(additionalData);
  54. //data.title = `${data.title } - ${ TAPi18n.__('copy-tag')}`;
  55. data.title = `${data.title}`;
  56. return creator.create(data, currentBoardId);
  57. },
  58. });