add cardNumber handling to card and board model

This commit is contained in:
Kai Lehmann 2021-08-02 21:41:30 +02:00
parent 36c2cb9573
commit b57eae14d4
3 changed files with 72 additions and 0 deletions

View file

@ -375,6 +375,14 @@ Boards.attachSchema(
defaultValue: true,
},
allowsCardNumber: {
/**
* Does the board allows card numbers?
*/
type: Boolean,
defaultValue: false,
},
allowsActivities: {
/**
* Does the board allows comments?
@ -1056,6 +1064,16 @@ Boards.helpers({
return result;
},
getNextCardNumber() {
const boardCards = Cards.find({ boardId: this._id }).fetch();
if (boardCards.length == 0) {
return 1;
}
const maxCardNumber = Math.max(...boardCards
.map(c => c.cardNumber ? c.cardNumber : 0));
return maxCardNumber + 1;
},
cardsDueInBetween(start, end) {
return Cards.find({
boardId: this._id,
@ -1285,6 +1303,10 @@ Boards.mutations({
return { $set: { allowsDescriptionTitle } };
},
setAllowsCardNumber(allowsCardNumber) {
return { $set: { allowsCardNumber } };
},
setAllowsDescriptionText(allowsDescriptionText) {
return { $set: { allowsDescriptionText } };
},

View file

@ -470,6 +470,16 @@ Cards.attachSchema(
optional: true,
defaultValue: [],
},
cardNumber: {
/**
* A boardwise sequentially increasing number that is assigned
* to every newly created card
*/
type: Number,
decimal: true,
optional: true,
defaultValue: 0,
},
}),
);
@ -1647,6 +1657,10 @@ Cards.helpers({
}
},
getCardNumber() {
return this.cardNumber;
},
getBoardTitle() {
if (this.isLinkedCard()) {
const card = Cards.findOne({ _id: this.linkedId });
@ -3207,6 +3221,8 @@ if (Meteor.isServer) {
Authentication.checkAdminOrCondition(req.userId, addPermission);
const paramListId = req.params.listId;
const paramParentId = req.params.parentId;
const nextCardNumber = board.getNextCardNumber();
const currentCards = Cards.find(
{
listId: paramListId,
@ -3229,6 +3245,7 @@ if (Meteor.isServer) {
userId: req.body.authorId,
swimlaneId: req.body.swimlaneId,
sort: currentCards.count(),
cardNumber: nextCardNumber,
members,
assignees,
});

View file

@ -1061,3 +1061,36 @@ Migrations.add('add-hide-logo-by-default', () => {
noValidateMulti,
);
});
Migrations.add('add-card-number-allowed', () => {
Boards.update(
{
allowsCardNumber: {
$exists: false,
},
},
{
$set: {
allowsCardNumber: false,
},
},
noValidateMulti,
);
});
Migrations.add('assign-boardwise-card-numbers', () => {
Boards.find().forEach(board => {
let nextCardNumber = 1;
Cards.find(
{
boardId: board._id,
cardNumber: {
$exists: false
}
}
).forEach(card => {
Cards.update(card._id, { $set: { cardNumber } }, noValidate);
nextCardNumber++;
});
})
});