Fix and improve linked cards

This commit is contained in:
Andrés Manelli 2018-08-21 22:20:45 +02:00
parent b881c3b908
commit 3e715bbcc9
3 changed files with 16 additions and 7 deletions

View file

@ -70,7 +70,7 @@ template(name="linkCardPopup")
label {{_ 'cards'}}: label {{_ 'cards'}}:
select.js-select-cards select.js-select-cards
each cards each cards
option(value="{{_id}}") {{title}} option(value="{{getId}}") {{getTitle}}
.edit-controls.clearfix .edit-controls.clearfix
input.primary.confirm.js-done(type="button" value="{{_ 'link'}}") input.primary.confirm.js-done(type="button" value="{{_ 'link'}}")

View file

@ -333,21 +333,22 @@ BlazeComponent.extendComponent({
}, },
cards() { cards() {
const ownCardsIds = this.board.cards().map((card) => { return card.linkedId || card._id; });
return Cards.find({ return Cards.find({
boardId: this.selectedBoardId.get(), boardId: this.selectedBoardId.get(),
swimlaneId: this.selectedSwimlaneId.get(), swimlaneId: this.selectedSwimlaneId.get(),
listId: this.selectedListId.get(), listId: this.selectedListId.get(),
archived: false, archived: false,
linkedId: null, linkedId: {$nin: ownCardsIds},
_id: {$nin: this.board.cards().map((card) => { return card.linkedId || card._id; })}, _id: {$nin: ownCardsIds},
}); });
}, },
events() { events() {
return [{ return [{
'change .js-select-boards'(evt) { 'change .js-select-boards'(evt) {
subManager.subscribe('board', $(evt.currentTarget).val());
this.selectedBoardId.set($(evt.currentTarget).val()); this.selectedBoardId.set($(evt.currentTarget).val());
subManager.subscribe('board', this.selectedBoardId.get());
}, },
'change .js-select-swimlanes'(evt) { 'change .js-select-swimlanes'(evt) {
this.selectedSwimlaneId.set($(evt.currentTarget).val()); this.selectedSwimlaneId.set($(evt.currentTarget).val());
@ -438,14 +439,14 @@ BlazeComponent.extendComponent({
results() { results() {
const board = Boards.findOne(this.selectedBoardId.get()); const board = Boards.findOne(this.selectedBoardId.get());
return board.searchCards(this.term.get(), true); return board.searchCards(this.term.get(), false);
}, },
events() { events() {
return [{ return [{
'change .js-select-boards'(evt) { 'change .js-select-boards'(evt) {
subManager.subscribe('board', $(evt.currentTarget).val());
this.selectedBoardId.set($(evt.currentTarget).val()); this.selectedBoardId.set($(evt.currentTarget).val());
subManager.subscribe('board', this.selectedBoardId.get());
}, },
'submit .js-search-term-form'(evt) { 'submit .js-search-term-form'(evt) {
evt.preventDefault(); evt.preventDefault();
@ -461,7 +462,7 @@ BlazeComponent.extendComponent({
boardId: this.boardId, boardId: this.boardId,
sort: Lists.findOne(this.listId).cards().count(), sort: Lists.findOne(this.listId).cards().count(),
type: 'cardType-linkedCard', type: 'cardType-linkedCard',
linkedId: card._id, linkedId: card.linkedId || card._id,
}); });
Filter.addException(_id); Filter.addException(_id);
Popup.close(); Popup.close();

View file

@ -712,6 +712,14 @@ Cards.helpers({
} }
}, },
getId() {
if (this.isLinked()) {
return this.linkedId;
} else {
return this._id;
}
},
getTitle() { getTitle() {
if (this.isLinkedCard()) { if (this.isLinkedCard()) {
const card = Cards.findOne({ _id: this.linkedId }); const card = Cards.findOne({ _id: this.linkedId });