mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2025-02-17 08:50:58 -05:00
Add playtimes to overall campaign editor analytics
This commit is contained in:
parent
e67532cf5d
commit
770d3f5229
3 changed files with 36 additions and 8 deletions
|
@ -29,7 +29,5 @@
|
|||
padding: 3px 8px
|
||||
|
||||
#analytics-modal
|
||||
.modal-dialog
|
||||
width: 75%
|
||||
.modal-content
|
||||
background-color: white
|
||||
|
|
|
@ -41,9 +41,9 @@ block outer_content
|
|||
#campaign-view
|
||||
#campaign-level-view.hidden
|
||||
if campaignCompletions
|
||||
button.btn.btn-default#analytics-button(title="Analytics", data-toggle="modal" data-target="#analytics-modal") Analytics
|
||||
button.btn.btn-default#analytics-button(title="Analytics", data-toggle="modal" data-target="#analytics-modal") Analytics
|
||||
.modal.fade#analytics-modal(tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true")
|
||||
.modal-dialog
|
||||
.modal-dialog.modal-lg
|
||||
.modal-content
|
||||
.modal-header
|
||||
button.close(type="button", data-dismiss="modal", aria-label="Close")
|
||||
|
@ -61,6 +61,7 @@ block outer_content
|
|||
td Level
|
||||
td Started
|
||||
td Finished
|
||||
td Playtime (s)
|
||||
td Completion %
|
||||
tbody
|
||||
- for (var i = 0; i < campaignCompletions.levels.length; i++)
|
||||
|
@ -68,6 +69,7 @@ block outer_content
|
|||
td= campaignCompletions.levels[i].level
|
||||
td= campaignCompletions.levels[i].started
|
||||
td= campaignCompletions.levels[i].finished
|
||||
td= campaignCompletions.levels[i].averagePlaytime
|
||||
if campaignCompletions.top3.indexOf(campaignCompletions.levels[i].level) >= 0
|
||||
td(style='background-color:lightblue;')= campaignCompletions.levels[i].completionRate
|
||||
else if campaignCompletions.bottom3.indexOf(campaignCompletions.levels[i].level) >= 0
|
||||
|
|
|
@ -47,7 +47,7 @@ module.exports = class CampaignEditorView extends RootView
|
|||
@listenToOnce @levels, 'sync', @onFundamentalLoaded
|
||||
@listenToOnce @achievements, 'sync', @onFundamentalLoaded
|
||||
|
||||
_.delay @getCampaignCompletions, 500
|
||||
_.delay @getCampaignAnalytics, 500
|
||||
|
||||
loadThangTypeNames: ->
|
||||
# Load the names of the ThangTypes that this level's Treema nodes might want to display.
|
||||
|
@ -240,8 +240,8 @@ module.exports = class CampaignEditorView extends RootView
|
|||
if achievement.hasLocalChanges()
|
||||
@toSave.add achievement
|
||||
|
||||
getCampaignCompletions: =>
|
||||
# Fetch last 14 days of campaign drop-off rates
|
||||
getCampaignAnalytics: =>
|
||||
# Fetch last 14 days of campaign analytics
|
||||
|
||||
startDay = utils.getUTCDay -14
|
||||
endDay = utils.getUTCDay -1
|
||||
|
@ -260,7 +260,7 @@ module.exports = class CampaignEditorView extends RootView
|
|||
@campaignCompletions.bottom3 = _.pluck sortedLevels[0..2], 'level'
|
||||
@campaignCompletions.startDay = "#{startDay[0..3]}-#{startDay[4..5]}-#{startDay[6..7]}"
|
||||
@campaignCompletions.endDay = "#{endDay[0..3]}-#{endDay[4..5]}-#{endDay[6..7]}"
|
||||
@render()
|
||||
@getCampaignAveragePlaytimes()
|
||||
|
||||
# TODO: Why do we need this url dash?
|
||||
request = @supermodel.addRequestResource 'campaign_completions', {
|
||||
|
@ -271,6 +271,34 @@ module.exports = class CampaignEditorView extends RootView
|
|||
}, 0
|
||||
request.load()
|
||||
|
||||
getCampaignAveragePlaytimes: =>
|
||||
# Fetch last 14 days of level average playtimes
|
||||
success = (data) =>
|
||||
return if @destroyed
|
||||
levelAverages = {}
|
||||
for item in data
|
||||
levelAverages[item.level] ?= []
|
||||
levelAverages[item.level].push item.average
|
||||
for level in @campaignCompletions.levels
|
||||
if levelAverages[level.level]
|
||||
if levelAverages[level.level].length > 0
|
||||
total = _.reduce levelAverages[level.level], ((sum, num) -> sum + num)
|
||||
level.averagePlaytime = (total / levelAverages[level.level].length).toFixed(2)
|
||||
else
|
||||
level.averagePlaytime = 0.0
|
||||
@render()
|
||||
|
||||
levelSlugs = _.pluck @campaignCompletions.levels, 'level'
|
||||
startDay = utils.getUTCDay -14
|
||||
startDay = "#{startDay[0..3]}-#{startDay[4..5]}-#{startDay[6..7]}"
|
||||
request = @supermodel.addRequestResource 'playtime_averages', {
|
||||
url: '/db/level/-/playtime_averages'
|
||||
data: {startDay: startDay, slugs: levelSlugs}
|
||||
method: 'POST'
|
||||
success: success
|
||||
}, 0
|
||||
request.load()
|
||||
|
||||
|
||||
class LevelsNode extends TreemaObjectNode
|
||||
valueClass: 'treema-levels'
|
||||
|
|
Loading…
Reference in a new issue