From 5c02850bc19fd3d049e73d5b7aaa013def6e65e2 Mon Sep 17 00:00:00 2001 From: Marc Hartmayer Date: Mon, 25 May 2020 21:01:51 +0200 Subject: Fix move selection This fixes https://github.com/wekan/wekan/issues/3119. --- models/cards.js | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) (limited to 'models') diff --git a/models/cards.js b/models/cards.js index 6d5e23cc..17279e1c 100644 --- a/models/cards.js +++ b/models/cards.js @@ -1255,6 +1255,48 @@ Cards.mutations({ }; }, + moveToEndOfList({ listId } = {}) { + let swimlaneId = this.swimlaneId; + const boardId = this.boardId; + let sortIndex = 0; + + // This should never happen, but there was a bug that was fixed in commit + // ea0239538a68e225c867411a4f3e0d27c158383. + if (!swimlaneId) { + const board = Boards.findOne(boardId); + swimlaneId = board.getDefaultSwimline()._id; + } + // Move the minicard to the end of the target list + let parentElementDom = $(`#swimlane-${this.swimlaneId}`).get(0); + if (!parentElementDom) parentElementDom = $(':root'); + + const lastCardDom = $(parentElementDom) + .find(`#js-list-${listId} .js-minicard:last`) + .get(0); + if (lastCardDom) sortIndex = Utils.calculateIndex(lastCardDom, null).base; + + return this.moveOptionalArgs({ + boardId: boardId, + swimlaneId: swimlaneId, + listId: listId, + sort: sortIndex, + }); + }, + + moveOptionalArgs({ boardId, swimlaneId, listId, sort } = {}) { + boardId = boardId ?? this.boardId; + swimlaneId = swimlaneId ?? this.swimlaneId; + // This should never happen, but there was a bug that was fixed in commit + // ea0239538a68e225c867411a4f3e0d27c158383. + if (!swimlaneId) { + const board = Boards.findOne(boardId); + swimlaneId = board.getDefaultSwimline()._id; + } + listId = listId ?? this.listId; + sort = sort ?? this.sort; + return this.move(boardId, swimlaneId, listId, sort); + }, + move(boardId, swimlaneId, listId, sort) { // Copy Custom Fields if (this.boardId !== boardId) { -- cgit v1.2.3-1-g7c22