Ver Fonte

Initial work on import of custom fields from Trello

* start adding import functionality
* Add checkbox type to customFields
John R. Supplee há 4 anos atrás
pai
commit
c89a0eb694

+ 11 - 0
client/components/cards/cardCustomFields.jade

@@ -52,6 +52,17 @@ template(name="cardCustomField-number")
         if value
             = value
 
+template(name="cardCustomField-checkbox")
+  if canModifyCard
+    +inlinedForm(classNames="js-card-customfield-checkbox")
+      input(type="checkbox" value=data.value)
+      .edit-controls.clearfix
+        button.primary(type="submit") {{_ 'save'}}
+        a.fa.fa-times-thin.js-close-inlined-form
+  else
+    if value
+      = value
+
 template(name="cardCustomField-currency")
     if canModifyCard
         +inlinedForm(classNames="js-card-customfield-currency")

+ 20 - 1
client/components/cards/cardCustomFields.js

@@ -78,7 +78,26 @@ CardCustomField.register('cardCustomField');
       },
     ];
   }
-}.register('cardCustomField-number'));
+}.register('cardCustomField-checkbox'));
+
+// cardCustomField-checkbox
+(class extends CardCustomField {
+  onCreated() {
+    super.onCreated();
+  }
+
+  events() {
+    return [
+      {
+        'submit .js-card-customfield-checkbox'(event) {
+          event.preventDefault();
+          const value = this.find('input').value !== '';
+          this.card.setCustomField(this.customFieldId, value);
+        },
+      },
+    ];
+  }
+}.register('cardCustomField-checkbox'));
 
 // cardCustomField-currency
 (class extends CardCustomField {

+ 8 - 1
models/customFields.js

@@ -22,7 +22,14 @@ CustomFields.attachSchema(
        * type of the custom field
        */
       type: String,
-      allowedValues: ['text', 'number', 'date', 'dropdown', 'currency'],
+      allowedValues: [
+        'text',
+        'number',
+        'date',
+        'dropdown',
+        'checkbox',
+        'currency',
+      ],
     },
     settings: {
       /**

+ 20 - 0
models/trelloCreator.js

@@ -40,6 +40,8 @@ export class TrelloCreator {
 
     // maps a trelloCardId to an array of trelloAttachments
     this.attachments = {};
+
+    this.customFields = {};
   }
 
   /**
@@ -161,6 +163,7 @@ export class TrelloCreator {
       // very old boards won't have a creation activity so no creation date
       createdAt: this._now(this.createdAt.board),
       labels: [],
+      customFields: [],
       members: [
         {
           userId: Meteor.userId(),
@@ -216,6 +219,19 @@ export class TrelloCreator {
       this.labels[label.id] = labelToCreate._id;
       boardToCreate.labels.push(labelToCreate);
     });
+    trelloBoard.customFields.forEach(field => {
+      const fieldToCreate = {
+        _id: Random.id(6),
+        trelloId: field.id,
+        name: field.name,
+        showOnCard: field.display.cardFront,
+        type: field.type,
+      };
+      // We need to remember them by Trello ID, as this is the only ref we have
+      // when importing cards.
+      this.customFields[field.id] = fieldToCreate._id;
+      boardToCreate.customFields.push(fieldToCreate);
+    });
     const boardId = Boards.direct.insert(boardToCreate);
     Boards.direct.update(boardId, { $set: { modifiedAt: this._now() } });
     // log activity
@@ -309,6 +325,10 @@ export class TrelloCreator {
         }
       }
 
+      if (card.customFieldItems) {
+        card.customFieldItems.forEach(item => {});
+      }
+
       // insert card
       const cardId = Cards.direct.insert(cardToCreate);
       // keep track of Trello id => Wekan id