Browse Source

Import members: added UI

Xavier Priour 9 năm trước cách đây
mục cha
commit
027aacb50e

+ 8 - 0
client/components/import/import.jade

@@ -5,3 +5,11 @@ template(name="importPopup")
     p: label(for='import-textarea') {{_ getLabel}}
     p: label(for='import-textarea') {{_ getLabel}}
     textarea#import-textarea.js-import-json(placeholder="{{_ 'import-json-placeholder'}}" autofocus)
     textarea#import-textarea.js-import-json(placeholder="{{_ 'import-json-placeholder'}}" autofocus)
     input.primary.wide(type="submit" value="{{_ 'import'}}")
     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'}}")

+ 32 - 10
client/components/import/import.js

@@ -13,32 +13,44 @@ const ImportPopup = BlazeComponent.extendComponent({
 
 
   events() {
   events() {
     return [{
     return [{
-      'submit': (evt) => {
+      submit(evt) {
         evt.preventDefault();
         evt.preventDefault();
         const dataJson = $(evt.currentTarget).find('.js-import-json').val();
         const dataJson = $(evt.currentTarget).find('.js-import-json').val();
         let dataObject;
         let dataObject;
         try {
         try {
           dataObject = JSON.parse(dataJson);
           dataObject = JSON.parse(dataJson);
+          this.setError('');
         } catch (e) {
         } catch (e) {
           this.setError('error-json-malformed');
           this.setError('error-json-malformed');
           return;
           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() {
   onCreated() {
     this.error = new ReactiveVar('');
     this.error = new ReactiveVar('');
+    this.dataToImport = '';
   },
   },
 
 
   setError(error) {
   setError(error) {
@@ -88,3 +100,13 @@ ImportPopup.extendComponent({
   },
   },
 }).register('boardImportBoardPopup');
 }).register('boardImportBoardPopup');
 
 
+BlazeComponent.extendComponent({
+  events() {
+    return [{
+      'submit': (evt) => {
+        evt.preventDefault();
+        console.log(this.data());
+      },
+    }];
+  },
+}).register('mapMembersPopup');

+ 2 - 0
i18n/en.i18n.json

@@ -141,6 +141,7 @@
     "import-card": "Import a Trello card",
     "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-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-json-placeholder": "Paste your valid JSON data here",
+    "import-members-map": "Map the Trello members you want to import to Wekan members",
     "info": "Infos",
     "info": "Infos",
     "initials": "Initials",
     "initials": "Initials",
     "joined": "joined",
     "joined": "joined",
@@ -164,6 +165,7 @@
     "lists": "Lists",
     "lists": "Lists",
     "log-out": "Log Out",
     "log-out": "Log Out",
     "loginPopup-title": "Log In",
     "loginPopup-title": "Log In",
+    "mapMembersPopup-title": "Map members",
     "memberMenuPopup-title": "Member Settings",
     "memberMenuPopup-title": "Member Settings",
     "members": "Members",
     "members": "Members",
     "menu": "Menu",
     "menu": "Menu",