56 lines
1.5 KiB
CoffeeScript
56 lines
1.5 KiB
CoffeeScript
$ = jQuery
|
|
context = window
|
|
logger = context.JK.logger
|
|
rest = new context.JK.Rest()
|
|
|
|
@LessonTimerStore = Reflux.createStore(
|
|
{
|
|
listenables: @LessonTimerActions
|
|
lessons: {}
|
|
slowTime: 10000
|
|
fastTime: 1000
|
|
|
|
init: ( ) ->
|
|
@timer()
|
|
this.listenTo(context.AppStore, this.onAppInit)
|
|
|
|
onAppInit: (@app) ->
|
|
@lessonUtils = context.JK.LessonUtils
|
|
|
|
timer: () ->
|
|
setInterval((() => @timeout()), @fastTime)
|
|
|
|
onLoadLessons: (lessons) ->
|
|
for lesson in lessons?.entries
|
|
@lessons[lesson.id] = lesson
|
|
|
|
timeout: () ->
|
|
|
|
for id, lesson of @lessons
|
|
untilInfo = @lessonUtils.getTimeRemaining(lesson.music_session.scheduled_start)
|
|
|
|
initialWindow = false
|
|
inThePast = false
|
|
beforeSession = false
|
|
startingSoon = false
|
|
lessonWindow = false
|
|
|
|
if untilInfo.total < 0
|
|
# we are past the start time
|
|
if untilInfo.total > -(10 * 60 * 1000) # 10 minutes
|
|
initialWindow = true
|
|
else if untilInfo.total > -(15*60*1000) # 15 minute
|
|
inThePast = true
|
|
else
|
|
# we are before the due time
|
|
beforeSession = true
|
|
startingSoon = untilInfo.total <= (60 * 60 * 1000) # 60 minutes - 1hr until start time
|
|
|
|
lesson.times = {until:untilInfo, initialWindow: initialWindow, beforeSession: beforeSession, startingSoon: startingSoon, inThePast: inThePast}
|
|
|
|
@changed()
|
|
|
|
changed:() ->
|
|
this.trigger(@lessons)
|
|
}
|
|
) |