fix epics drag & drop
parent
9ec8c4fba2
commit
91e648bea1
|
@ -51,6 +51,9 @@ class EpicsTableController
|
||||||
@.displayOptions = !@.displayOptions
|
@.displayOptions = !@.displayOptions
|
||||||
|
|
||||||
reorderEpic: (epic, newIndex) ->
|
reorderEpic: (epic, newIndex) ->
|
||||||
|
if epic.get('epics_order') == newIndex
|
||||||
|
return null
|
||||||
|
|
||||||
@epicsService.reorderEpic(epic, newIndex)
|
@epicsService.reorderEpic(epic, newIndex)
|
||||||
.then null, () => # on error
|
.then null, () => # on error
|
||||||
@confirm.notify("error")
|
@confirm.notify("error")
|
||||||
|
|
|
@ -75,24 +75,42 @@ class EpicsService
|
||||||
Promise.all(promises).then(@.fetchEpics.bind(this, true))
|
Promise.all(promises).then(@.fetchEpics.bind(this, true))
|
||||||
|
|
||||||
reorderEpic: (epic, newIndex) ->
|
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')
|
withoutMoved = @.epics.filter (it) => it.get('id') != epic.get('id')
|
||||||
beforeDestination = withoutMoved.slice(0, newIndex)
|
beforeDestination = withoutMoved.slice(0, newIndex)
|
||||||
|
afterDestination = withoutMoved.slice(newIndex)
|
||||||
|
|
||||||
previous = beforeDestination.last()
|
previous = beforeDestination.last()
|
||||||
newOrder = if !previous then 0 else previous.get('epics_order') + 1
|
newOrder = if !previous then 0 else previous.get('epics_order') + 1
|
||||||
|
|
||||||
|
orderList[epic.get('id')] = newOrder
|
||||||
|
|
||||||
previousWithTheSameOrder = beforeDestination.filter (it) =>
|
previousWithTheSameOrder = beforeDestination.filter (it) =>
|
||||||
it.get('epics_order') == previous.get('epics_order')
|
it.get('epics_order') == previous.get('epics_order')
|
||||||
|
|
||||||
setOrders = _.fromPairs previousWithTheSameOrder.map((it) =>
|
setOrders = _.fromPairs previousWithTheSameOrder.map((it) =>
|
||||||
[it.get('id'), it.get('epics_order')]
|
[it.get('id'), it.get('epics_order')]
|
||||||
).toJS()
|
).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 = {
|
data = {
|
||||||
epics_order: newOrder,
|
epics_order: newOrder,
|
||||||
version: epic.get('version')
|
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) ->
|
reorderRelatedUserstory: (epic, epicUserstories, userstory, newIndex) ->
|
||||||
withoutMoved = epicUserstories.filter (it) => it.get('id') != userstory.get('id')
|
withoutMoved = epicUserstories.filter (it) => it.get('id') != userstory.get('id')
|
||||||
|
@ -120,7 +138,7 @@ class EpicsService
|
||||||
@._epics = @._epics.map (it) ->
|
@._epics = @._epics.map (it) ->
|
||||||
if it.get('id') == epic.get('id')
|
if it.get('id') == epic.get('id')
|
||||||
return epic
|
return epic
|
||||||
|
|
||||||
return it
|
return it
|
||||||
|
|
||||||
updateEpicStatus: (epic, statusId) ->
|
updateEpicStatus: (epic, statusId) ->
|
||||||
|
|
Loading…
Reference in New Issue