diff --git a/client/components/cards/cardCustomFields.jade b/client/components/cards/cardCustomFields.jade index e4e485357..b6fa0bc2b 100644 --- a/client/components/cards/cardCustomFields.jade +++ b/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") diff --git a/client/components/cards/cardCustomFields.js b/client/components/cards/cardCustomFields.js index 45f207622..49f577fea 100644 --- a/client/components/cards/cardCustomFields.js +++ b/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 { diff --git a/models/customFields.js b/models/customFields.js index 83b47fc0a..61ed41c88 100644 --- a/models/customFields.js +++ b/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: { /** diff --git a/models/trelloCreator.js b/models/trelloCreator.js index 1c5bcd931..0f394a2a3 100644 --- a/models/trelloCreator.js +++ b/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