123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- import { ReactiveCache } from '/imports/reactiveCache';
- BlazeComponent.extendComponent({
- addSubtask(event) {
- event.preventDefault();
- const textarea = this.find('textarea.js-add-subtask-item');
- const title = textarea.value.trim();
- const cardId = this.currentData().cardId;
- const card = ReactiveCache.getCard(cardId);
- const sortIndex = -1;
- const crtBoard = ReactiveCache.getBoard(card.boardId);
- const targetBoard = crtBoard.getDefaultSubtasksBoard();
- const listId = targetBoard.getDefaultSubtasksListId();
- //Get the full swimlane data for the parent task.
- const parentSwimlane = ReactiveCache.getSwimlane({
- boardId: crtBoard._id,
- _id: card.swimlaneId,
- });
- //find the swimlane of the same name in the target board.
- const targetSwimlane = ReactiveCache.getSwimlane({
- boardId: targetBoard._id,
- title: parentSwimlane.title,
- });
- //If no swimlane with a matching title exists in the target board, fall back to the default swimlane.
- const swimlaneId =
- targetSwimlane === undefined
- ? targetBoard.getDefaultSwimline()._id
- : targetSwimlane._id;
- const nextCardNumber = targetBoard.getNextCardNumber();
- if (title) {
- const _id = Cards.insert({
- title,
- parentId: cardId,
- members: [],
- labelIds: [],
- customFields: [],
- listId,
- boardId: targetBoard._id,
- sort: sortIndex,
- swimlaneId,
- type: 'cardType-card',
- cardNumber: nextCardNumber
- });
- // In case the filter is active we need to add the newly inserted card in
- // the list of exceptions -- cards that are not filtered. Otherwise the
- // card will disappear instantly.
- // See https://github.com/wekan/wekan/issues/80
- Filter.addException(_id);
- setTimeout(() => {
- this.$('.add-subtask-item')
- .last()
- .click();
- }, 100);
- }
- textarea.value = '';
- textarea.focus();
- },
- deleteSubtask() {
- const subtask = this.currentData().subtask;
- if (subtask && subtask._id) {
- subtask.archive();
- }
- },
- isBoardAdmin() {
- return ReactiveCache.getCurrentUser().isBoardAdmin();
- },
- 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);
- },
- pressKey(event) {
- //If user press enter key inside a form, submit it
- //Unless the user is also holding down the 'shift' key
- if (event.keyCode === 13 && !event.shiftKey) {
- event.preventDefault();
- const $form = $(event.currentTarget).closest('form');
- $form.find('button[type=submit]').click();
- }
- },
- events() {
- return [
- {
- 'click .js-open-subtask-details-menu': Popup.open('subtaskActions'),
- 'submit .js-add-subtask': this.addSubtask,
- 'submit .js-edit-subtask-title': this.editSubtask,
- 'click .js-delete-subtask-item': this.deleteSubtask,
- keydown: this.pressKey,
- },
- ];
- },
- }).register('subtasks');
- BlazeComponent.extendComponent({
- // ...
- }).register('subtaskItemDetail');
- BlazeComponent.extendComponent({
- isBoardAdmin() {
- return ReactiveCache.getCurrentUser().isBoardAdmin();
- },
- events() {
- return [
- {
- 'click .js-view-subtask'(event) {
- if ($(event.target).hasClass('js-view-subtask')) {
- const subtask = this.currentData().subtask;
- const board = subtask.board();
- FlowRouter.go('card', {
- boardId: board._id,
- slug: board.slug,
- cardId: subtask._id,
- });
- }
- },
- 'click .js-delete-subtask' : Popup.afterConfirm('subtaskDelete', function () {
- Popup.back(2);
- const subtask = this.subtask;
- if (subtask && subtask._id) {
- subtask.archive();
- }
- }),
- }
- ]
- }
- }).register('subtaskActionsPopup');
- Template.editSubtaskItemForm.helpers({
- user() {
- return ReactiveCache.getUser(this.userId);
- },
- isBoardAdmin() {
- return ReactiveCache.getCurrentUser().isBoardAdmin();
- },
- });
|