summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--client/components/swimlanes/swimlaneHeader.js13
-rw-r--r--models/boards.js11
2 files changed, 22 insertions, 2 deletions
diff --git a/client/components/swimlanes/swimlaneHeader.js b/client/components/swimlanes/swimlaneHeader.js
index 72437ba4..632a0f50 100644
--- a/client/components/swimlanes/swimlaneHeader.js
+++ b/client/components/swimlanes/swimlaneHeader.js
@@ -1,3 +1,5 @@
+const { calculateIndexData } = Utils;
+
BlazeComponent.extendComponent({
editTitle(evt) {
evt.preventDefault();
@@ -26,18 +28,25 @@ Template.swimlaneActionPopup.events({
});
BlazeComponent.extendComponent({
+ onCreated() {
+ this.currentSwimlane = this.currentData();
+ },
+
events() {
return [{
submit(evt) {
evt.preventDefault();
+ const currentBoard = Boards.findOne(Session.get('currentBoard'));
+ const nextSwimlane = currentBoard.nextSwimlane(this.currentSwimlane);
const titleInput = this.find('.swimlane-name-input');
const title = titleInput.value.trim();
+ const sortValue = calculateIndexData(this.currentSwimlane, nextSwimlane, 1);
+
if (title) {
Swimlanes.insert({
title,
boardId: Session.get('currentBoard'),
- // XXX we should insert the swimlane right after the caller
- sort: $('.swimlane').length,
+ sort: sortValue.base,
});
titleInput.value = '';
diff --git a/models/boards.js b/models/boards.js
index 99480ca7..d92bec47 100644
--- a/models/boards.js
+++ b/models/boards.js
@@ -351,6 +351,17 @@ Boards.helpers({
return Swimlanes.find({ boardId: this._id, archived: false }, { sort: { sort: 1 } });
},
+ nextSwimlane(swimlane) {
+ return Swimlanes.findOne({
+ boardId: this._id,
+ archived: false,
+ sort: { $gte: swimlane.sort },
+ _id: { $ne: swimlane._id },
+ }, {
+ sort: { sort: 1 },
+ });
+ },
+
hasOvertimeCards(){
const card = Cards.findOne({isOvertime: true, boardId: this._id, archived: false} );
return card !== undefined;