Option to add custom field to all cards

This commit is contained in:
John R. Supplee 2021-01-22 21:28:37 +02:00
parent 0c3b92567e
commit 74d93a6adc
8 changed files with 48 additions and 2 deletions

View file

@ -76,6 +76,12 @@ CustomFields.attachSchema(
*/
type: Boolean,
},
alwaysOnCard: {
/**
* should the custom field be automatically added to all cards?
*/
type: Boolean,
},
showLabelOnMiniCard: {
/**
* should the label of the custom field be shown on minicards?
@ -111,6 +117,19 @@ CustomFields.attachSchema(
}),
);
CustomFields.addToAllCards = cf => {
Cards.update(
{
boardId: { $in: cf.boardIds },
customFields: { $not: { $elemMatch: { _id: cf._id } } },
},
{
$push: { customFields: { _id: cf._id, value: null } },
},
{ multi: true },
);
};
CustomFields.mutations({
addBoard(boardId) {
if (boardId) {
@ -198,6 +217,10 @@ if (Meteor.isServer) {
CustomFields.after.insert((userId, doc) => {
customFieldCreation(userId, doc);
if (doc.alwaysOnCard) {
CustomFields.addToAllCards(doc);
}
});
CustomFields.before.update((userId, doc, fieldNames, modifier) => {
@ -224,6 +247,11 @@ if (Meteor.isServer) {
}
});
CustomFields.after.update((userId, doc) => {
if (doc.alwaysOnCard) {
CustomFields.addToAllCards(doc);
}
});
CustomFields.before.remove((userId, doc) => {
customFieldDeletion(userId, doc);
Activities.remove({