mirror of https://github.com/wekan/wekan
The Open Source kanban (built with Meteor). Keep variable/table/field names camelCase. For translations, only add Pull Request changes to wekan/i18n/en.i18n.json , other translations are done at https://transifex.com/wekan/wekan only.
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
2.4 KiB
73 lines
2.4 KiB
BlazeComponent.extendComponent({
|
|
template: function() {
|
|
return 'listBody';
|
|
},
|
|
|
|
isSelected: function() {
|
|
return Session.equals('currentCard', this.currentData()._id);
|
|
},
|
|
|
|
addCard: function(evt) {
|
|
evt.preventDefault();
|
|
var textarea = $(evt.currentTarget).find('textarea');
|
|
var title = textarea.val();
|
|
var position = this.currentData().position;
|
|
var sortIndex;
|
|
if (position === 'top') {
|
|
sortIndex = Utils.getSortIndex(null, this.find('.js-minicard:first'));
|
|
} else if (position === 'bottom') {
|
|
sortIndex = Utils.getSortIndex(this.find('.js-minicard:last'), null);
|
|
}
|
|
|
|
// Clear the form in-memory cache
|
|
// var inputCacheKey = "addCard-" + this.listId;
|
|
// InputsCache.set(inputCacheKey, '');
|
|
|
|
// title trim if not empty then
|
|
if ($.trim(title)) {
|
|
Cards.insert({
|
|
title: title,
|
|
listId: this.data()._id,
|
|
boardId: this.data().board()._id,
|
|
sort: sortIndex
|
|
}, function(err, _id) {
|
|
// In case the filter is active we need to add the newly
|
|
// inserted card in the list of exceptions -- cards that are
|
|
// not filtered. Otherwise the card will disappear instantly.
|
|
// See https://github.com/libreboard/libreboard/issues/80
|
|
Filter.addException(_id);
|
|
});
|
|
|
|
// We keep the form opened, empty it, and scroll to it.
|
|
textarea.val('').focus();
|
|
Utils.Scroll(this.find('.js-minicards')).top(1000, true);
|
|
}
|
|
},
|
|
|
|
events: function() {
|
|
return [{
|
|
submit: this.addCard,
|
|
'keydown form textarea': function(evt) {
|
|
// Pressing Enter should submit the card
|
|
if (evt.keyCode === 13) {
|
|
evt.preventDefault();
|
|
$(evt.currentTarget).parents('form:first').submit();
|
|
|
|
// Pressing Tab should open the form of the next column, and Maj+Tab go
|
|
// in the reverse order
|
|
} else if (evt.keyCode === 9) {
|
|
evt.preventDefault();
|
|
var isReverse = evt.shiftKey;
|
|
var list = $('#js-list-' + this.data()._id);
|
|
var nextList = list[isReverse ? 'prev' : 'next']('.js-list').get(0) ||
|
|
$('.js-list:' + (isReverse ? 'last' : 'first')).get(0);
|
|
var nextListComponent = BlazeComponent.getComponentForElement(nextList);
|
|
|
|
// XXX Get the real position
|
|
var position = 'bottom';
|
|
nextListComponent.openForm({position: position});
|
|
}
|
|
}
|
|
}];
|
|
}
|
|
}).register('listBody');
|
|
|