mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2024-11-28 10:06:08 -05:00
7fda59ee2d
Adding help click counts and help videos start counts to level view analytics.
111 lines
3.7 KiB
Text
111 lines
3.7 KiB
Text
.jumbotron
|
|
.button.close(type="button", aria-hidden="true") ×
|
|
h1
|
|
span.spr= level.get('name')
|
|
a(href="/editor/level/#{level.get('slug')}", target="_blank") (edit)
|
|
p= level.get('description')
|
|
|
|
h4 Completion Rates
|
|
if levelCompletions
|
|
table.table.table-bordered.table-condensed.table-hover(style='font-size:10pt')
|
|
thead
|
|
tr
|
|
td Date
|
|
td Started
|
|
td Finished
|
|
td Completion %
|
|
if levelHelps && levelHelps.length === levelCompletions.length
|
|
td Helps Clicked
|
|
td Helps / Started
|
|
td Help Videos
|
|
td Videos / Started
|
|
tbody
|
|
- for (var i = 0; i < levelCompletions.length; i++)
|
|
tr
|
|
td= levelCompletions[i].created
|
|
td= levelCompletions[i].started
|
|
td= levelCompletions[i].finished
|
|
td= levelCompletions[i].rate
|
|
if levelHelps && levelHelps.length === levelCompletions.length
|
|
td= levelHelps[i].alertHelps + levelHelps[i].paletteHelps
|
|
td= ((levelHelps[i].alertHelps + levelHelps[i].paletteHelps) / levelCompletions[i].started).toFixed(2)
|
|
td= levelHelps[i].videoStarts
|
|
td= (levelHelps[i].videoStarts / levelCompletions[i].started).toFixed(2)
|
|
else
|
|
div Loading...
|
|
|
|
h4 Average Playtimes
|
|
if levelPlaytimes
|
|
table.table.table-bordered.table-condensed.table-hover(style='font-size:10pt')
|
|
thead
|
|
tr
|
|
td Date
|
|
td Average (s)
|
|
tbody
|
|
- for (var i = 0; i < levelPlaytimes.length; i++)
|
|
tr
|
|
td= levelPlaytimes[i].created
|
|
td= levelPlaytimes[i].average.toFixed(2)
|
|
else
|
|
div Loading...
|
|
|
|
h4 Common Problems
|
|
if commonProblems
|
|
if commonProblems.startDay
|
|
if commonProblems.endDay
|
|
div(style='font-size:10pt') #{commonProblems.startDay} to #{commonProblems.endDay}
|
|
else
|
|
div(style='font-size:10pt') #{commonProblems.startDay} to today
|
|
table.table.table-bordered.table-condensed.table-hover(style='font-size:10pt')
|
|
thead
|
|
tr
|
|
td Language
|
|
td Error Message
|
|
td Error Hint
|
|
td Count
|
|
tbody
|
|
- for (var i = 0; i < commonProblems.length && i < 20; i++)
|
|
tr
|
|
td= commonProblems[i].language
|
|
td= commonProblems[i].message
|
|
td= commonProblems[i].hint
|
|
td= commonProblems[i].count
|
|
else
|
|
div Loading...
|
|
|
|
h4 Recent Sessions
|
|
if recentSessions
|
|
div(style='font-size:10pt') Latest #{recentSessions.length} sessions for this level
|
|
div(style='font-size:10pt') Double-click row to open player and session
|
|
table.table.table-bordered.table-condensed.table-hover(style='font-size:10pt')
|
|
thead
|
|
tr
|
|
td Session ID
|
|
td Player
|
|
td Code Language
|
|
td Playtime
|
|
td Complete
|
|
td Changed
|
|
tbody
|
|
- for (var i = 0; i < recentSessions.length; i++)
|
|
tr.recent-session(data-player-id=recentSessions[i].creator, data-session-id=recentSessions[i]._id)
|
|
td= recentSessions[i]._id
|
|
td= recentSessions[i].creatorName || recentSessions[i].creator
|
|
td= recentSessions[i].codeLanguage
|
|
td= recentSessions[i].playtime
|
|
if recentSessions[i].state && recentSessions[i].state.complete
|
|
td= recentSessions[i].state.complete
|
|
else
|
|
td false
|
|
td= recentSessions[i].changed
|
|
else
|
|
div Loading...
|
|
|
|
if level.get('tasks')
|
|
.tasks
|
|
h3 Tasks (read only)
|
|
ul.list-unstyled
|
|
for task in level.get('tasks')
|
|
li
|
|
input(type='checkbox', checked=task.complete)
|
|
span.spl= task.name
|