summaryrefslogtreecommitdiffstats
path: root/client/components/cards
diff options
context:
space:
mode:
authorJustin Reynolds <justinr1234@gmail.com>2019-06-28 12:52:09 -0500
committerJustin Reynolds <justinr1234@gmail.com>2019-06-28 12:56:51 -0500
commit3eb4d2c341b712268bd321173909e0a7b19a88c9 (patch)
tree25a8fcb088f3984e72a5bd3ded9e6a45376e0693 /client/components/cards
parenta0a482aa8efb3255a523de4524c8e09453d5571f (diff)
downloadwekan-3eb4d2c341b712268bd321173909e0a7b19a88c9.tar.gz
wekan-3eb4d2c341b712268bd321173909e0a7b19a88c9.tar.bz2
wekan-3eb4d2c341b712268bd321173909e0a7b19a88c9.zip
Prettier & eslint project style update
Diffstat (limited to 'client/components/cards')
-rw-r--r--client/components/cards/attachments.js39
-rw-r--r--client/components/cards/cardCustomFields.js95
-rw-r--r--client/components/cards/cardDate.js186
-rw-r--r--client/components/cards/cardDetails.js389
-rw-r--r--client/components/cards/cardTime.js62
-rw-r--r--client/components/cards/checklists.js70
-rw-r--r--client/components/cards/labels.js42
-rw-r--r--client/components/cards/minicard.js15
-rw-r--r--client/components/cards/subtasks.js56
9 files changed, 538 insertions, 416 deletions
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()
+ );
},
});