From 027aacb50e2baf715c89d914e34132458cf11691 Mon Sep 17 00:00:00 2001 From: Xavier Priour Date: Fri, 23 Oct 2015 03:37:34 +0200 Subject: Import members: added UI --- client/components/import/import.jade | 8 +++++++ client/components/import/import.js | 42 +++++++++++++++++++++++++++--------- i18n/en.i18n.json | 2 ++ 3 files changed, 42 insertions(+), 10 deletions(-) diff --git a/client/components/import/import.jade b/client/components/import/import.jade index f63661af..799834fa 100644 --- a/client/components/import/import.jade +++ b/client/components/import/import.jade @@ -5,3 +5,11 @@ template(name="importPopup") p: label(for='import-textarea') {{_ getLabel}} textarea#import-textarea.js-import-json(placeholder="{{_ 'import-json-placeholder'}}" autofocus) input.primary.wide(type="submit" value="{{_ 'import'}}") + +template(name="mapMembersPopup") + p {{_ 'import-members-map'}} + ul + each members + li.item {{ fullName }} > world + form + input.primary.wide(type="submit" value="{{_ 'import'}}") diff --git a/client/components/import/import.js b/client/components/import/import.js index c6957fa9..f46f15bc 100644 --- a/client/components/import/import.js +++ b/client/components/import/import.js @@ -13,32 +13,44 @@ const ImportPopup = BlazeComponent.extendComponent({ events() { return [{ - 'submit': (evt) => { + submit(evt) { evt.preventDefault(); const dataJson = $(evt.currentTarget).find('.js-import-json').val(); let dataObject; try { dataObject = JSON.parse(dataJson); + this.setError(''); } catch (e) { this.setError('error-json-malformed'); return; } - Meteor.call(this.getMethodName(), dataObject, this.getAdditionalData(), - (error, response) => { - if (error) { - this.setError(error.error); - } else { - Filter.addException(response); - this.onFinish(response); + if(dataObject.members.length > 0) { + this.data().toImport = dataObject; + members.forEach( + // todo if there is a Wekan user with same name, add it as a field 'wekanUser' + ); + this.data().members = dataObject.members; + // we bind to preserve data context + Popup.open('mapMembers').bind(this)(evt); + } else { + Meteor.call(this.getMethodName(), dataObject, this.getAdditionalData(), + (error, response) => { + if (error) { + this.setError(error.error); + } else { + Filter.addException(response); + this.onFinish(response); + } } - } - ); + ); + } }, }]; }, onCreated() { this.error = new ReactiveVar(''); + this.dataToImport = ''; }, setError(error) { @@ -88,3 +100,13 @@ ImportPopup.extendComponent({ }, }).register('boardImportBoardPopup'); +BlazeComponent.extendComponent({ + events() { + return [{ + 'submit': (evt) => { + evt.preventDefault(); + console.log(this.data()); + }, + }]; + }, +}).register('mapMembersPopup'); diff --git a/i18n/en.i18n.json b/i18n/en.i18n.json index 0823ba08..d2f95392 100644 --- a/i18n/en.i18n.json +++ b/i18n/en.i18n.json @@ -141,6 +141,7 @@ "import-card": "Import a Trello card", "import-card-trello-instruction": "Go to a Trello card, select 'Share and more...' then 'Export JSON' and copy the resulting text", "import-json-placeholder": "Paste your valid JSON data here", + "import-members-map": "Map the Trello members you want to import to Wekan members", "info": "Infos", "initials": "Initials", "joined": "joined", @@ -164,6 +165,7 @@ "lists": "Lists", "log-out": "Log Out", "loginPopup-title": "Log In", + "mapMembersPopup-title": "Map members", "memberMenuPopup-title": "Member Settings", "members": "Members", "menu": "Menu", -- cgit v1.2.3-1-g7c22