Preserve SuperModel when navigating between course levels

This commit is contained in:
Nick Winter 2015-12-01 12:23:01 -08:00
parent e7809c6622
commit 6b1c859e91
5 changed files with 20 additions and 22 deletions
app
styles/play/ladder
templates/play/ladder
views

View file

@ -30,12 +30,6 @@
margin-top: -14px
width: 100%
#course-h1
color: black
font-size: 72px
text-transform: capitalize
margin-top: 0
h1
text-align: center

View file

@ -18,9 +18,6 @@ block content
div#level-column
if leagueType === 'course'
h1#course-h1= (level.get('name') || '').toUpperCase()
if levelDescription
div!= levelDescription

View file

@ -221,15 +221,17 @@ module.exports = class CourseDetailsView extends RootView
levelID = $(e.target).data('level-id')
level = @campaign.get('levels')[levelID]
if level.type is 'course-ladder'
viewClass = 'views/ladder/LadderView'
viewArgs = [{supermodel: @supermodel}, levelSlug]
route = '/play/ladder/' + levelSlug
route += '/course/' + @courseInstance.id if @courseInstance.get('members').length > 1 # No league for solo courses
Backbone.Mediator.publish 'router:navigate', route: route
if @courseInstance.get('members').length > 1 # No league for solo courses
route += '/course/' + @courseInstance.id
viewArgs = viewArgs.concat ['course', @courseInstance.id]
else
Backbone.Mediator.publish 'router:navigate', {
route: @getLevelURL levelSlug
viewClass: 'views/play/level/PlayLevelView'
viewArgs: [{courseID: @courseID, courseInstanceID: @courseInstanceID}, levelSlug]
}
route = @getLevelURL levelSlug
viewClass = 'views/play/level/PlayLevelView'
viewArgs = [{courseID: @courseID, courseInstanceID: @courseInstanceID, supermodel: @supermodel}, levelSlug]
Backbone.Mediator.publish 'router:navigate', route: route, viewClass: viewClass, viewArgs: viewArgs
getLevelURL: (levelSlug) ->
"/play/level/#{levelSlug}?course=#{@courseID}&course-instance=#{@courseInstanceID}"
@ -251,7 +253,7 @@ module.exports = class CourseDetailsView extends RootView
Backbone.Mediator.publish 'router:navigate', {
route: route
viewClass: 'views/play/level/PlayLevelView'
viewArgs: [{}, levelSlug]
viewArgs: [{supermodel: @supermodel}, levelSlug]
}
onMouseEnterPoint: (e) ->

View file

@ -54,9 +54,13 @@ module.exports = class LadderView extends RootView
resourceString = if @leagueType is 'clan' then 'clans.clan' else 'courses.course'
@league = @supermodel.loadModel(new modelClass(_id: @leagueID), resourceString).model
if @leagueType is 'course'
@listenToOnce @league, 'sync', @onCourseInstanceLoaded
if @league.loaded
@onCourseInstanceLoaded @league
else
@listenToOnce @league, 'sync', @onCourseInstanceLoaded
onCourseInstanceLoaded: (courseInstance) ->
return if @destroyed
course = new Course({_id: courseInstance.get('courseID')})
@course = @supermodel.loadModel(course, 'courses.course').model

View file

@ -451,10 +451,11 @@ module.exports = class HeroVictoryModal extends ModalView
viewArgs.push @courseInstanceID if @courseInstanceID
else if @level.get('type', true) is 'course-ladder'
leagueID = @courseInstanceID or @getQueryVariable 'league'
link = "/play/ladder/#{@level.get('slug')}"
link += "/course/#{leagueID}" if leagueID
Backbone.Mediator.publish 'router:navigate', route: link
return
nextLevelLink = "/play/ladder/#{@level.get('slug')}"
nextLevelLink += "/course/#{leagueID}" if leagueID
viewClass = 'views/ladder/LadderView'
viewArgs = [options, @level.get('slug')]
viewArgs = viewArgs.concat ['course', leagueID] if leagueID
else
viewClass = require 'views/play/CampaignView'
viewArgs = [options, @getNextLevelCampaign()]