2014-12-23 09:42:24 -05:00
|
|
|
.jumbotron
|
|
|
|
.button.close(type="button", aria-hidden="true") ×
|
2014-12-29 15:46:14 -05:00
|
|
|
h1
|
|
|
|
span.spr= level.get('name')
|
|
|
|
a(href="/editor/level/#{level.get('slug')}", target="_blank") (edit)
|
2014-12-23 09:42:24 -05:00
|
|
|
p= level.get('description')
|
2014-12-29 15:46:14 -05:00
|
|
|
|
2014-12-31 14:49:17 -05:00
|
|
|
h4 Completion Rates
|
|
|
|
if levelCompletions
|
2014-12-31 16:19:46 -05:00
|
|
|
table.table.table-bordered.table-condensed.table-hover(style='font-size:10pt')
|
2014-12-31 14:49:17 -05:00
|
|
|
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...
|
2014-12-29 15:46:14 -05:00
|
|
|
|
2014-12-31 15:25:18 -05:00
|
|
|
h4 Average Playtimes
|
|
|
|
if levelPlaytimes
|
2014-12-31 16:19:46 -05:00
|
|
|
table.table.table-bordered.table-condensed.table-hover(style='font-size:10pt')
|
2014-12-31 15:25:18 -05:00
|
|
|
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...
|
2015-01-05 16:42:14 -05:00
|
|
|
|
|
|
|
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...
|
|
|
|
|
2015-01-05 18:40:26 -05:00
|
|
|
h4 Recent Sessions
|
|
|
|
if recentSessions
|
2015-01-07 17:49:21 -05:00
|
|
|
div(style='font-size:10pt') Latest #{recentSessions.length} sessions for this level
|
2015-01-05 18:40:26 -05:00
|
|
|
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
|
2015-01-08 19:01:47 -05:00
|
|
|
td Player
|
2015-01-05 18:40:26 -05:00
|
|
|
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
|
2015-01-08 19:01:47 -05:00
|
|
|
td= recentSessions[i].creatorName || recentSessions[i].creator
|
2015-01-05 18:40:26 -05:00
|
|
|
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...
|
|
|
|
|
2014-12-29 15:46:14 -05:00
|
|
|
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
|