2015-11-04 13:54:40 -05:00
|
|
|
extends /templates/base
|
|
|
|
|
|
|
|
block content
|
|
|
|
|
|
|
|
if me.isAdmin()
|
|
|
|
.container-fluid
|
|
|
|
.row
|
2015-11-06 17:11:36 -05:00
|
|
|
.col-md-5.big-stat.active-classes
|
|
|
|
if activeClasses.length > 0
|
|
|
|
div.description 30-day Active Classes
|
|
|
|
div.count= activeClasses[0].groups[activeClasses[0].groups.length - 1]
|
2015-11-08 20:00:24 -05:00
|
|
|
.col-md-5.big-stat.recurring-revenue
|
|
|
|
if revenue.length > 0
|
|
|
|
div.description 30-day Monthly Recurring Revenue
|
|
|
|
div.count $#{Math.round((revenue[0].groups[revenue[0].groups.length - 1]) / 100)}
|
2015-11-04 13:54:40 -05:00
|
|
|
.col-md-5.big-stat.active-users
|
|
|
|
if activeUsers.length > 0
|
|
|
|
div.description 30-day Active Users
|
|
|
|
div.count= activeUsers[0].monthlyCount
|
|
|
|
|
2015-11-06 17:11:36 -05:00
|
|
|
h1 Active Classes
|
|
|
|
table.table.table-striped.table-condensed
|
|
|
|
tr
|
|
|
|
th Day
|
|
|
|
for group in activeClassGroups
|
|
|
|
th= group.replace('Active classes', '')
|
|
|
|
each activeClass in activeClasses
|
|
|
|
tr
|
|
|
|
td= activeClass.day
|
|
|
|
each val in activeClass.groups
|
|
|
|
td= val
|
|
|
|
|
2015-11-08 20:00:24 -05:00
|
|
|
h1 Recurring Revenue
|
|
|
|
table.table.table-striped.table-condensed
|
|
|
|
tr
|
|
|
|
th Day
|
|
|
|
for group in revenueGroups
|
|
|
|
th= group.replace('DRR ', '')
|
|
|
|
each entry in revenue
|
|
|
|
tr
|
|
|
|
td= entry.day
|
|
|
|
each val in entry.groups
|
|
|
|
td $#{(val / 100).toFixed(2)}
|
|
|
|
|
2015-11-04 13:54:40 -05:00
|
|
|
h1 Active Users
|
|
|
|
table.table.table-striped.table-condensed
|
|
|
|
tr
|
|
|
|
th Day
|
|
|
|
th Daily Actives
|
|
|
|
th Monthly Actives
|
|
|
|
th DAUs / MAUs
|
|
|
|
each activeUser in activeUsers
|
|
|
|
tr
|
|
|
|
td= activeUser.day
|
|
|
|
td= activeUser.dailyCount
|
|
|
|
if activeUser.monthlyCount
|
|
|
|
td= activeUser.monthlyCount
|
|
|
|
td #{(activeUser.dailyCount / activeUser.monthlyCount * 100).toFixed(2)}%
|
|
|
|
else
|
|
|
|
td
|
|
|
|
td
|