From 91e648bea108c68dd5fa691325ea0c52ca2b9397 Mon Sep 17 00:00:00 2001 From: Juanfran Date: Wed, 8 Mar 2017 09:09:15 +0100 Subject: [PATCH] fix epics drag & drop --- .../epics-table/epics-table.controller.coffee | 3 +++ app/modules/epics/epics.service.coffee | 22 +++++++++++++++++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/app/modules/epics/dashboard/epics-table/epics-table.controller.coffee b/app/modules/epics/dashboard/epics-table/epics-table.controller.coffee index ea993e71..e2cd5cec 100644 --- a/app/modules/epics/dashboard/epics-table/epics-table.controller.coffee +++ b/app/modules/epics/dashboard/epics-table/epics-table.controller.coffee @@ -51,6 +51,9 @@ class EpicsTableController @.displayOptions = !@.displayOptions reorderEpic: (epic, newIndex) -> + if epic.get('epics_order') == newIndex + return null + @epicsService.reorderEpic(epic, newIndex) .then null, () => # on error @confirm.notify("error") diff --git a/app/modules/epics/epics.service.coffee b/app/modules/epics/epics.service.coffee index 59c6541b..6c8c521c 100644 --- a/app/modules/epics/epics.service.coffee +++ b/app/modules/epics/epics.service.coffee @@ -75,24 +75,42 @@ class EpicsService Promise.all(promises).then(@.fetchEpics.bind(this, true)) reorderEpic: (epic, newIndex) -> + orderList = {} + @._epics.forEach (it) -> + orderList[it.get('id')] = it.get('epics_order') + withoutMoved = @.epics.filter (it) => it.get('id') != epic.get('id') beforeDestination = withoutMoved.slice(0, newIndex) + afterDestination = withoutMoved.slice(newIndex) previous = beforeDestination.last() newOrder = if !previous then 0 else previous.get('epics_order') + 1 + orderList[epic.get('id')] = newOrder + previousWithTheSameOrder = beforeDestination.filter (it) => it.get('epics_order') == previous.get('epics_order') + setOrders = _.fromPairs previousWithTheSameOrder.map((it) => [it.get('id'), it.get('epics_order')] ).toJS() + afterDestination.forEach (it) -> orderList[it.get('id')] = it.get('epics_order') + 1 + + @._epics = @._epics.map (it) -> it.set('epics_order', orderList[it.get('id')]) + @._epics = @._epics.sortBy (it) -> it.get('epics_order') + data = { epics_order: newOrder, version: epic.get('version') } - return @resources.epics.reorder(epic.get('id'), data, setOrders) + return @resources.epics.reorder(epic.get('id'), data, setOrders).then (newEpic) => + @._epics = @._epics.map (it) -> + if it.get('id') == newEpic.get('id') + return newEpic + + return it reorderRelatedUserstory: (epic, epicUserstories, userstory, newIndex) -> withoutMoved = epicUserstories.filter (it) => it.get('id') != userstory.get('id') @@ -120,7 +138,7 @@ class EpicsService @._epics = @._epics.map (it) -> if it.get('id') == epic.get('id') return epic - + return it updateEpicStatus: (epic, statusId) ->