Replace mquandalle:collection-mutations with collection helpers

This commit is contained in:
Harry Adel 2026-01-21 19:22:54 +02:00
parent aca661583d
commit 94a3575e2c
35 changed files with 718 additions and 1321 deletions

View file

@ -23,7 +23,7 @@ BlazeComponent.extendComponent({
events() {
return [
{
'click .js-restore-board'() {
async 'click .js-restore-board'() {
// TODO : Make isSandstorm variable global
const isSandstorm =
Meteor.settings &&
@ -31,10 +31,10 @@ BlazeComponent.extendComponent({
Meteor.settings.public.sandstorm;
if (isSandstorm && Utils.getCurrentBoardId()) {
const currentBoard = Utils.getCurrentBoard();
currentBoard.archive();
await currentBoard.archive();
}
const board = this.currentData();
board.restore();
await board.restore();
Utils.goBoardId(board._id);
},
'click .js-delete-board': Popup.afterConfirm('boardDelete', function() {

View file

@ -10,7 +10,7 @@ const UPCLS = 'fa-sort-up';
const sortCardsBy = new ReactiveVar('');
Template.boardChangeTitlePopup.events({
submit(event, templateInstance) {
async submit(event, templateInstance) {
const newTitle = templateInstance
.$('.js-board-name')
.val()
@ -20,8 +20,8 @@ Template.boardChangeTitlePopup.events({
.val()
.trim();
if (newTitle) {
this.rename(newTitle);
this.setDescription(newDesc);
await this.rename(newTitle);
await this.setDescription(newDesc);
Popup.back();
}
event.preventDefault();
@ -364,10 +364,10 @@ const CreateBoard = BlazeComponent.extendComponent({
}).register('createTemplateContainerPopup');
(class HeaderBarCreateBoard extends CreateBoard {
onSubmit(event) {
async onSubmit(event) {
super.onSubmit(event);
// Immediately star boards crated with the headerbar popup.
ReactiveCache.getCurrentUser().toggleBoardStar(this.boardId.get());
await ReactiveCache.getCurrentUser().toggleBoardStar(this.boardId.get());
}
}.register('headerBarCreateBoardPopup'));

View file

@ -143,7 +143,7 @@ BlazeComponent.extendComponent({
ui.placeholder.height(ui.helper.height());
EscapeActions.executeUpTo('popup-close');
},
stop(evt, ui) {
async stop(evt, ui) {
const prevBoardDom = ui.item.prev('.js-board').get(0);
const nextBoardDom = ui.item.next('.js-board').get(0);
const sortIndex = Utils.calculateIndex(prevBoardDom, nextBoardDom, 1);
@ -153,7 +153,7 @@ BlazeComponent.extendComponent({
$boards.sortable('cancel');
const currentUser = ReactiveCache.getCurrentUser();
if (currentUser && typeof currentUser.setBoardSortIndex === 'function') {
currentUser.setBoardSortIndex(board._id, sortIndex.base);
await currentUser.setBoardSortIndex(board._id, sortIndex.base);
}
},
});

View file

@ -17,10 +17,10 @@ BlazeComponent.extendComponent({
events() {
return [
{
'submit .js-card-description'(event) {
async 'submit .js-card-description'(event) {
event.preventDefault();
const description = this.currentComponent().getValue();
this.data().setDescription(description);
await this.data().setDescription(description);
},
// Pressing Ctrl+Enter should submit the form
'keydown form textarea'(evt) {

View file

@ -462,18 +462,18 @@ BlazeComponent.extendComponent({
const currentMode = Utils.getMobileMode();
Utils.setMobileMode(!currentMode);
},
'submit .js-card-description'(event) {
async 'submit .js-card-description'(event) {
event.preventDefault();
const description = this.currentComponent().getValue();
this.data().setDescription(description);
await this.data().setDescription(description);
},
'submit .js-card-details-title'(event) {
async 'submit .js-card-details-title'(event) {
event.preventDefault();
const title = this.currentComponent().getValue().trim();
if (title) {
this.data().setTitle(title);
await this.data().setTitle(title);
} else {
this.data().setTitle('');
await this.data().setTitle('');
}
},
'submit .js-card-details-assigner'(event) {
@ -500,23 +500,23 @@ BlazeComponent.extendComponent({
this.find('button[type=submit]').click();
}
},
'submit .js-card-details-sort'(event) {
async 'submit .js-card-details-sort'(event) {
event.preventDefault();
const sort = parseFloat(this.currentComponent()
.getValue()
.trim());
if (!Number.isNaN(sort)) {
let card = this.data();
card.move(card.boardId, card.swimlaneId, card.listId, sort);
await card.move(card.boardId, card.swimlaneId, card.listId, sort);
}
},
'change .js-select-card-details-lists'(event) {
async 'change .js-select-card-details-lists'(event) {
let card = this.data();
const listSelect = this.$('.js-select-card-details-lists')[0];
const listId = listSelect.options[listSelect.selectedIndex].value;
const minOrder = card.getMinSort(listId, card.swimlaneId);
card.move(card.boardId, card.swimlaneId, listId, minOrder - 1);
await card.move(card.boardId, card.swimlaneId, listId, minOrder - 1);
},
'click .js-go-to-linked-card'() {
Utils.goCardId(this.data().linkedId);
@ -554,8 +554,8 @@ BlazeComponent.extendComponent({
Session.set('cardDetailsIsDragging', false);
Session.set('cardDetailsIsMouseDown', false);
},
'click #toggleHideCheckedChecklistItems'() {
this.data().toggleHideCheckedChecklistItems();
async 'click #toggleHideCheckedChecklistItems'() {
await this.data().toggleHideCheckedChecklistItems();
},
'click #toggleCustomFieldsGridButton'() {
Meteor.call('toggleCustomFieldsGrid');
@ -862,21 +862,21 @@ Template.cardDetailsActionsPopup.events({
'click .js-convert-checklist-item-to-card': Popup.open('convertChecklistItemToCard'),
'click .js-copy-checklist-cards': Popup.open('copyManyCards'),
'click .js-set-card-color': Popup.open('setCardColor'),
'click .js-move-card-to-top'(event) {
async 'click .js-move-card-to-top'(event) {
event.preventDefault();
const minOrder = this.getMinSort();
this.move(this.boardId, this.swimlaneId, this.listId, minOrder - 1);
await this.move(this.boardId, this.swimlaneId, this.listId, minOrder - 1);
Popup.back();
},
'click .js-move-card-to-bottom'(event) {
async 'click .js-move-card-to-bottom'(event) {
event.preventDefault();
const maxOrder = this.getMaxSort();
this.move(this.boardId, this.swimlaneId, this.listId, maxOrder + 1);
await this.move(this.boardId, this.swimlaneId, this.listId, maxOrder + 1);
Popup.back();
},
'click .js-archive': Popup.afterConfirm('cardArchive', function () {
'click .js-archive': Popup.afterConfirm('cardArchive', async function () {
Popup.close();
this.archive();
await this.archive();
Utils.goBoardId(this.boardId);
}),
'click .js-more': Popup.open('cardMore'),
@ -1011,11 +1011,11 @@ Template.editCardAssignerForm.events({
const ret = ReactiveCache.getCurrentUser().getMoveAndCopyDialogOptions();
return ret;
}
setDone(cardId, options) {
async setDone(cardId, options) {
ReactiveCache.getCurrentUser().setMoveAndCopyDialogOption(this.currentBoardId, options);
const card = this.data();
let sortIndex = 0;
if (cardId) {
const targetCard = ReactiveCache.getCard(cardId);
if (targetCard) {
@ -1030,8 +1030,8 @@ Template.editCardAssignerForm.events({
// If no card selected, move to end
sortIndex = card.getMaxSort(options.listId, options.swimlaneId) + 1;
}
card.move(options.boardId, options.swimlaneId, options.listId, sortIndex);
await card.move(options.boardId, options.swimlaneId, options.listId, sortIndex);
}
}).register('moveCardPopup');
@ -1041,7 +1041,7 @@ Template.editCardAssignerForm.events({
const ret = ReactiveCache.getCurrentUser().getMoveAndCopyDialogOptions();
return ret;
}
setDone(cardId, options) {
async setDone(cardId, options) {
ReactiveCache.getCurrentUser().setMoveAndCopyDialogOption(this.currentBoardId, options);
const card = this.data();
@ -1056,7 +1056,7 @@ Template.editCardAssignerForm.events({
if (newCardId) {
const newCard = ReactiveCache.getCard(newCardId);
let sortIndex = 0;
if (cardId) {
const targetCard = ReactiveCache.getCard(cardId);
if (targetCard) {
@ -1071,8 +1071,8 @@ Template.editCardAssignerForm.events({
// If no card selected, copy to end
sortIndex = newCard.getMaxSort(options.listId, options.swimlaneId) + 1;
}
newCard.move(options.boardId, options.swimlaneId, options.listId, sortIndex);
await newCard.move(options.boardId, options.swimlaneId, options.listId, sortIndex);
}
// In case the filter is active we need to add the newly inserted card in
@ -1090,7 +1090,7 @@ Template.editCardAssignerForm.events({
const ret = ReactiveCache.getCurrentUser().getMoveAndCopyDialogOptions();
return ret;
}
setDone(cardId, options) {
async setDone(cardId, options) {
ReactiveCache.getCurrentUser().setMoveAndCopyDialogOption(this.currentBoardId, options);
const card = this.data();
@ -1106,7 +1106,7 @@ Template.editCardAssignerForm.events({
sort: 0,
});
const newCard = ReactiveCache.getCard(_id);
let sortIndex = 0;
if (cardId) {
const targetCard = ReactiveCache.getCard(cardId);
@ -1121,8 +1121,8 @@ Template.editCardAssignerForm.events({
} else {
sortIndex = newCard.getMaxSort(options.listId, options.swimlaneId) + 1;
}
newCard.move(options.boardId, options.swimlaneId, options.listId, sortIndex);
await newCard.move(options.boardId, options.swimlaneId, options.listId, sortIndex);
Filter.addException(_id);
}
@ -1135,7 +1135,7 @@ Template.editCardAssignerForm.events({
const ret = ReactiveCache.getCurrentUser().getMoveAndCopyDialogOptions();
return ret;
}
setDone(cardId, options) {
async setDone(cardId, options) {
ReactiveCache.getCurrentUser().setMoveAndCopyDialogOption(this.currentBoardId, options);
const card = this.data();
@ -1151,7 +1151,7 @@ Template.editCardAssignerForm.events({
if (newCardId) {
const newCard = ReactiveCache.getCard(newCardId);
let sortIndex = 0;
if (cardId) {
const targetCard = ReactiveCache.getCard(cardId);
if (targetCard) {
@ -1165,8 +1165,8 @@ Template.editCardAssignerForm.events({
} else {
sortIndex = newCard.getMaxSort(options.listId, options.swimlaneId) + 1;
}
newCard.move(options.boardId, options.swimlaneId, options.listId, sortIndex);
await newCard.move(options.boardId, options.swimlaneId, options.listId, sortIndex);
}
// In case the filter is active we need to add the newly inserted card in
@ -1202,14 +1202,14 @@ BlazeComponent.extendComponent({
'click .js-palette-color'() {
this.currentColor.set(this.currentData().color);
},
'click .js-submit'(event) {
async 'click .js-submit'(event) {
event.preventDefault();
this.currentCard.setColor(this.currentColor.get());
await this.currentCard.setColor(this.currentColor.get());
Popup.back();
},
'click .js-remove-color'(event) {
async 'click .js-remove-color'(event) {
event.preventDefault();
this.currentCard.setColor(null);
await this.currentCard.setColor(null);
Popup.back();
},
},
@ -1240,21 +1240,21 @@ BlazeComponent.extendComponent({
const color = colorClass ? colorClass.replace('card-details-', '') : null;
this.currentColor.set(color);
},
'click .js-submit'(event) {
async 'click .js-submit'(event) {
event.preventDefault();
const color = this.currentColor.get();
// Use MultiSelection to get selected cards and set color on each
ReactiveCache.getCards(MultiSelection.getMongoSelector()).forEach(card => {
card.setColor(color);
});
for (const card of ReactiveCache.getCards(MultiSelection.getMongoSelector())) {
await card.setColor(color);
}
Popup.back();
},
'click .js-remove-color'(event) {
async 'click .js-remove-color'(event) {
event.preventDefault();
// Use MultiSelection to get selected cards and remove color from each
ReactiveCache.getCards(MultiSelection.getMongoSelector()).forEach(card => {
card.setColor(null);
});
for (const card of ReactiveCache.getCards(MultiSelection.getMongoSelector())) {
await card.setColor(null);
}
Popup.back();
},
},
@ -1866,7 +1866,7 @@ BlazeComponent.extendComponent({
// Close the card details pane by pressing escape
EscapeActions.register(
'detailsPane',
() => {
async () => {
// if card description diverges from database due to editing
// ask user whether changes should be applied
if (ReactiveCache.getCurrentUser()) {
@ -1874,7 +1874,7 @@ EscapeActions.register(
currentDescription = document.getElementsByClassName("editor js-new-description-input").item(0)
if (currentDescription?.value && !(currentDescription.value === Utils.getCurrentCard().getDescription())) {
if (confirm(TAPi18n.__('rescue-card-description-dialogue'))) {
Utils.getCurrentCard().setDescription(document.getElementsByClassName("editor js-new-description-input").item(0).value);
await Utils.getCurrentCard().setDescription(document.getElementsByClassName("editor js-new-description-input").item(0).value);
// Save it!
console.log(document.getElementsByClassName("editor js-new-description-input").item(0).value);
console.log("current description", Utils.getCurrentCard().getDescription());

View file

@ -157,21 +157,21 @@ BlazeComponent.extendComponent({
textarea.focus();
},
editChecklist(event) {
async editChecklist(event) {
event.preventDefault();
const textarea = this.find('textarea.js-edit-checklist-item');
const title = textarea.value.trim();
const checklist = this.currentData().checklist;
checklist.setTitle(title);
await checklist.setTitle(title);
},
editChecklistItem(event) {
async editChecklistItem(event) {
event.preventDefault();
const textarea = this.find('textarea.js-edit-checklist-item');
const title = textarea.value.trim();
const item = this.currentData().item;
item.setTitle(title);
await item.setTitle(title);
},
pressKey(event) {
@ -321,20 +321,20 @@ BlazeComponent.extendComponent({
},
'click .js-move-checklist': Popup.open('moveChecklist'),
'click .js-copy-checklist': Popup.open('copyChecklist'),
'click .js-hide-checked-checklist-items'(event) {
async 'click .js-hide-checked-checklist-items'(event) {
event.preventDefault();
this.data().checklist.toggleHideCheckedChecklistItems();
await this.data().checklist.toggleHideCheckedChecklistItems();
Popup.back();
},
'click .js-hide-all-checklist-items'(event) {
async 'click .js-hide-all-checklist-items'(event) {
event.preventDefault();
this.data().checklist.toggleHideAllChecklistItems();
await this.data().checklist.toggleHideAllChecklistItems();
Popup.back();
},
'click .js-toggle-show-checklist-at-minicard'(event) {
async 'click .js-toggle-show-checklist-at-minicard'(event) {
event.preventDefault();
const checklist = this.data().checklist;
checklist.toggleShowChecklistAtMinicard();
await checklist.toggleShowChecklistAtMinicard();
Popup.back();
},
}
@ -365,11 +365,11 @@ Template.checklistItemDetail.helpers({
});
BlazeComponent.extendComponent({
toggleItem() {
async toggleItem() {
const checklist = this.currentData().checklist;
const item = this.currentData().item;
if (checklist && item && item._id) {
item.toggleItem();
await item.toggleItem();
}
},
events() {

View file

@ -91,10 +91,10 @@ BlazeComponent.extendComponent({
}
},
toggleChecklistItem() {
async toggleChecklistItem() {
const item = this.currentData();
if (item && item._id) {
item.toggleItem();
await item.toggleItem();
}
},
@ -319,15 +319,15 @@ Template.cardDetailsActionsPopup.events({
this.move(this.boardId, this.swimlaneId, this.listId, minOrder - 1);
Popup.back();
},
'click .js-move-card-to-bottom'(event) {
async 'click .js-move-card-to-bottom'(event) {
event.preventDefault();
const maxOrder = this.getMaxSort();
this.move(this.boardId, this.swimlaneId, this.listId, maxOrder + 1);
await this.move(this.boardId, this.swimlaneId, this.listId, maxOrder + 1);
Popup.back();
},
'click .js-archive': Popup.afterConfirm('cardArchive', function () {
'click .js-archive': Popup.afterConfirm('cardArchive', async function () {
Popup.close();
this.archive();
await this.archive();
Utils.goBoardId(this.boardId);
}),
'click .js-toggle-watch-card'() {

View file

@ -62,10 +62,10 @@ BlazeComponent.extendComponent({
textarea.focus();
},
deleteSubtask() {
async deleteSubtask() {
const subtask = this.currentData().subtask;
if (subtask && subtask._id) {
subtask.archive();
await subtask.archive();
}
},
@ -73,12 +73,12 @@ BlazeComponent.extendComponent({
return ReactiveCache.getCurrentUser().isBoardAdmin();
},
editSubtask(event) {
async editSubtask(event) {
event.preventDefault();
const textarea = this.find('textarea.js-edit-subtask-item');
const title = textarea.value.trim();
const subtask = this.currentData().subtask;
subtask.setTitle(title);
await subtask.setTitle(title);
},
pressKey(event) {
@ -105,10 +105,10 @@ BlazeComponent.extendComponent({
}).register('subtasks');
BlazeComponent.extendComponent({
toggleItem() {
async toggleItem() {
const item = this.currentData().item;
if (item && item._id) {
item.toggleItem();
await item.toggleItem();
}
},
events() {
@ -138,11 +138,11 @@ BlazeComponent.extendComponent({
});
}
},
'click .js-delete-subtask' : Popup.afterConfirm('subtaskDelete', function () {
'click .js-delete-subtask' : Popup.afterConfirm('subtaskDelete', async function () {
Popup.back(2);
const subtask = this.subtask;
if (subtask && subtask._id) {
subtask.archive();
await subtask.archive();
}
}),
}

View file

@ -22,14 +22,14 @@ BlazeComponent.extendComponent({
isBoardAdmin() {
return ReactiveCache.getCurrentUser().isBoardAdmin();
},
starred(check = undefined) {
async starred(check = undefined) {
const list = Template.currentData();
const status = list.isStarred();
if (check === undefined) {
// just check
return status;
} else {
list.star(!status);
await list.star(!status);
return !status;
}
},
@ -45,14 +45,14 @@ BlazeComponent.extendComponent({
return next;
}
},
editTitle(event) {
async editTitle(event) {
event.preventDefault();
const newTitle = this.childComponents('inlinedForm')[0]
.getValue()
.trim();
const list = this.currentData();
if (newTitle) {
list.rename(newTitle.trim());
await list.rename(newTitle.trim());
}
},
@ -226,9 +226,9 @@ Template.listActionPopup.events({
if (!err && ret) Popup.back();
});
},
'click .js-close-list'(event) {
async 'click .js-close-list'(event) {
event.preventDefault();
this.archive();
await this.archive();
Popup.back();
},
'click .js-set-wip-limit': Popup.open('setWipLimit'),
@ -255,26 +255,26 @@ BlazeComponent.extendComponent({
}
},
enableSoftLimit() {
async enableSoftLimit() {
const list = Template.currentData();
if (
list.getWipLimit('soft') &&
list.getWipLimit('value') < list.cards().length
) {
list.setWipLimit(list.cards().length);
await list.setWipLimit(list.cards().length);
}
Meteor.call('enableSoftLimit', Template.currentData()._id);
},
enableWipLimit() {
async enableWipLimit() {
const list = Template.currentData();
// Prevent user from using previously stored wipLimit.value if it is less than the current number of cards in the list
if (
!list.getWipLimit('enabled') &&
list.getWipLimit('value') < list.cards().length
) {
list.setWipLimit(list.cards().length);
await list.setWipLimit(list.cards().length);
}
Meteor.call('enableWipLimit', list._id);
},
@ -368,12 +368,12 @@ BlazeComponent.extendComponent({
'click .js-palette-color'() {
this.currentColor.set(this.currentData().color);
},
'click .js-submit'() {
this.currentList.setColor(this.currentColor.get());
async 'click .js-submit'() {
await this.currentList.setColor(this.currentColor.get());
Popup.close();
},
'click .js-remove-color'() {
this.currentList.setColor(null);
async 'click .js-remove-color'() {
await this.currentList.setColor(null);
Popup.close();
},
},

View file

@ -15,12 +15,12 @@ Template.bookmarks.helpers({
});
Template.bookmarks.events({
'click .js-toggle-star'(e) {
async 'click .js-toggle-star'(e) {
e.preventDefault();
const boardId = this._id;
const user = ReactiveCache.getCurrentUser();
if (user && boardId) {
user.toggleBoardStar(boardId);
await user.toggleBoardStar(boardId);
}
},
});
@ -42,12 +42,12 @@ Template.bookmarksPopup.helpers({
});
Template.bookmarksPopup.events({
'click .js-toggle-star'(e) {
async 'click .js-toggle-star'(e) {
e.preventDefault();
const boardId = this._id;
const user = ReactiveCache.getCurrentUser();
if (user && boardId) {
user.toggleBoardStar(boardId);
await user.toggleBoardStar(boardId);
}
},
});

View file

@ -327,9 +327,9 @@ Template.boardMenuPopup.events({
// You could add a toast notification here if available
}
}),
'click .js-archive-board ': Popup.afterConfirm('archiveBoard', function() {
'click .js-archive-board ': Popup.afterConfirm('archiveBoard', async function() {
const currentBoard = Utils.getCurrentBoard();
currentBoard.archive();
await currentBoard.archive();
// XXX We should have some kind of notification on top of the page to
// confirm that the board was successfully archived.
FlowRouter.go('home');
@ -382,7 +382,7 @@ Template.memberPopup.events({
Popup.back();
},
'click .js-change-role': Popup.open('changePermissions'),
'click .js-remove-member': Popup.afterConfirm('removeMember', function() {
'click .js-remove-member': Popup.afterConfirm('removeMember', async function() {
// This works from removing member from board, card members and assignees.
const boardId = Session.get('currentBoard');
const memberId = this.userId;
@ -392,7 +392,7 @@ Template.memberPopup.events({
ReactiveCache.getCards({ boardId, assignees: memberId }).forEach(card => {
card.unassignAssignee(memberId);
});
ReactiveCache.getBoard(boardId).removeMember(memberId);
await ReactiveCache.getBoard(boardId).removeMember(memberId);
Popup.back();
}),
'click .js-leave-member': Popup.afterConfirm('leaveBoard', () => {
@ -774,10 +774,10 @@ BlazeComponent.extendComponent({
events() {
return [
{
'click .js-select-background'(evt) {
async 'click .js-select-background'(evt) {
const currentBoard = Utils.getCurrentBoard();
const newColor = this.currentData().toString();
currentBoard.setColor(newColor);
await currentBoard.setColor(newColor);
evt.preventDefault();
},
},
@ -789,10 +789,10 @@ BlazeComponent.extendComponent({
events() {
return [
{
submit(event) {
async submit(event) {
const currentBoard = Utils.getCurrentBoard();
const backgroundImageURL = this.find('.js-board-background-image-url').value.trim();
currentBoard.setBackgroundImageURL(backgroundImageURL);
await currentBoard.setBackgroundImageURL(backgroundImageURL);
Utils.setBackgroundImage();
Popup.back();
event.preventDefault();
@ -1945,7 +1945,7 @@ Template.removeBoardTeamPopup.helpers({
});
Template.changePermissionsPopup.events({
'click .js-set-admin, click .js-set-normal, click .js-set-normal-assigned-only, click .js-set-no-comments, click .js-set-comment-only, click .js-set-comment-assigned-only, click .js-set-read-only, click .js-set-read-assigned-only, click .js-set-worker'(
async 'click .js-set-admin, click .js-set-normal, click .js-set-normal-assigned-only, click .js-set-no-comments, click .js-set-comment-only, click .js-set-comment-assigned-only, click .js-set-read-only, click .js-set-read-assigned-only, click .js-set-worker'(
event,
) {
const currentBoard = Utils.getCurrentBoard();
@ -1964,7 +1964,7 @@ Template.changePermissionsPopup.events({
const isReadAssignedOnly = $(event.currentTarget).hasClass('js-set-read-assigned-only');
const isNoComments = $(event.currentTarget).hasClass('js-set-no-comments');
const isWorker = $(event.currentTarget).hasClass('js-set-worker');
currentBoard.setMemberPermission(
await currentBoard.setMemberPermission(
memberId,
isAdmin,
isNoComments,

View file

@ -81,18 +81,18 @@ BlazeComponent.extendComponent({
events() {
return [
{
'click .js-restore-card'() {
async 'click .js-restore-card'() {
const card = this.currentData();
if (card.canBeRestored()) {
card.restore();
await card.restore();
}
},
'click .js-restore-all-cards'() {
this.archivedCards().forEach(card => {
async 'click .js-restore-all-cards'() {
for (const card of this.archivedCards()) {
if (card.canBeRestored()) {
card.restore();
await card.restore();
}
});
}
},
'click .js-delete-card': Popup.afterConfirm('cardDelete', function() {
@ -107,14 +107,14 @@ BlazeComponent.extendComponent({
Popup.back();
}),
'click .js-restore-list'() {
async 'click .js-restore-list'() {
const list = this.currentData();
list.restore();
await list.restore();
},
'click .js-restore-all-lists'() {
this.archivedLists().forEach(list => {
list.restore();
});
async 'click .js-restore-all-lists'() {
for (const list of this.archivedLists()) {
await list.restore();
}
},
'click .js-delete-list': Popup.afterConfirm('listDelete', function() {
@ -128,14 +128,14 @@ BlazeComponent.extendComponent({
Popup.back();
}),
'click .js-restore-swimlane'() {
async 'click .js-restore-swimlane'() {
const swimlane = this.currentData();
swimlane.restore();
await swimlane.restore();
},
'click .js-restore-all-swimlanes'() {
this.archivedSwimlanes().forEach(swimlane => {
swimlane.restore();
});
async 'click .js-restore-all-swimlanes'() {
for (const swimlane of this.archivedSwimlanes()) {
await swimlane.restore();
}
},
'click .js-delete-swimlane': Popup.afterConfirm(

View file

@ -8,14 +8,14 @@ Meteor.startup(() => {
});
BlazeComponent.extendComponent({
editTitle(event) {
async editTitle(event) {
event.preventDefault();
const newTitle = this.childComponents('inlinedForm')[0]
.getValue()
.trim();
const swimlane = this.currentData();
if (newTitle) {
swimlane.rename(newTitle.trim());
await swimlane.rename(newTitle.trim());
}
},
collapsed(check = undefined) {
@ -106,9 +106,9 @@ Template.editSwimlaneTitleForm.helpers({
Template.swimlaneActionPopup.events({
'click .js-set-swimlane-color': Popup.open('setSwimlaneColor'),
'click .js-set-swimlane-height': Popup.open('setSwimlaneHeight'),
'click .js-close-swimlane'(event) {
async 'click .js-close-swimlane'(event) {
event.preventDefault();
this.archive();
await this.archive();
Popup.back();
},
'click .js-move-swimlane': Popup.open('moveSwimlane'),
@ -183,20 +183,20 @@ BlazeComponent.extendComponent({
events() {
return [
{
'submit form'(event) {
async 'submit form'(event) {
event.preventDefault();
this.currentSwimlane.setColor(this.currentColor.get());
await this.currentSwimlane.setColor(this.currentColor.get());
Popup.back();
},
'click .js-palette-color'() {
this.currentColor.set(this.currentData().color);
},
'click .js-submit'() {
this.currentSwimlane.setColor(this.currentColor.get());
async 'click .js-submit'() {
await this.currentSwimlane.setColor(this.currentColor.get());
Popup.back();
},
'click .js-remove-color'() {
this.currentSwimlane.setColor(null);
async 'click .js-remove-color'() {
await this.currentSwimlane.setColor(null);
Popup.back();
},
},