Allowing reordering of levels in Campaign. Reversing CampaignEditor levels before save so that when the save magically reverses them again, the order is preserved.

This commit is contained in:
Nick Winter 2015-02-26 11:31:16 -08:00
parent 52bc660391
commit 32a95afbd0
2 changed files with 18 additions and 5 deletions

View file

@ -266,6 +266,7 @@ module.exports = class CampaignEditorView extends RootView
class LevelsNode extends TreemaObjectNode
valueClass: 'treema-levels'
@levels: {}
ordered: true
buildValueForDisplay: (valEl, data) ->
@buildValueForDisplaySimply valEl, ''+_.size(data)

View file

@ -29,6 +29,18 @@ module.exports = class SaveCampaignModal extends ModalView
onClickSaveButton: ->
@showLoading()
@reverseLevelsBeforeSave()
modelsBeingSaved = (model.patch() for model in @modelsToSave.models)
modelsBeingSaved = modelsBeingSaved
$.when(_.compact(modelsBeingSaved)...).done(-> document.location.reload())
reverseLevelsBeforeSave: ->
# For some unfathomable reason, not in our code anywhere, the levels get reversed during the save somehow.
# Since we want to maintain their orders, we reverse them first, so that when they're reversed again, it's right.
# Yaaaay!
return unless campaign = _.find @modelsToSave.models, (m) -> m.constructor.className is 'Campaign'
levelsReversed = {}
levels = campaign.get 'levels'
levelIDs = _.keys(levels).reverse()
for levelID in levelIDs
levelsReversed[levelID] = levels[levelID]
campaign.set 'levels', levelsReversed