Add playtimes to overall campaign editor analytics

This commit is contained in:
Matt Lott 2015-01-15 16:07:26 -08:00
parent e67532cf5d
commit 770d3f5229
3 changed files with 36 additions and 8 deletions

View file

@ -29,7 +29,5 @@
padding: 3px 8px
#analytics-modal
.modal-dialog
width: 75%
.modal-content
background-color: white

View file

@ -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

View file

@ -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'