Add explanatory copy to TeacherCoursesView

This commit is contained in:
Scott Erickson 2015-12-04 14:17:16 -08:00
parent 3fb85463fa
commit 6ac659b571
4 changed files with 44 additions and 6 deletions

View file

@ -0,0 +1,23 @@
CocoCollection = require 'collections/CocoCollection'
Prepaid = require 'models/Prepaid'
sum = (numbers) -> _.reduce(numbers, (a, b) -> a + b)
module.exports = class Prepaids extends CocoCollection
model: Prepaid
url: "/db/prepaid"
totalMaxRedeemers: ->
sum((prepaid.get('maxRedeemers') for prepaid in @models)) or 0
totalRedeemers: ->
sum((_.size(prepaid.get('redeemers')) for prepaid in @models)) or 0
totalAvailable: -> Math.max(@totalMaxRedeemers() - @totalRedeemers(), 0)
fetchByCreator: (creatorID, opts) ->
opts ?= {}
opts.data ?= {}
opts.data.creator = creatorID
@fetch opts

View file

@ -54,6 +54,17 @@ block content
br
.section-header Available Courses
p.text-center
strong.spr Unused enrollments available:
strong.spr= view.prepaids.totalAvailable()
a.btn.btn-success.btn(href="/courses/purchase") Purchase Enrollments
p
| All students get access to Introduction to Computer Science for free.
| One enrollment per student is required to assign them to paid CodeCombat courses.
| A single student does not need multiple enrollments to access all paid courses.
.container-fluid
- var courses = view.courses.models;
- var i = 0;

View file

@ -1,7 +1,7 @@
ModalView = require 'views/core/ModalView'
template = require 'templates/courses/activate-licenses-modal'
CocoCollection = require 'collections/CocoCollection'
Prepaid = require 'models/Prepaid'
Prepaids = require 'collections/Prepaids'
User = require 'models/User'
module.exports = class ActivateLicensesModal extends ModalView
@ -16,12 +16,10 @@ module.exports = class ActivateLicensesModal extends ModalView
@classroom = options.classroom
@users = options.users
@user = options.user
@prepaids = new CocoCollection([], { url: "/db/prepaid", model: Prepaid })
sum = (numbers) -> _.reduce(numbers, (a, b) -> a + b)
@prepaids.totalMaxRedeemers = -> sum((prepaid.get('maxRedeemers') for prepaid in @models)) or 0
@prepaids.totalRedeemers = -> sum((_.size(prepaid.get('redeemers')) for prepaid in @models)) or 0
@prepaids = new Prepaids()
@prepaids.comparator = '_id'
@supermodel.loadCollection(@prepaids, 'prepaids', {data: {creator: me.id}})
@prepaids.fetchByCreator(me.id)
@supermodel.loadCollection(@prepaids, 'prepaids')
afterRender: ->
super()

View file

@ -10,6 +10,7 @@ CourseInstance = require 'models/CourseInstance'
RootView = require 'views/core/RootView'
template = require 'templates/courses/teacher-courses-view'
ClassroomSettingsModal = require 'views/courses/ClassroomSettingsModal'
Prepaids = require 'collections/Prepaids'
module.exports = class TeacherCoursesView extends RootView
id: 'teacher-courses-view'
@ -32,6 +33,11 @@ module.exports = class TeacherCoursesView extends RootView
@courseInstances.comparator = 'courseID'
@courseInstances.sliceWithMembers = -> return @filter (courseInstance) -> _.size(courseInstance.get('members')) and courseInstance.get('classroomID')
@supermodel.loadCollection(@courseInstances, 'course_instances', {data: {ownerID: me.id}})
@prepaids = new Prepaids()
@prepaids.comparator = '_id'
if not me.isAnonymous()
@prepaids.fetchByCreator(me.id)
@supermodel.loadCollection(@prepaids, 'prepaids') # just registers
@members = new CocoCollection([], { model: User })
@listenTo @members, 'sync', @render
@