Sum of cards. In Progress.

Thanks to xet7 !

Related #3796
This commit is contained in:
Lauri Ojansivu 2021-09-08 15:55:53 +03:00
parent a80ab6e47a
commit 8626b466b8
6 changed files with 53 additions and 0 deletions

View file

@ -4,6 +4,17 @@ template(name="listBody")
if cards.count
+inlinedForm(autoclose=false position="top")
+addCardForm(listId=_id position="top")
ul.sidebar-list
each customFieldsSum
li
+viewer
= name
if $eq customFieldsSum.type "number"
+viewer
= value
if $eq customFieldsSum.type "currency"
+viewer
= formattedCurrencyCustomFieldValue(value)
each (cardsWithLimit (idOrNull ../../_id))
a.minicard-wrapper.js-minicard(href=originRelativeUrl
class="{{#if cardIsSelected}}is-selected{{/if}}"

View file

@ -13,6 +13,13 @@ BlazeComponent.extendComponent({
return [];
},
customFieldsSum() {
return CustomFields.find({
boardIds: { $in: [Session.get('currentBoard')] },
showSumAtTopOfList: true,
});
},
openForm(options) {
options = options || {};
options.position = options.position || 'top';

View file

@ -77,6 +77,12 @@ template(name="createCustomFieldPopup")
span {{_ 'showLabel-field-on-card'}}
a.flex.js-field-show-sum-at-top-of-list(class="{{#if showSumAtTopOfList}}is-checked{{/if}}")
.materialCheckBox(class="{{#if showSumAtTopOfList}}is-checked{{/if}}")
span {{_ 'showSum-field-on-list'}}
button.primary.wide.left(type="button")
| {{_ 'save'}}
if _id

View file

@ -234,6 +234,14 @@ const CreateCustomFieldPopup = BlazeComponent.extendComponent({
$target.find('.materialCheckBox').toggleClass('is-checked');
$target.toggleClass('is-checked');
},
'click .js-field-show-sum-at-top-of-list'(evt) {
let $target = $(evt.target);
if (!$target.hasClass('js-field-show-sum-at-top-of-list')) {
$target = $target.parent();
}
$target.find('.materialCheckBox').toggleClass('is-checked');
$target.toggleClass('is-checked');
},
'click .primary'(evt) {
evt.preventDefault();
@ -248,6 +256,8 @@ const CreateCustomFieldPopup = BlazeComponent.extendComponent({
this.find('.js-field-automatically-on-card.is-checked') !== null,
alwaysOnCard:
this.find('.js-field-always-on-card.is-checked') !== null,
showSumAtTopOfList:
this.find('.js-field-show-sum-at-top-of-list.is-checked') !== null,
};
// insert or update

View file

@ -652,6 +652,7 @@
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Show field label on minicard",
"showSum-field-on-list": "Show sum of fields at top of list",
"yes": "Yes",
"no": "No",
"accounts": "Accounts",

View file

@ -101,6 +101,13 @@ CustomFields.attachSchema(
type: Boolean,
defaultValue: false,
},
showSumAtTopOfList: {
/**
* should the sum of the custom fields be shown at top of list?
*/
type: Boolean,
defaultValue: false,
},
createdAt: {
type: Date,
optional: true,
@ -347,6 +354,7 @@ if (Meteor.isServer) {
* @param {boolean} showOnCard should we show the custom field on cards?
* @param {boolean} automaticallyOnCard should the custom fields automatically be added on cards?
* @param {boolean} showLabelOnMiniCard should the label of the custom field be shown on minicards?
* @param {boolean} showSumAtTopOfList should the sum of the custom fields be shown at top of list?
* @return_type {_id: string}
*/
JsonRoutes.add('POST', '/api/boards/:boardId/custom-fields', function(
@ -363,6 +371,7 @@ if (Meteor.isServer) {
showOnCard: req.body.showOnCard,
automaticallyOnCard: req.body.automaticallyOnCard,
showLabelOnMiniCard: req.body.showLabelOnMiniCard,
showSumAtTopOfList: req.body.showSumAtTopOfList,
boardIds: [board._id],
});
@ -390,6 +399,7 @@ if (Meteor.isServer) {
* @param {boolean} showOnCard should we show the custom field on cards
* @param {boolean} automaticallyOnCard should the custom fields automatically be added on cards
* @param {boolean} showLabelOnMiniCard should the label of the custom field be shown on minicards
* @param {boolean} showSumAtTopOfList should the sum of the custom fields be shown at top of list
* @return_type {_id: string}
*/
JsonRoutes.add(
@ -444,6 +454,14 @@ if (Meteor.isServer) {
);
}
if (req.body.hasOwnProperty('showSumAtTopOfList')) {
CustomFields.direct.update(
{ _id: paramFieldId },
{ $set: { showSumAtTopOfList: req.body.showSumAtTopOfList } },
);
}
JsonRoutes.sendResult(res, {
code: 200,
data: { _id: paramFieldId },