fix epics drag & drop

stable
Juanfran 2017-03-08 09:09:15 +01:00
parent 9ec8c4fba2
commit 91e648bea1
2 changed files with 23 additions and 2 deletions

View File

@ -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")

View File

@ -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')