/hoc analytics

This commit is contained in:
Matt Lott 2015-12-04 11:31:49 -08:00
parent 9d36d33051
commit 4778cf5535
5 changed files with 27 additions and 14 deletions

View file

@ -34,7 +34,7 @@ block content
p p
strong Hi adventurer, welcome back! strong Hi adventurer, welcome back!
p p
a#continue-playing-btn.btn.btn-success.btn-lg(href=view.continuePlayingLink()) Continue Playing button#continue-playing-btn.btn.btn-success.btn-lg Continue Playing
p p
em.spr em.spr
span.spr Last Played: span.spr Last Played:

View file

@ -4,21 +4,21 @@ template = require 'templates/courses/choose-language-modal'
module.exports = class ChooseLanguageModal extends ModalView module.exports = class ChooseLanguageModal extends ModalView
id: 'choose-language-modal' id: 'choose-language-modal'
template: template template: template
events: events:
'click .lang-choice-btn': 'onClickLanguageChoiceButton' 'click .lang-choice-btn': 'onClickLanguageChoiceButton'
initialize: (options) -> initialize: (options) ->
options ?= {} options ?= {}
@logoutFirst = options.logoutFirst @logoutFirst = options.logoutFirst
onClickLanguageChoiceButton: (e) -> onClickLanguageChoiceButton: (e) ->
@chosenLanguage = $(e.target).data('language') @chosenLanguage = $(e.target).closest('.lang-choice-btn').data('language')
if @logoutFirst if @logoutFirst
@logoutUser() @logoutUser()
else else
@saveLanguageSetting() @saveLanguageSetting()
logoutUser: -> logoutUser: ->
$.ajax({ $.ajax({
method: 'POST' method: 'POST'
@ -45,7 +45,8 @@ module.exports = class ChooseLanguageModal extends ModalView
@listenToOnce me, 'sync', @onLanguageSettingSaved @listenToOnce me, 'sync', @onLanguageSettingSaved
else else
@onLanguageSettingSaved() @onLanguageSettingSaved()
onLanguageSettingSaved: -> onLanguageSettingSaved: ->
@trigger('set-language') @trigger('set-language')
window.tracker?.trackEvent 'Chose language', category: 'Courses', label: @chosenLanguage
@hide() @hide()

View file

@ -18,7 +18,7 @@ module.exports = class HourOfCodeView extends RootView
template: template template: template
events: events:
'click #student-btn': 'onClickStudentButton' 'click #continue-playing-btn': 'onClickContinuePlayingButton'
'click #start-new-game-btn': 'onClickStartNewGameButton' 'click #start-new-game-btn': 'onClickStartNewGameButton'
'click #log-in-btn': 'onClickLogInButton' 'click #log-in-btn': 'onClickLogInButton'
'click #log-out-link': 'onClickLogOutLink' 'click #log-out-link': 'onClickLogOutLink'
@ -60,19 +60,25 @@ module.exports = class HourOfCodeView extends RootView
me.set('hourOfCode', true) me.set('hourOfCode', true)
me.patch() me.patch()
$('body').append($('<img src="https://code.org/api/hour/begin_codecombat.png" style="visibility: hidden;">')) $('body').append($('<img src="https://code.org/api/hour/begin_codecombat.png" style="visibility: hidden;">'))
application.tracker?.trackEvent 'Hour of Code Begin' window.tracker?.trackEvent 'Hour of Code Begin'
onClickContinuePlayingButton: ->
url = @continuePlayingLink()
window.tracker?.trackEvent 'HoC continue playing ', category: 'HoC', label: url
app.router.navigate(url, { trigger: true })
afterRender: -> afterRender: ->
super() super()
@onClickStartNewGameButton() if @getQueryVariable('go') and not @lastLevel @onClickStartNewGameButton() if @getQueryVariable('go') and not @lastLevel
onClickStartNewGameButton: -> onClickStartNewGameButton: ->
# user without hour of code course instance, creates one, starts playing # User without hour of code course instance, creates one, starts playing
modal = new ChooseLanguageModal({ modal = new ChooseLanguageModal({
logoutFirst: @hourOfCodeCourseInstance? logoutFirst: @hourOfCodeCourseInstance?
}) })
@openModalView(modal) @openModalView(modal)
@listenToOnce modal, 'set-language', @startHourOfCodePlay @listenToOnce modal, 'set-language', @startHourOfCodePlay
window.tracker?.trackEvent 'Start New Game', category: 'HoC', label: 'HoC Start New Game'
continuePlayingLink: -> continuePlayingLink: ->
ci = @hourOfCodeCourseInstance ci = @hourOfCodeCourseInstance
@ -91,10 +97,13 @@ module.exports = class HourOfCodeView extends RootView
modal = new StudentLogInModal() modal = new StudentLogInModal()
@openModalView(modal) @openModalView(modal)
modal.on 'want-to-create-account', @onWantToCreateAccount, @ modal.on 'want-to-create-account', @onWantToCreateAccount, @
window.tracker?.trackEvent 'Started Login', category: 'HoC', label: 'HoC Login'
onWantToCreateAccount: -> onWantToCreateAccount: ->
modal = new StudentSignUpModal() modal = new StudentSignUpModal()
@openModalView(modal) @openModalView(modal)
window.tracker?.trackEvent 'Started Signup', category: 'HoC', label: 'HoC Sign Up'
onClickLogOutLink: -> onClickLogOutLink: ->
window.tracker?.trackEvent 'Log Out', category: 'HoC', label: 'HoC Log Out'
auth.logoutUser() auth.logoutUser()

View file

@ -7,7 +7,7 @@ User = require 'models/User'
module.exports = class StudentSignInModal extends ModalView module.exports = class StudentSignInModal extends ModalView
id: 'student-log-in-modal' id: 'student-log-in-modal'
template: template template: template
events: events:
'click #log-in-btn': 'onClickLogInButton' 'click #log-in-btn': 'onClickLogInButton'
'submit form': 'onSubmitForm' 'submit form': 'onSubmitForm'
@ -16,11 +16,13 @@ module.exports = class StudentSignInModal extends ModalView
onSubmitForm: (e) -> onSubmitForm: (e) ->
e.preventDefault() e.preventDefault()
@login() @login()
onClickLogInButton: -> onClickLogInButton: ->
@login() @login()
login: -> login: ->
# TODO: doesn't track failed login
window.tracker?.trackEvent 'Finished Login', category: 'Courses', label: 'Courses Student Login'
data = forms.formToObject @$el data = forms.formToObject @$el
@enableModalInProgress(@$el) @enableModalInProgress(@$el)
auth.loginUser data, (jqxhr) => auth.loginUser data, (jqxhr) =>
@ -39,4 +41,4 @@ module.exports = class StudentSignInModal extends ModalView
afterInsert: -> afterInsert: ->
super() super()
_.delay (=> @$('input:visible:first').focus()), 500 _.delay (=> @$('input:visible:first').focus()), 500

View file

@ -23,7 +23,7 @@ module.exports = class StudentSignUpModal extends ModalView
afterInsert: -> afterInsert: ->
super() super()
_.delay (=> @$('input:visible:first').focus()), 500 _.delay (=> @$('input:visible:first').focus()), 500
onClickSkipLink: -> onClickSkipLink: ->
@trigger 'click-skip-link' # defer to view that opened this modal @trigger 'click-skip-link' # defer to view that opened this modal
@hide?() @hide?()
@ -71,7 +71,8 @@ module.exports = class StudentSignUpModal extends ModalView
data.emails ?= {} data.emails ?= {}
data.emails.generalNews ?= {} data.emails.generalNews ?= {}
data.emails.generalNews.enabled = false data.emails.generalNews.enabled = false
window.tracker?.trackEvent 'Finished Student Signup', label: 'CodeCombat' # TODO: Doesn't handle failed user creation. Double posts when placed in onCreateUserSuccess.
window.tracker?.trackEvent 'Finished Student Signup', category: 'Courses', label: 'Courses Student Signup'
@enableModalInProgress(@$el) @enableModalInProgress(@$el)
user = new User(data) user = new User(data)
user.notyErrors = false user.notyErrors = false