summaryrefslogtreecommitdiffstats
path: root/models
diff options
context:
space:
mode:
authorMarc Hartmayer <hello@hartmayer.com>2020-05-25 21:01:51 +0200
committerMarc Hartmayer <hello@hartmayer.com>2020-05-25 22:48:57 +0200
commit5c02850bc19fd3d049e73d5b7aaa013def6e65e2 (patch)
tree6f3ada2799618700df85bb35ecf66e7dfa6fe951 /models
parent8eafa1ac66fdcf5fb5f0a95aa6cfee454ddad67f (diff)
downloadwekan-5c02850bc19fd3d049e73d5b7aaa013def6e65e2.tar.gz
wekan-5c02850bc19fd3d049e73d5b7aaa013def6e65e2.tar.bz2
wekan-5c02850bc19fd3d049e73d5b7aaa013def6e65e2.zip
Fix move selection
This fixes https://github.com/wekan/wekan/issues/3119.
Diffstat (limited to 'models')
-rw-r--r--models/cards.js42
1 files changed, 42 insertions, 0 deletions
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) {