codecombat/app/views/editor/level/RelatedAchievementsView.coffee

49 lines
1.5 KiB
CoffeeScript
Raw Normal View History

2014-08-04 16:21:43 -04:00
CocoView = require 'views/kinds/CocoView'
template = require 'templates/editor/level/related-achievements'
2014-08-04 16:21:43 -04:00
RelatedAchievementsCollection = require 'collections/RelatedAchievementsCollection'
Achievement = require 'models/Achievement'
NewAchievementModal = require './modals/NewAchievementModal'
app = require 'application'
2014-08-04 16:21:43 -04:00
module.exports = class RelatedAchievementsView extends CocoView
id: 'related-achievements-view'
template: template
className: 'tab-pane'
events:
'click #new-achievement-button': 'makeNewAchievement'
subscriptions:
'editor:view-switched': 'onViewSwitched'
2014-08-04 16:21:43 -04:00
constructor: (options) ->
super options
@level = options.level
@relatedID = @level.get('original')
2014-08-04 16:21:43 -04:00
@achievements = new RelatedAchievementsCollection @relatedID
loadAchievements: ->
return if @loadingAchievements
@supermodel.loadCollection @achievements, 'achievements'
@loadingAchievements = true
@render()
2014-08-04 16:21:43 -04:00
getRenderData: ->
c = super()
c.achievements = @achievements
c.relatedID = @relatedID
c
onNewAchievementSaved: (achievement) ->
app.router.navigate('/editor/achievement/' + (achievement.get('slug') or achievement.id), {trigger: true})
makeNewAchievement: ->
modal = new NewAchievementModal model: Achievement, modelLabel: 'Achievement', level: @level
modal.once 'model-created', @onNewAchievementSaved
@openModalView modal
onViewSwitched: (e) ->
# Lazily load.
return unless e.targetURL is '#related-achievements-view'
@loadAchievements()