mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2024-11-25 00:28:31 -05:00
c54fea929e
Optimize analytics.log.event user event data find() to use stream() instead of exec(), which is better for large result sets Fix startDay formatting bug Per-level recent sessions to 100
101 lines
3.1 KiB
Text
101 lines
3.1 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 %
|
|
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
|
|
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 ID
|
|
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].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
|