mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2025-02-17 08:50:58 -05:00
Admin classroom export respects classroom versioning
This commit is contained in:
parent
1bf3eb54dd
commit
f598e43957
1 changed files with 9 additions and 27 deletions
|
@ -5,8 +5,6 @@ template = require 'templates/admin'
|
||||||
AdministerUserModal = require 'views/admin/AdministerUserModal'
|
AdministerUserModal = require 'views/admin/AdministerUserModal'
|
||||||
forms = require 'core/forms'
|
forms = require 'core/forms'
|
||||||
|
|
||||||
# TODO: respect classroom versioning
|
|
||||||
|
|
||||||
Campaigns = require 'collections/Campaigns'
|
Campaigns = require 'collections/Campaigns'
|
||||||
Classroom = require 'models/Classroom'
|
Classroom = require 'models/Classroom'
|
||||||
CocoCollection = require 'collections/CocoCollection'
|
CocoCollection = require 'collections/CocoCollection'
|
||||||
|
@ -33,31 +31,10 @@ module.exports = class MainAdminView extends RootView
|
||||||
getTitle: -> return $.i18n.t('account_settings.admin')
|
getTitle: -> return $.i18n.t('account_settings.admin')
|
||||||
|
|
||||||
initialize: ->
|
initialize: ->
|
||||||
@campaigns = new Campaigns()
|
|
||||||
@courses = new CocoCollection([], { url: "/db/course", model: Course})
|
|
||||||
|
|
||||||
if window.amActually
|
if window.amActually
|
||||||
@amActually = new User({_id: window.amActually})
|
@amActually = new User({_id: window.amActually})
|
||||||
@amActually.fetch()
|
@amActually.fetch()
|
||||||
@supermodel.trackModel(@amActually)
|
@supermodel.trackModel(@amActually)
|
||||||
if me.isAdmin()
|
|
||||||
@supermodel.trackRequest @campaigns.fetchByType('course', { data: { project: 'levels' } })
|
|
||||||
@supermodel.loadCollection(@courses, 'courses')
|
|
||||||
super()
|
|
||||||
|
|
||||||
onLoaded: ->
|
|
||||||
campaignCourseIndexMap = {}
|
|
||||||
for course, index in @courses.models
|
|
||||||
campaignCourseIndexMap[course.get('campaignID')] = index + 1
|
|
||||||
@courseLevels = []
|
|
||||||
for campaign in @campaigns.models
|
|
||||||
continue unless campaignCourseIndexMap[campaign.id]
|
|
||||||
for levelID, level of campaign.get('levels')
|
|
||||||
@courseLevels.push({
|
|
||||||
levelID
|
|
||||||
slug: level.slug
|
|
||||||
courseIndex: campaignCourseIndexMap[campaign.id]
|
|
||||||
})
|
|
||||||
super()
|
super()
|
||||||
|
|
||||||
onClickStopSpyingButton: ->
|
onClickStopSpyingButton: ->
|
||||||
|
@ -159,11 +136,10 @@ module.exports = class MainAdminView extends RootView
|
||||||
@supermodel.addRequestResource('create_prepaid', options, 0).load()
|
@supermodel.addRequestResource('create_prepaid', options, 0).load()
|
||||||
|
|
||||||
onClickExportProgress: ->
|
onClickExportProgress: ->
|
||||||
return unless @courseLevels?.length > 0
|
|
||||||
$('.classroom-progress-csv').prop('disabled', true)
|
$('.classroom-progress-csv').prop('disabled', true)
|
||||||
|
|
||||||
classCode = $('.classroom-progress-class-code').val()
|
classCode = $('.classroom-progress-class-code').val()
|
||||||
classroom = null
|
classroom = null
|
||||||
|
courseLevels = []
|
||||||
sessions = null
|
sessions = null
|
||||||
users = null
|
users = null
|
||||||
userMap = {}
|
userMap = {}
|
||||||
|
@ -172,6 +148,12 @@ module.exports = class MainAdminView extends RootView
|
||||||
classroom = new Classroom({ _id: model.data._id })
|
classroom = new Classroom({ _id: model.data._id })
|
||||||
Promise.resolve(classroom.fetch())
|
Promise.resolve(classroom.fetch())
|
||||||
.then (model) =>
|
.then (model) =>
|
||||||
|
for course, index in classroom.get('courses')
|
||||||
|
for level in course.levels
|
||||||
|
courseLevels.push
|
||||||
|
courseIndex: index + 1
|
||||||
|
levelID: level.original
|
||||||
|
slug: level.slug
|
||||||
users = new Users()
|
users = new Users()
|
||||||
Promise.resolve($.when(users.fetchForClassroom(classroom)...))
|
Promise.resolve($.when(users.fetchForClassroom(classroom)...))
|
||||||
.then (models) =>
|
.then (models) =>
|
||||||
|
@ -191,7 +173,7 @@ module.exports = class MainAdminView extends RootView
|
||||||
userPlaytimes = []
|
userPlaytimes = []
|
||||||
for userID, user of userMap
|
for userID, user of userMap
|
||||||
playtimes = [user.get('name') ? 'Anonymous']
|
playtimes = [user.get('name') ? 'Anonymous']
|
||||||
for level in @courseLevels
|
for level in courseLevels
|
||||||
if userLevelPlaytimeMap[userID]?[level.levelID]?
|
if userLevelPlaytimeMap[userID]?[level.levelID]?
|
||||||
rawSeconds = parseInt(userLevelPlaytimeMap[userID][level.levelID])
|
rawSeconds = parseInt(userLevelPlaytimeMap[userID][level.levelID])
|
||||||
hours = Math.floor(rawSeconds / 60 / 60)
|
hours = Math.floor(rawSeconds / 60 / 60)
|
||||||
|
@ -208,7 +190,7 @@ module.exports = class MainAdminView extends RootView
|
||||||
columnLabels = "Username"
|
columnLabels = "Username"
|
||||||
currentLevel = 1
|
currentLevel = 1
|
||||||
lastCourseIndex = 1
|
lastCourseIndex = 1
|
||||||
for level in @courseLevels
|
for level in courseLevels
|
||||||
unless level.courseIndex is lastCourseIndex
|
unless level.courseIndex is lastCourseIndex
|
||||||
currentLevel = 1
|
currentLevel = 1
|
||||||
lastCourseIndex = level.courseIndex
|
lastCourseIndex = level.courseIndex
|
||||||
|
|
Loading…
Reference in a new issue