mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2024-11-25 08:38:09 -05:00
46 lines
1.5 KiB
CoffeeScript
46 lines
1.5 KiB
CoffeeScript
ModalView = require 'views/core/ModalView'
|
|
template = require 'templates/editor/campaign/save-campaign-modal'
|
|
DeltaView = require 'views/editor/DeltaView'
|
|
|
|
module.exports = class SaveCampaignModal extends ModalView
|
|
id: 'save-campaign-modal'
|
|
template: template
|
|
plain: true
|
|
|
|
events:
|
|
'click #save-button': 'onClickSaveButton'
|
|
|
|
constructor: (options, @modelsToSave) ->
|
|
super(options)
|
|
|
|
getRenderData: ->
|
|
c = super()
|
|
c.modelsToSave = @modelsToSave
|
|
c
|
|
|
|
afterRender: ->
|
|
@$el.find('.delta-view').each((i, el) =>
|
|
$el = $(el)
|
|
model = @modelsToSave.find( id: $el.data('model-id'))
|
|
deltaView = new DeltaView({model: model})
|
|
@insertSubView(deltaView, $el)
|
|
)
|
|
super()
|
|
|
|
onClickSaveButton: ->
|
|
@showLoading()
|
|
@reverseLevelsBeforeSave()
|
|
modelsBeingSaved = (model.patch() for model in @modelsToSave.models)
|
|
$.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
|