diff options
author | Bryan Mutai <mutaiwork@gmail.com> | 2020-05-07 01:29:22 +0300 |
---|---|---|
committer | Bryan Mutai <mutaiwork@gmail.com> | 2020-05-07 01:31:59 +0300 |
commit | 1742bcd9b15737c5853e9bcd0a6301139498307d (patch) | |
tree | 0041882174cc382868f13d7cb7cd584cf146a319 /client/components/import/csvMembersMapper.js | |
parent | 533bc045d06269dba2f42cdfe61817a1b3407974 (diff) | |
download | wekan-1742bcd9b15737c5853e9bcd0a6301139498307d.tar.gz wekan-1742bcd9b15737c5853e9bcd0a6301139498307d.tar.bz2 wekan-1742bcd9b15737c5853e9bcd0a6301139498307d.zip |
add: import board/cards/lists using CSV/TSV
Diffstat (limited to 'client/components/import/csvMembersMapper.js')
-rw-r--r-- | client/components/import/csvMembersMapper.js | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/client/components/import/csvMembersMapper.js b/client/components/import/csvMembersMapper.js new file mode 100644 index 00000000..cf8d5837 --- /dev/null +++ b/client/components/import/csvMembersMapper.js @@ -0,0 +1,37 @@ +export function getMembersToMap(data) { + // we will work on the list itself (an ordered array of objects) when a + // mapping is done, we add a 'wekan' field to the object representing the + // imported member + + const membersToMap = []; + const importedMembers = []; + let membersIndex; + + for (let i = 0; i < data[0].length; i++) { + if (data[0][i].toLowerCase() === 'members') { + membersIndex = i; + } + } + + for (let i = 1; i < data.length; i++) { + if (data[i][membersIndex]) { + for (const importedMember of data[i][membersIndex].split(' ')) { + if (importedMember && importedMembers.indexOf(importedMember) === -1) { + importedMembers.push(importedMember); + } + } + } + } + + for (let importedMember of importedMembers) { + importedMember = { + username: importedMember, + id: importedMember, + }; + const wekanUser = Users.findOne({ username: importedMember.username }); + if (wekanUser) importedMember.wekanId = wekanUser._id; + membersToMap.push(importedMember); + } + + return membersToMap; +} |