Add DAU 30-day avg and daily total to dashboard

This commit is contained in:
Matt Lott 2016-03-08 15:27:54 -08:00
parent a684d40132
commit eb7bebe293
2 changed files with 25 additions and 27 deletions
app
templates/admin
views/admin

View file

@ -276,16 +276,11 @@ block content
th(style='min-width:85px;') Day
each eventName in eventNames
th= eventName
th DAU Classroom Total
each activeUser in activeUsers
tr
td= activeUser.day
- var dauClassroomTotal = 0
each eventName in eventNames
if eventName.indexOf('DAU') >= 0
- dauClassroomTotal += (activeUser.events[eventName] || 0);
td= activeUser.events[eventName] || 0
td= dauClassroomTotal
h1#enrollments-table Enrollments
table.table.table-striped.table-condensed
@ -336,17 +331,11 @@ block content
th(style='min-width:85px;') Day
each eventName in eventNames
th= eventName
th DAU Total
each activeUser in activeUsers
tr
td= activeUser.day
- var dauCampaignTotal = 0
each eventName in eventNames
if eventName.indexOf('DAU') >= 0
- dauCampaignTotal += (activeUser.events[eventName] || 0);
td= activeUser.events[eventName] || 0
td= dauCampaignTotal
.tab-pane#tab_campaign_vs_classroom
h3 Campaign vs Classroom Paid Monthly Active Users 90 days
@ -376,18 +365,8 @@ block content
th(style='min-width:85px;') Day
each eventName in eventNames
th= eventName
th DAU Campaign Total
th DAU Classroom Total
each activeUser in activeUsers
tr
td= activeUser.day
- var dauCampaignTotal = 0
- var dauClassroomTotal = 0
each eventName in eventNames
td= activeUser.events[eventName] || 0
if eventName.indexOf('DAU campaign') >= 0
- dauCampaignTotal += (activeUser.events[eventName] || 0);
else if eventName.indexOf('DAU classroom') >= 0
- dauClassroomTotal += (activeUser.events[eventName] || 0);
td= dauCampaignTotal
td= dauClassroomTotal

View file

@ -74,6 +74,30 @@ module.exports = class AnalyticsView extends RootView
@activeUsers = data.map (a) ->
a.day = "#{a.day.substring(0, 4)}-#{a.day.substring(4, 6)}-#{a.day.substring(6, 8)}"
a
# Add campaign/classroom DAU 30-day averages and daily totals
campaignDauTotals = []
classroomDauTotals = []
for entry in @activeUsers
day = entry.day
campaignDauTotal = 0
classroomDauTotal = 0
for event, count of entry.events
if event.indexOf('DAU campaign') >= 0
campaignDauTotal += count
else if event.indexOf('DAU classroom') >= 0
classroomDauTotal += count
entry.events['DAU campaign total'] = campaignDauTotal
campaignDauTotals.unshift(campaignDauTotal)
campaignDauTotals.pop() while campaignDauTotals.length > 30
if campaignDauTotals.length is 30
entry.events['DAU campaign 30-day average'] = Math.round(_.reduce(campaignDauTotals, (a, b) -> a + b) / 30)
entry.events['DAU classroom total'] = classroomDauTotal
classroomDauTotals.unshift(classroomDauTotal)
classroomDauTotals.pop() while classroomDauTotals.length > 30
if classroomDauTotals.length is 30
entry.events['DAU classroom 30-day average'] = Math.round(_.reduce(classroomDauTotals, (a, b) -> a + b) / 30)
@activeUsers.sort (a, b) -> b.day.localeCompare(a.day)
@updateAllKPIChartData()
@ -433,7 +457,7 @@ module.exports = class AnalyticsView extends RootView
max: _.max(points, 'y').y
showYScale: true
# Build campaign and classroom MAU KPI lines
# Build campaign MAU KPI line
if @activeUsers?.length > 0
eventDayDataMap = {}
for entry in @activeUsers
@ -443,14 +467,9 @@ module.exports = class AnalyticsView extends RootView
eventDayDataMap['MAU campaign'] ?= {}
eventDayDataMap['MAU campaign'][day] ?= 0
eventDayDataMap['MAU campaign'][day] += count
else if event.indexOf('MAU classroom') >= 0
eventDayDataMap['MAU classroom'] ?= {}
eventDayDataMap['MAU classroom'][day] ?= 0
eventDayDataMap['MAU classroom'][day] += count
campaignData = []
for event, entry of eventDayDataMap
continue unless event is 'MAU campaign'
for day, count of entry
campaignData.push day: day, value: count / 1000
campaignData.reverse()