Explorar el Código

Change the swimlaneid of a card only if a new target swimlaneid is selected

Fixes the issue https://github.com/wekan/wekan/issues/2757. While at it, fix the
same issue also for multi selection.
Marc Hartmayer hace 5 años
padre
commit
64fa02cdf5
Se han modificado 1 ficheros con 14 adiciones y 10 borrados
  1. 14 10
      client/components/lists/list.js

+ 14 - 10
client/components/lists/list.js

@@ -74,18 +74,16 @@ BlazeComponent.extendComponent({
         const sortIndex = calculateIndex(prevCardDom, nextCardDom, nCards);
         const listId = Blaze.getData(ui.item.parents('.list').get(0))._id;
         const currentBoard = Boards.findOne(Session.get('currentBoard'));
-        let swimlaneId = '';
+        const defaultSwimlaneId = currentBoard.getDefaultSwimline()._id;
+        let targetSwimlaneId = null;
+
+        // only set a new swimelane ID if the swimlanes view is active
         if (
           Utils.boardView() === 'board-view-swimlanes' ||
           currentBoard.isTemplatesBoard()
         )
-          swimlaneId = Blaze.getData(ui.item.parents('.swimlane').get(0))._id;
-        else if (
-          Utils.boardView() === 'board-view-lists' ||
-          Utils.boardView() === 'board-view-cal' ||
-          !Utils.boardView
-        )
-          swimlaneId = currentBoard.getDefaultSwimline()._id;
+          targetSwimlaneId = Blaze.getData(ui.item.parents('.swimlane').get(0))
+            ._id;
 
         // Normally the jquery-ui sortable library moves the dragged DOM element
         // to its new position, which disrupts Blaze reactive updates mechanism
@@ -98,9 +96,12 @@ BlazeComponent.extendComponent({
 
         if (MultiSelection.isActive()) {
           Cards.find(MultiSelection.getMongoSelector()).forEach((card, i) => {
+            const newSwimlaneId = targetSwimlaneId
+              ? targetSwimlaneId
+              : card.swimlaneId || defaultSwimlaneId;
             card.move(
               currentBoard._id,
-              swimlaneId,
+              newSwimlaneId,
               listId,
               sortIndex.base + i * sortIndex.increment,
             );
@@ -108,7 +109,10 @@ BlazeComponent.extendComponent({
         } else {
           const cardDomElement = ui.item.get(0);
           const card = Blaze.getData(cardDomElement);
-          card.move(currentBoard._id, swimlaneId, listId, sortIndex.base);
+          const newSwimlaneId = targetSwimlaneId
+            ? targetSwimlaneId
+            : card.swimlaneId || defaultSwimlaneId;
+          card.move(currentBoard._id, newSwimlaneId, listId, sortIndex.base);
         }
         boardComponent.setIsDragging(false);
       },