card model and card ui preparation for custom fields

This commit is contained in:
Pouyan Savoli 2017-08-30 02:54:54 +02:00
parent afd87e3caa
commit d87191f17e
5 changed files with 47 additions and 3 deletions

View file

@ -45,6 +45,9 @@ template(name="cardDetails")
h3.card-details-item-title {{_ 'card-due'}} h3.card-details-item-title {{_ 'card-due'}}
+cardDueDate +cardDueDate
each customFields
.card-details-item.card-details-item-customfield
h3.card-details-item-title {{_ 'some-title' }}
//- XXX We should use "editable" to avoid repetiting ourselves //- XXX We should use "editable" to avoid repetiting ourselves
if canModifyCard if canModifyCard

View file

@ -200,7 +200,7 @@ Template.editCardTitleForm.events({
Template.cardCustomFieldsPopup.events({ Template.cardCustomFieldsPopup.events({
'click .js-select-field'(evt) { 'click .js-select-field'(evt) {
const card = Cards.findOne(Session.get('currentCard')); const card = Cards.findOne(Session.get('currentCard'));
const customFieldId = this.customFieldId; const customFieldId = this._id;
card.toggleCustomField(customFieldId); card.toggleCustomField(customFieldId);
evt.preventDefault(); evt.preventDefault();
}, },

View file

@ -70,6 +70,7 @@
.card-details-items .card-details-items
display: flex display: flex
flex-wrap: wrap
margin: 15px 0 margin: 15px 0
.card-details-item .card-details-item
@ -80,8 +81,8 @@
&.card-details-item-members, &.card-details-item-members,
&.card-details-item-start, &.card-details-item-start,
&.card-details-item-due &.card-details-item-due
width: 50% max-width: 50%
flex-shrink: 1 flex-grow: 1
.card-details-item-title .card-details-item-title
font-size: 14px font-size: 14px

View file

@ -35,12 +35,17 @@ BlazeComponent.extendComponent({
const members = formComponent.members.get(); const members = formComponent.members.get();
const labelIds = formComponent.labels.get(); const labelIds = formComponent.labels.get();
const customFields = formComponent.customFields.get();
console.log("members", members);
console.log("labelIds", labelIds);
console.log("customFields", customFields);
if (title) { if (title) {
const _id = Cards.insert({ const _id = Cards.insert({
title, title,
members, members,
labelIds, labelIds,
customFields,
listId: this.data()._id, listId: this.data()._id,
boardId: this.data().board()._id, boardId: this.data().board()._id,
sort: sortIndex, sort: sortIndex,
@ -121,11 +126,13 @@ BlazeComponent.extendComponent({
onCreated() { onCreated() {
this.labels = new ReactiveVar([]); this.labels = new ReactiveVar([]);
this.members = new ReactiveVar([]); this.members = new ReactiveVar([]);
this.customFields = new ReactiveVar([]);
}, },
reset() { reset() {
this.labels.set([]); this.labels.set([]);
this.members.set([]); this.members.set([]);
this.customFields.set([]);
}, },
getLabels() { getLabels() {

View file

@ -38,6 +38,21 @@ Cards.attachSchema(new SimpleSchema({
} }
}, },
}, },
customFields: {
type: [Object],
optional: true,
},
'customFields.$': {
type: new SimpleSchema({
_id: {
type: String,
},
value: {
type: Match.OneOf(String,Number,Boolean,Date),
optional: true,
},
})
},
dateLastActivity: { dateLastActivity: {
type: Date, type: Date,
autoValue() { autoValue() {
@ -238,6 +253,24 @@ Cards.mutations({
} }
}, },
assignCustomField(customFieldId) {
console.log("assignCustomField", customFieldId);
return {$push: {customFields: {_id: customFieldId, value: null}}};
},
unassignCustomField(customFieldId) {
console.log("unassignCustomField", customFieldId);
return {$pull: {customFields: {_id: customFieldId}}};
},
toggleCustomField(customFieldId) {
if (this.customFields && this.customFields[customFieldId]) {
return this.unassignCustomField(customFieldId);
} else {
return this.assignCustomField(customFieldId);
}
},
setCover(coverId) { setCover(coverId) {
return {$set: {coverId}}; return {$set: {coverId}};
}, },