Initial work on import of custom fields from Trello

* start adding import functionality
* Add checkbox type to customFields
This commit is contained in:
John R. Supplee 2021-01-18 16:41:35 +02:00
parent 93a3fa9c75
commit c89a0eb694
4 changed files with 59 additions and 2 deletions

View file

@ -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")

View file

@ -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 {

View file

@ -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: {
/**

View file

@ -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