From 3eb4d2c341b712268bd321173909e0a7b19a88c9 Mon Sep 17 00:00:00 2001 From: Justin Reynolds Date: Fri, 28 Jun 2019 12:52:09 -0500 Subject: Prettier & eslint project style update --- client/components/cards/attachments.js | 39 ++- client/components/cards/cardCustomFields.js | 95 +++---- client/components/cards/cardDate.js | 186 ++++++------- client/components/cards/cardDetails.js | 389 ++++++++++++++++------------ client/components/cards/cardTime.js | 62 +++-- client/components/cards/checklists.js | 70 +++-- client/components/cards/labels.js | 42 +-- client/components/cards/minicard.js | 15 +- client/components/cards/subtasks.js | 56 ++-- 9 files changed, 538 insertions(+), 416 deletions(-) (limited to 'client/components/cards') diff --git a/client/components/cards/attachments.js b/client/components/cards/attachments.js index e3dc143a..6b3e38a5 100644 --- a/client/components/cards/attachments.js +++ b/client/components/cards/attachments.js @@ -1,10 +1,11 @@ Template.attachmentsGalery.events({ 'click .js-add-attachment': Popup.open('cardAttachments'), - 'click .js-confirm-delete': Popup.afterConfirm('attachmentDelete', + 'click .js-confirm-delete': Popup.afterConfirm( + 'attachmentDelete', function() { Attachments.remove(this._id); Popup.close(); - } + }, ), // If we let this event bubble, FlowRouter will handle it and empty the page // content, see #101. @@ -17,8 +18,8 @@ Template.attachmentsGalery.events({ 'click .js-remove-cover'() { Cards.findOne(this.cardId).unsetCover(); }, - 'click .js-preview-image'(evt) { - Popup.open('previewAttachedImage').call(this, evt); + 'click .js-preview-image'(event) { + Popup.open('previewAttachedImage').call(this, event); // when multiple thumbnails, if click one then another very fast, // we might get a wrong width from previous img. // when popup reused, onRendered() won't be called, so we cannot get there. @@ -31,31 +32,29 @@ Template.attachmentsGalery.events({ // if the image is too large, we resize & center the popup. if (w > 300) { $('div.pop-over').css({ - width: (w + 20), + width: w + 20, position: 'absolute', - left: (window.innerWidth - w)/2, - top: (window.innerHeight - h)/2, + left: (window.innerWidth - w) / 2, + top: (window.innerHeight - h) / 2, }); } }; - const url = $(evt.currentTarget).attr('src'); - if (img.src === url && img.complete) - rePosPopup(); - else - img.onload = rePosPopup; + const url = $(event.currentTarget).attr('src'); + if (img.src === url && img.complete) rePosPopup(); + else img.onload = rePosPopup; }, }); Template.previewAttachedImagePopup.events({ - 'click .js-large-image-clicked'(){ + 'click .js-large-image-clicked'() { Popup.close(); }, }); Template.cardAttachmentsPopup.events({ - 'change .js-attach-file'(evt) { + 'change .js-attach-file'(event) { const card = this; - FS.Utility.eachFile(evt, (f) => { + FS.Utility.eachFile(event, f => { const file = new FS.File(f); if (card.isLinkedCard()) { file.boardId = Cards.findOne(card.linkedId).boardId; @@ -77,9 +76,9 @@ Template.cardAttachmentsPopup.events({ Popup.close(); }); }, - 'click .js-computer-upload'(evt, tpl) { - tpl.find('.js-attach-file').click(); - evt.preventDefault(); + 'click .js-computer-upload'(event, templateInstance) { + templateInstance.find('.js-attach-file').click(); + event.preventDefault(); }, 'click .js-upload-clipboard-image': Popup.open('previewClipboardImage'), }); @@ -88,7 +87,7 @@ let pastedResults = null; Template.previewClipboardImagePopup.onRendered(() => { // we can paste image from clipboard - $(document.body).pasteImageReader((results) => { + $(document.body).pasteImageReader(results => { if (results.dataURL.startsWith('data:image/')) { $('img.preview-clipboard-image').attr('src', results.dataURL); pastedResults = results; @@ -96,7 +95,7 @@ Template.previewClipboardImagePopup.onRendered(() => { }); // we can also drag & drop image file to it - $(document.body).dropImageReader((results) => { + $(document.body).dropImageReader(results => { if (results.dataURL.startsWith('data:image/')) { $('img.preview-clipboard-image').attr('src', results.dataURL); pastedResults = results; diff --git a/client/components/cards/cardCustomFields.js b/client/components/cards/cardCustomFields.js index aa50caec..d0b9c72d 100644 --- a/client/components/cards/cardCustomFields.js +++ b/client/components/cards/cardCustomFields.js @@ -7,22 +7,21 @@ Template.cardCustomFieldsPopup.helpers({ }); Template.cardCustomFieldsPopup.events({ - 'click .js-select-field'(evt) { + 'click .js-select-field'(event) { const card = Cards.findOne(Session.get('currentCard')); const customFieldId = this._id; card.toggleCustomField(customFieldId); - evt.preventDefault(); + event.preventDefault(); }, - 'click .js-settings'(evt) { + 'click .js-settings'(event) { EscapeActions.executeUpTo('detailsPane'); Sidebar.setView('customFields'); - evt.preventDefault(); + event.preventDefault(); }, }); // cardCustomField const CardCustomField = BlazeComponent.extendComponent({ - getTemplate() { return `cardCustomField-${this.data().definition.type}`; }, @@ -34,52 +33,55 @@ const CardCustomField = BlazeComponent.extendComponent({ }, canModifyCard() { - return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly(); + return ( + Meteor.user() && + Meteor.user().isBoardMember() && + !Meteor.user().isCommentOnly() + ); }, }); CardCustomField.register('cardCustomField'); // cardCustomField-text (class extends CardCustomField { - onCreated() { super.onCreated(); } events() { - return [{ - 'submit .js-card-customfield-text'(evt) { - evt.preventDefault(); - const value = this.currentComponent().getValue(); - this.card.setCustomField(this.customFieldId, value); + return [ + { + 'submit .js-card-customfield-text'(event) { + event.preventDefault(); + const value = this.currentComponent().getValue(); + this.card.setCustomField(this.customFieldId, value); + }, }, - }]; + ]; } - -}).register('cardCustomField-text'); +}.register('cardCustomField-text')); // cardCustomField-number (class extends CardCustomField { - onCreated() { super.onCreated(); } events() { - return [{ - 'submit .js-card-customfield-number'(evt) { - evt.preventDefault(); - const value = parseInt(this.find('input').value, 10); - this.card.setCustomField(this.customFieldId, value); + return [ + { + 'submit .js-card-customfield-number'(event) { + event.preventDefault(); + const value = parseInt(this.find('input').value, 10); + this.card.setCustomField(this.customFieldId, value); + }, }, - }]; + ]; } - -}).register('cardCustomField-number'); +}.register('cardCustomField-number')); // cardCustomField-date (class extends CardCustomField { - onCreated() { super.onCreated(); const self = this; @@ -108,8 +110,10 @@ CardCustomField.register('cardCustomField'); } classes() { - if (this.date.get().isBefore(this.now.get(), 'minute') && - this.now.get().isBefore(this.data().value)) { + if ( + this.date.get().isBefore(this.now.get(), 'minute') && + this.now.get().isBefore(this.data().value) + ) { return 'current'; } return ''; @@ -120,12 +124,13 @@ CardCustomField.register('cardCustomField'); } events() { - return [{ - 'click .js-edit-date': Popup.open('cardCustomField-date'), - }]; + return [ + { + 'click .js-edit-date': Popup.open('cardCustomField-date'), + }, + ]; } - -}).register('cardCustomField-date'); +}.register('cardCustomField-date')); // cardCustomField-datePopup (class extends DatePicker { @@ -144,11 +149,10 @@ CardCustomField.register('cardCustomField'); _deleteDate() { this.card.setCustomField(this.customFieldId, ''); } -}).register('cardCustomField-datePopup'); +}.register('cardCustomField-datePopup')); // cardCustomField-dropdown (class extends CardCustomField { - onCreated() { super.onCreated(); this._items = this.data().definition.settings.dropdownItems; @@ -160,20 +164,23 @@ CardCustomField.register('cardCustomField'); } selectedItem() { - const selected = this._items.find((item) => { + const selected = this._items.find(item => { return item._id === this.data().value; }); - return (selected) ? selected.name : TAPi18n.__('custom-field-dropdown-unknown'); + return selected + ? selected.name + : TAPi18n.__('custom-field-dropdown-unknown'); } events() { - return [{ - 'submit .js-card-customfield-dropdown'(evt) { - evt.preventDefault(); - const value = this.find('select').value; - this.card.setCustomField(this.customFieldId, value); + return [ + { + 'submit .js-card-customfield-dropdown'(event) { + event.preventDefault(); + const value = this.find('select').value; + this.card.setCustomField(this.customFieldId, value); + }, }, - }]; + ]; } - -}).register('cardCustomField-dropdown'); +}.register('cardCustomField-dropdown')); diff --git a/client/components/cards/cardDate.js b/client/components/cards/cardDate.js index 182705d5..91205f1c 100644 --- a/client/components/cards/cardDate.js +++ b/client/components/cards/cardDate.js @@ -11,15 +11,20 @@ BlazeComponent.extendComponent({ }, onRendered() { - const $picker = this.$('.js-datepicker').datepicker({ - todayHighlight: true, - todayBtn: 'linked', - language: TAPi18n.getLanguage(), - }).on('changeDate', function(evt) { - this.find('#date').value = moment(evt.date).format('L'); - this.error.set(''); - this.find('#time').focus(); - }.bind(this)); + const $picker = this.$('.js-datepicker') + .datepicker({ + todayHighlight: true, + todayBtn: 'linked', + language: TAPi18n.getLanguage(), + }) + .on( + 'changeDate', + function(evt) { + this.find('#date').value = moment(evt.date).format('L'); + this.error.set(''); + this.find('#time').focus(); + }.bind(this), + ); if (this.date.get().isValid()) { $picker.datepicker('update', this.date.get().toDate()); @@ -27,13 +32,11 @@ BlazeComponent.extendComponent({ }, showDate() { - if (this.date.get().isValid()) - return this.date.get().format('L'); + if (this.date.get().isValid()) return this.date.get().format('L'); return ''; }, showTime() { - if (this.date.get().isValid()) - return this.date.get().format('LT'); + if (this.date.get().isValid()) return this.date.get().format('LT'); return ''; }, dateFormat() { @@ -44,51 +47,58 @@ BlazeComponent.extendComponent({ }, events() { - return [{ - 'keyup .js-date-field'() { - // parse for localized date format in strict mode - const dateMoment = moment(this.find('#date').value, 'L', true); - if (dateMoment.isValid()) { - this.error.set(''); - this.$('.js-datepicker').datepicker('update', dateMoment.toDate()); - } - }, - 'keyup .js-time-field'() { - // parse for localized time format in strict mode - const dateMoment = moment(this.find('#time').value, 'LT', true); - if (dateMoment.isValid()) { - this.error.set(''); - } - }, - 'submit .edit-date'(evt) { - evt.preventDefault(); - - // if no time was given, init with 12:00 - const time = evt.target.time.value || moment(new Date().setHours(12, 0, 0)).format('LT'); - - const dateString = `${evt.target.date.value} ${time}`; - const newDate = moment(dateString, 'L LT', true); - if (newDate.isValid()) { - this._storeDate(newDate.toDate()); + return [ + { + 'keyup .js-date-field'() { + // parse for localized date format in strict mode + const dateMoment = moment(this.find('#date').value, 'L', true); + if (dateMoment.isValid()) { + this.error.set(''); + this.$('.js-datepicker').datepicker('update', dateMoment.toDate()); + } + }, + 'keyup .js-time-field'() { + // parse for localized time format in strict mode + const dateMoment = moment(this.find('#time').value, 'LT', true); + if (dateMoment.isValid()) { + this.error.set(''); + } + }, + 'submit .edit-date'(evt) { + evt.preventDefault(); + + // if no time was given, init with 12:00 + const time = + evt.target.time.value || + moment(new Date().setHours(12, 0, 0)).format('LT'); + + const dateString = `${evt.target.date.value} ${time}`; + const newDate = moment(dateString, 'L LT', true); + if (newDate.isValid()) { + this._storeDate(newDate.toDate()); + Popup.close(); + } else { + this.error.set('invalid-date'); + evt.target.date.focus(); + } + }, + 'click .js-delete-date'(evt) { + evt.preventDefault(); + this._deleteDate(); Popup.close(); - } - else { - this.error.set('invalid-date'); - evt.target.date.focus(); - } - }, - 'click .js-delete-date'(evt) { - evt.preventDefault(); - this._deleteDate(); - Popup.close(); + }, }, - }]; + ]; }, }); Template.dateBadge.helpers({ canModifyCard() { - return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly(); + return ( + Meteor.user() && + Meteor.user().isBoardMember() && + !Meteor.user().isCommentOnly() + ); }, }); @@ -96,7 +106,8 @@ Template.dateBadge.helpers({ (class extends DatePicker { onCreated() { super.onCreated(); - this.data().getReceived() && this.date.set(moment(this.data().getReceived())); + this.data().getReceived() && + this.date.set(moment(this.data().getReceived())); } _storeDate(date) { @@ -106,8 +117,7 @@ Template.dateBadge.helpers({ _deleteDate() { this.card.setReceived(null); } -}).register('editCardReceivedDatePopup'); - +}.register('editCardReceivedDatePopup')); // editCardStartDatePopup (class extends DatePicker { @@ -119,7 +129,10 @@ Template.dateBadge.helpers({ onRendered() { super.onRendered(); if (moment.isDate(this.card.getReceived())) { - this.$('.js-datepicker').datepicker('setStartDate', this.card.getReceived()); + this.$('.js-datepicker').datepicker( + 'setStartDate', + this.card.getReceived(), + ); } } @@ -130,7 +143,7 @@ Template.dateBadge.helpers({ _deleteDate() { this.card.setStart(null); } -}).register('editCardStartDatePopup'); +}.register('editCardStartDatePopup')); // editCardDueDatePopup (class extends DatePicker { @@ -153,7 +166,7 @@ Template.dateBadge.helpers({ _deleteDate() { this.card.setDue(null); } -}).register('editCardDueDatePopup'); +}.register('editCardDueDatePopup')); // editCardEndDatePopup (class extends DatePicker { @@ -176,8 +189,7 @@ Template.dateBadge.helpers({ _deleteDate() { this.card.setEnd(null); } -}).register('editCardEndDatePopup'); - +}.register('editCardEndDatePopup')); // Display received, start, due & end dates const CardDate = BlazeComponent.extendComponent({ @@ -224,17 +236,20 @@ class CardReceivedDate extends CardDate { const startAt = this.data().getStart(); const theDate = this.date.get(); // if dueAt, endAt and startAt exist & are > receivedAt, receivedAt doesn't need to be flagged - if (((startAt) && (theDate.isAfter(dueAt))) || - ((endAt) && (theDate.isAfter(endAt))) || - ((dueAt) && (theDate.isAfter(dueAt)))) + if ( + (startAt && theDate.isAfter(dueAt)) || + (endAt && theDate.isAfter(endAt)) || + (dueAt && theDate.isAfter(dueAt)) + ) classes += 'long-overdue'; - else - classes += 'current'; + else classes += 'current'; return classes; } showTitle() { - return `${TAPi18n.__('card-received-on')} ${this.date.get().format('LLLL')}`; + return `${TAPi18n.__('card-received-on')} ${this.date + .get() + .format('LLLL')}`; } events() { @@ -261,13 +276,10 @@ class CardStartDate extends CardDate { const theDate = this.date.get(); const now = this.now.get(); // if dueAt or endAt exist & are > startAt, startAt doesn't need to be flagged - if (((endAt) && (theDate.isAfter(endAt))) || - ((dueAt) && (theDate.isAfter(dueAt)))) + if ((endAt && theDate.isAfter(endAt)) || (dueAt && theDate.isAfter(dueAt))) classes += 'long-overdue'; - else if (theDate.isBefore(now, 'minute')) - classes += 'almost-due'; - else - classes += 'current'; + else if (theDate.isBefore(now, 'minute')) classes += 'almost-due'; + else classes += 'current'; return classes; } @@ -298,17 +310,12 @@ class CardDueDate extends CardDate { const theDate = this.date.get(); const now = this.now.get(); // if the due date is after the end date, green - done early - if ((endAt) && (theDate.isAfter(endAt))) - classes += 'current'; + if (endAt && theDate.isAfter(endAt)) classes += 'current'; // if there is an end date, don't need to flag the due date - else if (endAt) - classes += ''; - else if (now.diff(theDate, 'days') >= 2) - classes += 'long-overdue'; - else if (now.diff(theDate, 'minute') >= 0) - classes += 'due'; - else if (now.diff(theDate, 'days') >= -1) - classes += 'almost-due'; + else if (endAt) classes += ''; + else if (now.diff(theDate, 'days') >= 2) classes += 'long-overdue'; + else if (now.diff(theDate, 'minute') >= 0) classes += 'due'; + else if (now.diff(theDate, 'days') >= -1) classes += 'almost-due'; return classes; } @@ -337,12 +344,9 @@ class CardEndDate extends CardDate { let classes = 'end-date' + ' '; const dueAt = this.data().getDue(); const theDate = this.date.get(); - if (theDate.diff(dueAt, 'days') >= 2) - classes += 'long-overdue'; - else if (theDate.diff(dueAt, 'days') >= 0) - classes += 'due'; - else if (theDate.diff(dueAt, 'days') >= -2) - classes += 'almost-due'; + if (theDate.diff(dueAt, 'days') >= 2) classes += 'long-overdue'; + else if (theDate.diff(dueAt, 'days') >= 0) classes += 'due'; + else if (theDate.diff(dueAt, 'days') >= -2) classes += 'almost-due'; return classes; } @@ -362,22 +366,22 @@ CardEndDate.register('cardEndDate'); showDate() { return this.date.get().format('l'); } -}).register('minicardReceivedDate'); +}.register('minicardReceivedDate')); (class extends CardStartDate { showDate() { return this.date.get().format('l'); } -}).register('minicardStartDate'); +}.register('minicardStartDate')); (class extends CardDueDate { showDate() { return this.date.get().format('l'); } -}).register('minicardDueDate'); +}.register('minicardDueDate')); (class extends CardEndDate { showDate() { return this.date.get().format('l'); } -}).register('minicardEndDate'); +}.register('minicardEndDate')); diff --git a/client/components/cards/cardDetails.js b/client/components/cards/cardDetails.js index 2d875ca2..781967ae 100644 --- a/client/components/cards/cardDetails.js +++ b/client/components/cards/cardDetails.js @@ -27,7 +27,7 @@ BlazeComponent.extendComponent({ onCreated() { this.currentBoard = Boards.findOne(Session.get('currentBoard')); this.isLoaded = new ReactiveVar(false); - const boardBody = this.parentComponent().parentComponent(); + const boardBody = this.parentComponent().parentComponent(); //in Miniview parent is Board, not BoardBody. if (boardBody !== null) { boardBody.showOverlay.set(true); @@ -48,7 +48,11 @@ BlazeComponent.extendComponent({ }, canModifyCard() { - return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly(); + return ( + Meteor.user() && + Meteor.user().isBoardMember() && + !Meteor.user().isCommentOnly() + ); }, scrollParentContainer() { @@ -80,18 +84,17 @@ BlazeComponent.extendComponent({ const cardContainerScrollTop = $cardContainer.scrollTop(); let topOffset = false; - if(cardViewStartTop !== 100){ + if (cardViewStartTop !== 100) { topOffset = cardViewStartTop - 100; } - if(topOffset !== false) { + if (topOffset !== false) { bodyBoardComponent.scrollTop(cardContainerScrollTop + topOffset); } - }, presentParentTask() { let result = this.currentBoard.presentParentTask; - if ((result === null) || (result === undefined)) { + if (result === null || result === undefined) { result = 'no-parent'; } return result; @@ -116,7 +119,13 @@ BlazeComponent.extendComponent({ onRendered() { if (!Utils.isMiniScreen()) { Meteor.setTimeout(() => { - $('.card-details').mCustomScrollbar({theme:'minimal-dark', setWidth: false, setLeft: 0, scrollbarPosition: 'outside', mouseWheel: true }); + $('.card-details').mCustomScrollbar({ + theme: 'minimal-dark', + setWidth: false, + setLeft: 0, + scrollbarPosition: 'outside', + mouseWheel: true, + }); this.scrollParentContainer(); }, 500); } @@ -212,7 +221,7 @@ BlazeComponent.extendComponent({ }, onDestroyed() { - const parentComponent = this.parentComponent().parentComponent(); + const parentComponent = this.parentComponent().parentComponent(); //on mobile view parent is Board, not board body. if (parentComponent === null) return; parentComponent.showOverlay.set(false); @@ -228,56 +237,64 @@ BlazeComponent.extendComponent({ }, }; - return [{ - ...events, - 'click .js-close-card-details' () { - Utils.goBoardId(this.data().boardId); - }, - 'click .js-open-card-details-menu': Popup.open('cardDetailsActions'), - 'submit .js-card-description' (evt) { - evt.preventDefault(); - const description = this.currentComponent().getValue(); - this.data().setDescription(description); - }, - 'submit .js-card-details-title' (evt) { - evt.preventDefault(); - const title = this.currentComponent().getValue().trim(); - if (title) { - this.data().setTitle(title); - } - }, - 'submit .js-card-details-assigner'(evt) { - evt.preventDefault(); - const assigner = this.currentComponent().getValue().trim(); - if (assigner) { - this.data().setAssignedBy(assigner); - } - }, - 'submit .js-card-details-requester'(evt) { - evt.preventDefault(); - const requester = this.currentComponent().getValue().trim(); - if (requester) { - this.data().setRequestedBy(requester); - } - }, - 'click .js-member': Popup.open('cardMember'), - 'click .js-add-members': Popup.open('cardMembers'), - 'click .js-add-labels': Popup.open('cardLabels'), - 'click .js-received-date': Popup.open('editCardReceivedDate'), - 'click .js-start-date': Popup.open('editCardStartDate'), - 'click .js-due-date': Popup.open('editCardDueDate'), - 'click .js-end-date': Popup.open('editCardEndDate'), - 'mouseenter .js-card-details' () { - const parentComponent = this.parentComponent().parentComponent(); - //on mobile view parent is Board, not BoardBody. - if (parentComponent === null) return; - parentComponent.showOverlay.set(true); - parentComponent.mouseHasEnterCardDetails = true; - }, - 'click #toggleButton'() { - Meteor.call('toggleSystemMessages'); + return [ + { + ...events, + 'click .js-close-card-details'() { + Utils.goBoardId(this.data().boardId); + }, + 'click .js-open-card-details-menu': Popup.open('cardDetailsActions'), + 'submit .js-card-description'(event) { + event.preventDefault(); + const description = this.currentComponent().getValue(); + this.data().setDescription(description); + }, + 'submit .js-card-details-title'(event) { + event.preventDefault(); + const title = this.currentComponent() + .getValue() + .trim(); + if (title) { + this.data().setTitle(title); + } + }, + 'submit .js-card-details-assigner'(event) { + event.preventDefault(); + const assigner = this.currentComponent() + .getValue() + .trim(); + if (assigner) { + this.data().setAssignedBy(assigner); + } + }, + 'submit .js-card-details-requester'(event) { + event.preventDefault(); + const requester = this.currentComponent() + .getValue() + .trim(); + if (requester) { + this.data().setRequestedBy(requester); + } + }, + 'click .js-member': Popup.open('cardMember'), + 'click .js-add-members': Popup.open('cardMembers'), + 'click .js-add-labels': Popup.open('cardLabels'), + 'click .js-received-date': Popup.open('editCardReceivedDate'), + 'click .js-start-date': Popup.open('editCardStartDate'), + 'click .js-due-date': Popup.open('editCardDueDate'), + 'click .js-end-date': Popup.open('editCardEndDate'), + 'mouseenter .js-card-details'() { + const parentComponent = this.parentComponent().parentComponent(); + //on mobile view parent is Board, not BoardBody. + if (parentComponent === null) return; + parentComponent.showOverlay.set(true); + parentComponent.mouseHasEnterCardDetails = true; + }, + 'click #toggleButton'() { + Meteor.call('toggleSystemMessages'); + }, }, - }]; + ]; }, }).register('cardDetails'); @@ -297,7 +314,9 @@ BlazeComponent.extendComponent({ close(isReset = false) { if (this.isOpen.get() && !isReset) { const draft = this.getValue().trim(); - if (draft !== Cards.findOne(Session.get('currentCard')).getDescription()) { + if ( + draft !== Cards.findOne(Session.get('currentCard')).getDescription() + ) { UnsavedEdits.set(this._getUnsavedEditKey(), this.getValue()); } } @@ -311,12 +330,14 @@ BlazeComponent.extendComponent({ events() { const parentEvents = InlinedForm.prototype.events()[0]; - return [{ - ...parentEvents, - 'click .js-close-inlined-form': this.reset, - }]; + return [ + { + ...parentEvents, + 'click .js-close-inlined-form': this.reset, + }, + ]; } -}).register('inlinedCardDescription'); +}.register('inlinedCardDescription')); Template.cardDetailsActionsPopup.helpers({ isWatching() { @@ -324,7 +345,11 @@ Template.cardDetailsActionsPopup.helpers({ }, canModifyCard() { - return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly(); + return ( + Meteor.user() && + Meteor.user().isBoardMember() && + !Meteor.user().isCommentOnly() + ); }, }); @@ -342,23 +367,31 @@ Template.cardDetailsActionsPopup.events({ 'click .js-copy-card': Popup.open('copyCard'), 'click .js-copy-checklist-cards': Popup.open('copyChecklistToManyCards'), 'click .js-set-card-color': Popup.open('setCardColor'), - 'click .js-move-card-to-top' (evt) { - evt.preventDefault(); - const minOrder = _.min(this.list().cards(this.swimlaneId).map((c) => c.sort)); + 'click .js-move-card-to-top'(event) { + event.preventDefault(); + const minOrder = _.min( + this.list() + .cards(this.swimlaneId) + .map(c => c.sort), + ); this.move(this.boardId, this.swimlaneId, this.listId, minOrder - 1); }, - 'click .js-move-card-to-bottom' (evt) { - evt.preventDefault(); - const maxOrder = _.max(this.list().cards(this.swimlaneId).map((c) => c.sort)); + 'click .js-move-card-to-bottom'(event) { + event.preventDefault(); + const maxOrder = _.max( + this.list() + .cards(this.swimlaneId) + .map(c => c.sort), + ); this.move(this.boardId, this.swimlaneId, this.listId, maxOrder + 1); }, - 'click .js-archive' (evt) { - evt.preventDefault(); + 'click .js-archive'(event) { + event.preventDefault(); this.archive(); Popup.close(); }, 'click .js-more': Popup.open('cardMore'), - 'click .js-toggle-watch-card' () { + 'click .js-toggle-watch-card'() { const currentCard = this; const level = currentCard.findWatcher(Meteor.userId()) ? null : 'watching'; Meteor.call('watch', 'card', currentCard._id, level, (err, ret) => { @@ -367,15 +400,15 @@ Template.cardDetailsActionsPopup.events({ }, }); -Template.editCardTitleForm.onRendered(function () { +Template.editCardTitleForm.onRendered(function() { autosize(this.$('.js-edit-card-title')); }); Template.editCardTitleForm.events({ - 'keydown .js-edit-card-title' (evt) { + 'keydown .js-edit-card-title'(event) { // If enter key was pressed, submit the data // Unless the shift key is also being pressed - if (evt.keyCode === 13 && !evt.shiftKey) { + if (event.keyCode === 13 && !event.shiftKey) { $('.js-submit-edit-card-title-form').click(); } }, @@ -386,9 +419,9 @@ Template.editCardRequesterForm.onRendered(function() { }); Template.editCardRequesterForm.events({ - 'keydown .js-edit-card-requester'(evt) { + 'keydown .js-edit-card-requester'(event) { // If enter key was pressed, submit the data - if (evt.keyCode === 13) { + if (event.keyCode === 13) { $('.js-submit-edit-card-requester-form').click(); } }, @@ -399,16 +432,16 @@ Template.editCardAssignerForm.onRendered(function() { }); Template.editCardAssignerForm.events({ - 'keydown .js-edit-card-assigner'(evt) { + 'keydown .js-edit-card-assigner'(event) { // If enter key was pressed, submit the data - if (evt.keyCode === 13) { + if (event.keyCode === 13) { $('.js-submit-edit-card-assigner-form').click(); } }, }); Template.moveCardPopup.events({ - 'click .js-done' () { + 'click .js-done'() { // XXX We should *not* get the currentCard from the global state, but // instead from a “component” state. const card = Cards.findOne(Session.get('currentCard')); @@ -429,13 +462,16 @@ BlazeComponent.extendComponent({ }, boards() { - const boards = Boards.find({ - archived: false, - 'members.userId': Meteor.userId(), - _id: {$ne: Meteor.user().getTemplatesBoardId()}, - }, { - sort: ['title'], - }); + const boards = Boards.find( + { + archived: false, + 'members.userId': Meteor.userId(), + _id: { $ne: Meteor.user().getTemplatesBoardId() }, + }, + { + sort: ['title'], + }, + ); return boards; }, @@ -450,12 +486,14 @@ BlazeComponent.extendComponent({ }, events() { - return [{ - 'change .js-select-boards'(evt) { - this.selectedBoardId.set($(evt.currentTarget).val()); - subManager.subscribe('board', this.selectedBoardId.get(), false); + return [ + { + 'change .js-select-boards'(event) { + this.selectedBoardId.set($(event.currentTarget).val()); + subManager.subscribe('board', this.selectedBoardId.get(), false); + }, }, - }]; + ]; }, }).register('boardsAndLists'); @@ -471,7 +509,9 @@ Template.copyCardPopup.events({ const textarea = $('#copy-card-title'); const title = textarea.val().trim(); // insert new card to the bottom of new list - card.sort = Lists.findOne(card.listId).cards().count(); + card.sort = Lists.findOne(card.listId) + .cards() + .count(); if (title) { card.title = title; @@ -489,7 +529,7 @@ Template.copyCardPopup.events({ }); Template.copyChecklistToManyCardsPopup.events({ - 'click .js-done' () { + 'click .js-done'() { const card = Cards.findOne(Session.get('currentCard')); const oldId = card._id; card._id = null; @@ -502,11 +542,13 @@ Template.copyChecklistToManyCardsPopup.events({ const textarea = $('#copy-card-title'); const titleEntry = textarea.val().trim(); // insert new card to the bottom of new list - card.sort = Lists.findOne(card.listId).cards().count(); + card.sort = Lists.findOne(card.listId) + .cards() + .count(); if (titleEntry) { const titleList = JSON.parse(titleEntry); - for (let i = 0; i < titleList.length; i++){ + for (let i = 0; i < titleList.length; i++) { const obj = titleList[i]; card.title = obj.title; card.description = obj.description; @@ -519,12 +561,12 @@ Template.copyChecklistToManyCardsPopup.events({ Filter.addException(_id); // copy checklists - Checklists.find({cardId: oldId}).forEach((ch) => { + Checklists.find({ cardId: oldId }).forEach(ch => { ch.copy(_id); }); // copy subtasks - cursor = Cards.find({parentId: oldId}); + cursor = Cards.find({ parentId: oldId }); cursor.forEach(function() { 'use strict'; const subtask = arguments[0]; @@ -534,7 +576,7 @@ Template.copyChecklistToManyCardsPopup.events({ }); // copy card comments - CardComments.find({cardId: oldId}).forEach((cmt) => { + CardComments.find({ cardId: oldId }).forEach(cmt => { cmt.copy(_id); }); } @@ -550,7 +592,7 @@ BlazeComponent.extendComponent({ }, colors() { - return cardColors.map((color) => ({ color, name: '' })); + return cardColors.map(color => ({ color, name: '' })); }, isSelected(color) { @@ -561,19 +603,21 @@ BlazeComponent.extendComponent({ }, events() { - return [{ - 'click .js-palette-color'() { - this.currentColor.set(this.currentData().color); - }, - 'click .js-submit' () { - this.currentCard.setColor(this.currentColor.get()); - Popup.close(); + return [ + { + 'click .js-palette-color'() { + this.currentColor.set(this.currentData().color); + }, + 'click .js-submit'() { + this.currentCard.setColor(this.currentColor.get()); + Popup.close(); + }, + 'click .js-remove-color'() { + this.currentCard.setColor(null); + Popup.close(); + }, }, - 'click .js-remove-color'() { - this.currentCard.setColor(null); - Popup.close(); - }, - }]; + ]; }, }).register('setCardColorPopup'); @@ -592,15 +636,18 @@ BlazeComponent.extendComponent({ }, boards() { - const boards = Boards.find({ - archived: false, - 'members.userId': Meteor.userId(), - _id: { - $ne: Meteor.user().getTemplatesBoardId(), + const boards = Boards.find( + { + archived: false, + 'members.userId': Meteor.userId(), + _id: { + $ne: Meteor.user().getTemplatesBoardId(), + }, }, - }, { - sort: ['title'], - }); + { + sort: ['title'], + }, + ); return boards; }, @@ -609,7 +656,7 @@ BlazeComponent.extendComponent({ if (this.parentBoard.get()) { return Cards.find({ boardId: this.parentBoard.get(), - _id: {$ne: currentId}, + _id: { $ne: currentId }, }); } else { return []; @@ -642,63 +689,69 @@ BlazeComponent.extendComponent({ }, events() { - return [{ - 'click .js-copy-card-link-to-clipboard' () { - // Clipboard code from: - // https://stackoverflow.com/questions/6300213/copy-selected-text-to-the-clipboard-without-using-flash-must-be-cross-browser - const StringToCopyElement = document.getElementById('cardURL'); - StringToCopyElement.select(); - if (document.execCommand('copy')) { - StringToCopyElement.blur(); - } else { - document.getElementById('cardURL').selectionStart = 0; - document.getElementById('cardURL').selectionEnd = 999; - document.execCommand('copy'); - if (window.getSelection) { - if (window.getSelection().empty) { // Chrome - window.getSelection().empty(); - } else if (window.getSelection().removeAllRanges) { // Firefox - window.getSelection().removeAllRanges(); + return [ + { + 'click .js-copy-card-link-to-clipboard'() { + // Clipboard code from: + // https://stackoverflow.com/questions/6300213/copy-selected-text-to-the-clipboard-without-using-flash-must-be-cross-browser + const StringToCopyElement = document.getElementById('cardURL'); + StringToCopyElement.select(); + if (document.execCommand('copy')) { + StringToCopyElement.blur(); + } else { + document.getElementById('cardURL').selectionStart = 0; + document.getElementById('cardURL').selectionEnd = 999; + document.execCommand('copy'); + if (window.getSelection) { + if (window.getSelection().empty) { + // Chrome + window.getSelection().empty(); + } else if (window.getSelection().removeAllRanges) { + // Firefox + window.getSelection().removeAllRanges(); + } + } else if (document.selection) { + // IE? + document.selection.empty(); } - } else if (document.selection) { // IE? - document.selection.empty(); } - } - }, - 'click .js-delete': Popup.afterConfirm('cardDelete', function () { - Popup.close(); - Cards.remove(this._id); - Utils.goBoardId(this.boardId); - }), - 'change .js-field-parent-board'(evt) { - const selection = $(evt.currentTarget).val(); - const list = $('.js-field-parent-card'); - if (selection === 'none') { - this.parentBoard.set(null); - } else { - subManager.subscribe('board', $(evt.currentTarget).val(), false); - this.parentBoard.set(selection); - list.prop('disabled', false); - } - this.setParentCardId(null); - }, - 'change .js-field-parent-card'(evt) { - const selection = $(evt.currentTarget).val(); - this.setParentCardId(selection); + }, + 'click .js-delete': Popup.afterConfirm('cardDelete', function() { + Popup.close(); + Cards.remove(this._id); + Utils.goBoardId(this.boardId); + }), + 'change .js-field-parent-board'(event) { + const selection = $(event.currentTarget).val(); + const list = $('.js-field-parent-card'); + if (selection === 'none') { + this.parentBoard.set(null); + } else { + subManager.subscribe('board', $(event.currentTarget).val(), false); + this.parentBoard.set(selection); + list.prop('disabled', false); + } + this.setParentCardId(null); + }, + 'change .js-field-parent-card'(event) { + const selection = $(event.currentTarget).val(); + this.setParentCardId(selection); + }, }, - }]; + ]; }, }).register('cardMorePopup'); - // Close the card details pane by pressing escape -EscapeActions.register('detailsPane', +EscapeActions.register( + 'detailsPane', () => { Utils.goBoardId(Session.get('currentBoard')); }, () => { return !Session.equals('currentCard', null); - }, { + }, + { noClickEscapeOn: '.js-card-details,.board-sidebar,#header', - } + }, ); diff --git a/client/components/cards/cardTime.js b/client/components/cards/cardTime.js index 80b7fc84..d8a41aaa 100644 --- a/client/components/cards/cardTime.js +++ b/client/components/cards/cardTime.js @@ -20,29 +20,31 @@ BlazeComponent.extendComponent({ this.card.setSpentTime(null); }, events() { - return [{ - //TODO : need checking this portion - 'submit .edit-time'(evt) { - evt.preventDefault(); + return [ + { + //TODO : need checking this portion + 'submit .edit-time'(evt) { + evt.preventDefault(); - const spentTime = parseFloat(evt.target.time.value); - const isOvertime = this.card.getIsOvertime(); + const spentTime = parseFloat(evt.target.time.value); + const isOvertime = this.card.getIsOvertime(); - if (spentTime >= 0) { - this.storeTime(spentTime, isOvertime); + if (spentTime >= 0) { + this.storeTime(spentTime, isOvertime); + Popup.close(); + } else { + this.error.set('invalid-time'); + evt.target.time.focus(); + } + }, + 'click .js-delete-time'(evt) { + evt.preventDefault(); + this.deleteTime(); Popup.close(); - } else { - this.error.set('invalid-time'); - evt.target.time.focus(); - } + }, + 'click a.js-toggle-overtime': this.toggleOvertime, }, - 'click .js-delete-time'(evt) { - evt.preventDefault(); - this.deleteTime(); - Popup.close(); - }, - 'click a.js-toggle-overtime': this.toggleOvertime, - }]; + ]; }, }).register('editCardSpentTimePopup'); @@ -56,23 +58,33 @@ BlazeComponent.extendComponent({ }, showTitle() { if (this.data().getIsOvertime()) { - return `${TAPi18n.__('overtime')} ${this.data().getSpentTime()} ${TAPi18n.__('hours')}`; + return `${TAPi18n.__( + 'overtime', + )} ${this.data().getSpentTime()} ${TAPi18n.__('hours')}`; } else { - return `${TAPi18n.__('card-spent')} ${this.data().getSpentTime()} ${TAPi18n.__('hours')}`; + return `${TAPi18n.__( + 'card-spent', + )} ${this.data().getSpentTime()} ${TAPi18n.__('hours')}`; } }, showTime() { return this.data().getSpentTime(); }, events() { - return [{ - 'click .js-edit-time': Popup.open('editCardSpentTime'), - }]; + return [ + { + 'click .js-edit-time': Popup.open('editCardSpentTime'), + }, + ]; }, }).register('cardSpentTime'); Template.timeBadge.helpers({ canModifyCard() { - return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly(); + return ( + Meteor.user() && + Meteor.user().isBoardMember() && + !Meteor.user().isCommentOnly() + ); }, }); diff --git a/client/components/cards/checklists.js b/client/components/cards/checklists.js index 5d789351..57939eb8 100644 --- a/client/components/cards/checklists.js +++ b/client/components/cards/checklists.js @@ -64,20 +64,22 @@ BlazeComponent.extendComponent({ }, canModifyCard() { - return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly(); + return ( + Meteor.user() && + Meteor.user().isBoardMember() && + !Meteor.user().isCommentOnly() + ); }, }).register('checklistDetail'); BlazeComponent.extendComponent({ - addChecklist(event) { event.preventDefault(); const textarea = this.find('textarea.js-add-checklist-item'); const title = textarea.value.trim(); let cardId = this.currentData().cardId; const card = Cards.findOne(cardId); - if (card.isLinked()) - cardId = card.linkedId; + if (card.isLinked()) cardId = card.linkedId; if (title) { Checklists.insert({ @@ -86,7 +88,9 @@ BlazeComponent.extendComponent({ sort: card.checklists().count(), }); setTimeout(() => { - this.$('.add-checklist-item').last().click(); + this.$('.add-checklist-item') + .last() + .click(); }, 100); } textarea.value = ''; @@ -113,7 +117,11 @@ BlazeComponent.extendComponent({ }, canModifyCard() { - return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly(); + return ( + Meteor.user() && + Meteor.user().isBoardMember() && + !Meteor.user().isCommentOnly() + ); }, deleteChecklist() { @@ -167,37 +175,43 @@ BlazeComponent.extendComponent({ events() { const events = { 'click .toggle-delete-checklist-dialog'(event) { - if($(event.target).hasClass('js-delete-checklist')){ + if ($(event.target).hasClass('js-delete-checklist')) { this.checklistToDelete = this.currentData().checklist; //Store data context } this.toggleDeleteDialog.set(!this.toggleDeleteDialog.get()); }, }; - return [{ - ...events, - 'submit .js-add-checklist': this.addChecklist, - 'submit .js-edit-checklist-title': this.editChecklist, - 'submit .js-add-checklist-item': this.addChecklistItem, - 'submit .js-edit-checklist-item': this.editChecklistItem, - 'click .js-delete-checklist-item': this.deleteItem, - 'click .confirm-checklist-delete': this.deleteChecklist, - keydown: this.pressKey, - }]; + return [ + { + ...events, + 'submit .js-add-checklist': this.addChecklist, + 'submit .js-edit-checklist-title': this.editChecklist, + 'submit .js-add-checklist-item': this.addChecklistItem, + 'submit .js-edit-checklist-item': this.editChecklistItem, + 'click .js-delete-checklist-item': this.deleteItem, + 'click .confirm-checklist-delete': this.deleteChecklist, + keydown: this.pressKey, + }, + ]; }, }).register('checklists'); Template.checklistDeleteDialog.onCreated(() => { const $cardDetails = this.$('.card-details'); - this.scrollState = { position: $cardDetails.scrollTop(), //save current scroll position + this.scrollState = { + position: $cardDetails.scrollTop(), //save current scroll position top: false, //required for smooth scroll animation }; //Callback's purpose is to only prevent scrolling after animation is complete - $cardDetails.animate({ scrollTop: 0 }, 500, () => { this.scrollState.top = true; }); + $cardDetails.animate({ scrollTop: 0 }, 500, () => { + this.scrollState.top = true; + }); //Prevent scrolling while dialog is open $cardDetails.on('scroll', () => { - if(this.scrollState.top) { //If it's already in position, keep it there. Otherwise let animation scroll + if (this.scrollState.top) { + //If it's already in position, keep it there. Otherwise let animation scroll $cardDetails.scrollTop(0); } }); @@ -206,12 +220,16 @@ Template.checklistDeleteDialog.onCreated(() => { Template.checklistDeleteDialog.onDestroyed(() => { const $cardDetails = this.$('.card-details'); $cardDetails.off('scroll'); //Reactivate scrolling - $cardDetails.animate( { scrollTop: this.scrollState.position }); + $cardDetails.animate({ scrollTop: this.scrollState.position }); }); Template.checklistItemDetail.helpers({ canModifyCard() { - return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly(); + return ( + Meteor.user() && + Meteor.user().isBoardMember() && + !Meteor.user().isCommentOnly() + ); }, }); @@ -224,8 +242,10 @@ BlazeComponent.extendComponent({ } }, events() { - return [{ - 'click .js-checklist-item .check-box': this.toggleItem, - }]; + return [ + { + 'click .js-checklist-item .check-box': this.toggleItem, + }, + ]; }, }).register('checklistItemDetail'); diff --git a/client/components/cards/labels.js b/client/components/cards/labels.js index cdd5a700..1e156f54 100644 --- a/client/components/cards/labels.js +++ b/client/components/cards/labels.js @@ -9,7 +9,7 @@ BlazeComponent.extendComponent({ }, labels() { - return labelColors.map((color) => ({ color, name: '' })); + return labelColors.map(color => ({ color, name: '' })); }, isSelected(color) { @@ -17,11 +17,13 @@ BlazeComponent.extendComponent({ }, events() { - return [{ - 'click .js-palette-color'() { - this.currentColor.set(this.currentData().color); + return [ + { + 'click .js-palette-color'() { + this.currentColor.set(this.currentData().color); + }, }, - }]; + ]; }, }).register('formLabel'); @@ -38,19 +40,19 @@ Template.createLabelPopup.helpers({ }); Template.cardLabelsPopup.events({ - 'click .js-select-label'(evt) { + 'click .js-select-label'(event) { const card = Cards.findOne(Session.get('currentCard')); const labelId = this._id; card.toggleLabel(labelId); - evt.preventDefault(); + event.preventDefault(); }, 'click .js-edit-label': Popup.open('editLabel'), 'click .js-add-label': Popup.open('createLabel'), }); Template.formLabel.events({ - 'click .js-palette-color'(evt) { - const $this = $(evt.currentTarget); + 'click .js-palette-color'(event) { + const $this = $(event.currentTarget); // hide selected ll colors $('.js-palette-select').addClass('hide'); @@ -62,11 +64,14 @@ Template.formLabel.events({ Template.createLabelPopup.events({ // Create the new label - 'submit .create-label'(evt, tpl) { - evt.preventDefault(); + 'submit .create-label'(event, templateInstance) { + event.preventDefault(); const board = Boards.findOne(Session.get('currentBoard')); - const name = tpl.$('#labelName').val().trim(); - const color = Blaze.getData(tpl.find('.fa-check')).color; + const name = templateInstance + .$('#labelName') + .val() + .trim(); + const color = Blaze.getData(templateInstance.find('.fa-check')).color; board.addLabel(name, color); Popup.back(); }, @@ -78,11 +83,14 @@ Template.editLabelPopup.events({ board.removeLabel(this._id); Popup.back(2); }), - 'submit .edit-label'(evt, tpl) { - evt.preventDefault(); + 'submit .edit-label'(event, templateInstance) { + event.preventDefault(); const board = Boards.findOne(Session.get('currentBoard')); - const name = tpl.$('#labelName').val().trim(); - const color = Blaze.getData(tpl.find('.fa-check')).color; + const name = templateInstance + .$('#labelName') + .val() + .trim(); + const color = Blaze.getData(templateInstance.find('.fa-check')).color; board.editLabel(this._id, name, color); Popup.back(); }, diff --git a/client/components/cards/minicard.js b/client/components/cards/minicard.js index da7f9e01..0718c629 100644 --- a/client/components/cards/minicard.js +++ b/client/components/cards/minicard.js @@ -8,13 +8,14 @@ BlazeComponent.extendComponent({ }, events() { - return [{ - 'click .js-linked-link' () { - if (this.data().isLinkedCard()) - Utils.goCardId(this.data().linkedId); - else if (this.data().isLinkedBoard()) - Utils.goBoardId(this.data().linkedId); + return [ + { + 'click .js-linked-link'() { + if (this.data().isLinkedCard()) Utils.goCardId(this.data().linkedId); + else if (this.data().isLinkedBoard()) + Utils.goBoardId(this.data().linkedId); + }, }, - }]; + ]; }, }).register('minicard'); diff --git a/client/components/cards/subtasks.js b/client/components/cards/subtasks.js index 1651d449..fab860bb 100644 --- a/client/components/cards/subtasks.js +++ b/client/components/cards/subtasks.js @@ -1,11 +1,14 @@ BlazeComponent.extendComponent({ canModifyCard() { - return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly(); + return ( + Meteor.user() && + Meteor.user().isBoardMember() && + !Meteor.user().isCommentOnly() + ); }, }).register('subtaskDetail'); BlazeComponent.extendComponent({ - addSubtask(event) { event.preventDefault(); const textarea = this.find('textarea.js-add-subtask-item'); @@ -38,9 +41,10 @@ BlazeComponent.extendComponent({ // See https://github.com/wekan/wekan/issues/80 Filter.addException(_id); - setTimeout(() => { - this.$('.add-subtask-item').last().click(); + this.$('.add-subtask-item') + .last() + .click(); }, 100); } textarea.value = ''; @@ -48,7 +52,11 @@ BlazeComponent.extendComponent({ }, canModifyCard() { - return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly(); + return ( + Meteor.user() && + Meteor.user().isBoardMember() && + !Meteor.user().isCommentOnly() + ); }, deleteSubtask() { @@ -85,13 +93,13 @@ BlazeComponent.extendComponent({ events() { const events = { 'click .toggle-delete-subtask-dialog'(event) { - if($(event.target).hasClass('js-delete-subtask')){ + if ($(event.target).hasClass('js-delete-subtask')) { this.subtaskToDelete = this.currentData().subtask; //Store data context } this.toggleDeleteDialog.set(!this.toggleDeleteDialog.get()); }, 'click .js-view-subtask'(event) { - if($(event.target).hasClass('js-view-subtask')){ + if ($(event.target).hasClass('js-view-subtask')) { const subtask = this.currentData().subtask; const board = subtask.board(); FlowRouter.go('card', { @@ -103,27 +111,33 @@ BlazeComponent.extendComponent({ }, }; - return [{ - ...events, - 'submit .js-add-subtask': this.addSubtask, - 'submit .js-edit-subtask-title': this.editSubtask, - 'click .confirm-subtask-delete': this.deleteSubtask, - keydown: this.pressKey, - }]; + return [ + { + ...events, + 'submit .js-add-subtask': this.addSubtask, + 'submit .js-edit-subtask-title': this.editSubtask, + 'click .confirm-subtask-delete': this.deleteSubtask, + keydown: this.pressKey, + }, + ]; }, }).register('subtasks'); Template.subtaskDeleteDialog.onCreated(() => { const $cardDetails = this.$('.card-details'); - this.scrollState = { position: $cardDetails.scrollTop(), //save current scroll position + this.scrollState = { + position: $cardDetails.scrollTop(), //save current scroll position top: false, //required for smooth scroll animation }; //Callback's purpose is to only prevent scrolling after animation is complete - $cardDetails.animate({ scrollTop: 0 }, 500, () => { this.scrollState.top = true; }); + $cardDetails.animate({ scrollTop: 0 }, 500, () => { + this.scrollState.top = true; + }); //Prevent scrolling while dialog is open $cardDetails.on('scroll', () => { - if(this.scrollState.top) { //If it's already in position, keep it there. Otherwise let animation scroll + if (this.scrollState.top) { + //If it's already in position, keep it there. Otherwise let animation scroll $cardDetails.scrollTop(0); } }); @@ -132,12 +146,16 @@ Template.subtaskDeleteDialog.onCreated(() => { Template.subtaskDeleteDialog.onDestroyed(() => { const $cardDetails = this.$('.card-details'); $cardDetails.off('scroll'); //Reactivate scrolling - $cardDetails.animate( { scrollTop: this.scrollState.position }); + $cardDetails.animate({ scrollTop: this.scrollState.position }); }); Template.subtaskItemDetail.helpers({ canModifyCard() { - return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly(); + return ( + Meteor.user() && + Meteor.user().isBoardMember() && + !Meteor.user().isCommentOnly() + ); }, }); -- cgit v1.2.3-1-g7c22