mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2025-04-27 14:33:59 -04:00
Added completion notice to course details
This commit is contained in:
parent
93010f771a
commit
3728b2dc4e
2 changed files with 31 additions and 18 deletions
app
|
@ -2,11 +2,6 @@ extends /templates/base
|
|||
|
||||
block content
|
||||
|
||||
div
|
||||
span *UNDER CONSTRUCTION, send feedback to
|
||||
a.spl(href='mailto:team@codecombat.com') team@codecombat.com
|
||||
div(style='border-bottom: 1px solid black;')
|
||||
|
||||
if (noCourseInstance || noCourseInstanceSelected) && course
|
||||
h1= course.get('name')
|
||||
if noCourseInstance
|
||||
|
@ -31,24 +26,26 @@ block content
|
|||
else if !course || !courseInstance
|
||||
h1(data-i18n="common.loading") Loading...
|
||||
else
|
||||
h1
|
||||
| #{course.get('name')}
|
||||
small.spl
|
||||
p
|
||||
// TODO: format this text all good and stuff
|
||||
strong
|
||||
if courseInstance.get('name')
|
||||
| (#{courseInstance.get('name')})
|
||||
span= courseInstance.get('name')
|
||||
else if view.classroom.get('name')
|
||||
| (#{view.classroom.get('name')})
|
||||
span= view.classroom.get('name')
|
||||
else
|
||||
| (
|
||||
span(data-i18n='courses.unnamed_class')
|
||||
| )
|
||||
|
||||
if !view.owner.isNew() && view.getOwnerName()
|
||||
p
|
||||
span.spr Creator:
|
||||
|
||||
if !view.owner.isNew() && view.getOwnerName()
|
||||
span.spl.spr - Teacher:
|
||||
a(href="/user/#{view.owner.id}")
|
||||
strong= view.getOwnerName()
|
||||
|
||||
h1
|
||||
| #{course.get('name')}
|
||||
if view.courseComplete
|
||||
span.spl - Complete!
|
||||
|
||||
p
|
||||
if courseInstance.get('description')
|
||||
each line in courseInstance.get('description').split('\n')
|
||||
|
|
|
@ -152,17 +152,28 @@ module.exports = class CourseDetailsView extends RootView
|
|||
@userLevelStateMap = {}
|
||||
levelStateMap = {}
|
||||
for levelSession in @levelSessions.models
|
||||
continue if levelSession.skipMe # Don't track second arena session as another completed level
|
||||
userID = levelSession.get('creator')
|
||||
levelID = levelSession.get('level').original
|
||||
state = if levelSession.get('state')?.complete then 'complete' else 'started'
|
||||
playtime = parseInt(levelSession.get('playtime') ? 0, 10)
|
||||
do (userID, levelID) =>
|
||||
secondSessionForLevel = _.find(@levelSessions.models, ((otherSession) ->
|
||||
otherSession.get('creator') is userID and otherSession.get('level').original is levelID and otherSession.id isnt levelSession.id
|
||||
))
|
||||
if secondSessionForLevel
|
||||
state = 'complete' if secondSessionForLevel.get('state')?.complete
|
||||
playtime = playtime + parseInt(secondSessionForLevel.get('playtime') ? 0, 10)
|
||||
secondSessionForLevel.skipMe = true
|
||||
|
||||
levelStateMap[levelID] = state
|
||||
|
||||
@instanceStats.totalLevelsCompleted++ if state is 'complete'
|
||||
@instanceStats.totalPlayTime += parseInt(levelSession.get('playtime') ? 0)
|
||||
@instanceStats.totalPlayTime += playtime
|
||||
|
||||
@memberStats[userID] ?= totalLevelsCompleted: 0, totalPlayTime: 0
|
||||
@memberStats[userID].totalLevelsCompleted++ if state is 'complete'
|
||||
@memberStats[userID].totalPlayTime += parseInt(levelSession.get('playtime') ? 0)
|
||||
@memberStats[userID].totalPlayTime += playtime
|
||||
|
||||
@userConceptStateMap[userID] ?= {}
|
||||
for concept of @levelConceptMap[levelID]
|
||||
|
@ -185,6 +196,11 @@ module.exports = class CourseDetailsView extends RootView
|
|||
for concept, state of conceptStateMap
|
||||
@conceptsCompleted[concept] ?= 0
|
||||
@conceptsCompleted[concept]++
|
||||
|
||||
if @memberStats[me.id]?.totalLevelsCompleted >= _.size @campaign.get('levels')
|
||||
console.log @memberStats[me.id]?.totalLevelsCompleted, 'course complete!'
|
||||
@courseComplete = true
|
||||
|
||||
@render?()
|
||||
|
||||
# If we just joined a single-player course for Hour of Code, we automatically play.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue