2
0
Эх сурвалжийг харах

Allow toogle of lists and swimlanes views

Andrés Manelli 7 жил өмнө
parent
commit
7b04f14e3c

+ 5 - 2
client/components/boards/boardBody.jade

@@ -20,5 +20,8 @@ template(name="boardBody")
       class="{{#if draggingActive.get}}is-dragging-active{{/if}}")
       if showOverlay.get
         .board-overlay
-      each currentBoard.swimlanes
-        +swimlane(this)
+      if isViewSwimlanes
+        each currentBoard.swimlanes
+          +swimlane(this)
+      if isViewLists
+        +listsGroup

+ 12 - 0
client/components/boards/boardBody.js

@@ -47,6 +47,18 @@ BlazeComponent.extendComponent({
     return Utils.isMiniScreen() && Session.get('currentCard');
   },
 
+  isViewSwimlanes() {
+    const currentBoardId = Session.get('currentBoard');
+    const board = Boards.findOne(currentBoardId);
+    return (board.view === 'board-view-swimlanes');
+  },
+
+  isViewLists() {
+    const currentBoardId = Session.get('currentBoard');
+    const board = Boards.findOne(currentBoardId);
+    return (board.view === 'board-view-lists');
+  },
+
   events() {
     return [{
       // XXX The board-overlay div should probably be moved to the parent

+ 2 - 2
client/components/boards/boardHeader.js

@@ -82,13 +82,13 @@ BlazeComponent.extendComponent({
           Boards.update(currentBoard._id, {
             $set: {
               view: 'board-view-lists',
-            }
+            },
           });
         } else if (currentBoard.view === 'board-view-lists') {
           Boards.update(currentBoard._id, {
             $set: {
               view: 'board-view-swimlanes',
-            }
+            },
           });
         }
       },

+ 1 - 1
client/components/lists/listBody.jade

@@ -4,7 +4,7 @@ template(name="listBody")
       if cards.count
         +inlinedForm(autoclose=false position="top")
           +addCardForm(listId=_id position="top")
-      each cards ../../_id
+      each (cards (idOrNull ../../_id))
         a.minicard-wrapper.js-minicard(href=absoluteUrl
           class="{{#if cardIsSelected}}is-selected{{/if}}"
           class="{{#if MultiSelection.isSelected _id}}is-checked{{/if}}")

+ 7 - 0
client/components/lists/listBody.js

@@ -98,6 +98,13 @@ BlazeComponent.extendComponent({
     MultiSelection.toggle(this.currentData()._id);
   },
 
+  idOrNull(swimlaneId) {
+    const board = Boards.findOne(Session.get('currentBoard'));
+    if (board.view === 'board-view-swimlanes')
+      return swimlaneId;
+    return undefined;
+  },
+
   canSeeAddCard() {
     return !this.reachedWipLimit() && Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly();
   },

+ 18 - 0
client/components/swimlanes/swimlanes.jade

@@ -20,6 +20,24 @@ template(name="swimlane")
         +addListForm
         +addListAndSwimlaneForm
 
+template(name="listsGroup")
+  .swimlane.js-lists
+    if isMiniScreen
+      if currentList
+        +list(currentList)
+      else
+        each currentBoard.lists
+          +miniList(this)
+        if currentUser.isBoardMember
+          +addListForm
+    else
+      each currentBoard.lists
+        +list(this)
+        if currentCardIsInThisList
+          +cardDetails(currentCard)
+      if currentUser.isBoardMember
+        +addListForm
+
 template(name="addListAndSwimlaneForm")
   .list.js-list.list-composer.js-list-composer
     .list-header

+ 6 - 3
models/lists.js

@@ -76,11 +76,14 @@ Lists.allow({
 
 Lists.helpers({
   cards(swimlaneId) {
-    return Cards.find(Filter.mongoSelector({
+    const selector = {
       listId: this._id,
       archived: false,
-      swimlaneId: swimlaneId,
-    }), { sort: ['sort'] });
+    };
+    if (swimlaneId)
+      selector.swimlaneId = swimlaneId;
+    return Cards.find(Filter.mongoSelector(selector,
+      { sort: ['sort'] }));
   },
 
   allCards() {