@ -55,6 +55,8 @@ $(function() {
|
||||
var submissions = $('#data').data('submissions');
|
||||
var files = $('#data').data('files');
|
||||
var filetypes = $('#data').data('file-types');
|
||||
var playButton = $('#play-button');
|
||||
var playInterval = undefined;
|
||||
|
||||
editor = ace.edit('current-file');
|
||||
editor.setShowPrintMargin(false);
|
||||
@ -88,6 +90,23 @@ $(function() {
|
||||
showActiveFile();
|
||||
});
|
||||
|
||||
playButton.on('click', function(event) {
|
||||
if (playInterval == undefined) {
|
||||
playInterval = setInterval(function() {
|
||||
if ($.isController('exercises') && $('#timeline').isPresent() && slider.val() < submissions.length - 1) {
|
||||
slider.val(parseInt(slider.val()) + 1);
|
||||
slider.change()
|
||||
} else {
|
||||
clearInterval(playInterval);
|
||||
}
|
||||
}, 5000);
|
||||
playButton.find('span.fa').removeClass('fa-play').addClass('fa-pause')
|
||||
} else {
|
||||
clearInterval(playInterval);
|
||||
playButton.find('span.fa').removeClass('fa-pause').addClass('fa-play')
|
||||
}
|
||||
});
|
||||
|
||||
active_file = files[0][0]
|
||||
initializeFileTree();
|
||||
showActiveFile();
|
||||
|
@ -10,3 +10,19 @@
|
||||
.clickable {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.flex-container {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.flex-item {
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
#play-button {
|
||||
height: 40px;
|
||||
width: 40px;
|
||||
margin-right: 15px;
|
||||
margin-top: auto;
|
||||
margin-bottom: auto;
|
||||
}
|
||||
|
@ -53,7 +53,7 @@ class Exercise < ActiveRecord::Base
|
||||
(SELECT user_id,
|
||||
id,
|
||||
(created_at - lag(created_at) over (PARTITION BY user_id
|
||||
ORDER BY id)) AS working_time
|
||||
ORDER BY created_at)) AS working_time
|
||||
FROM submissions
|
||||
WHERE exercise_id=#{id}) AS foo) AS bar
|
||||
GROUP BY user_id
|
||||
|
@ -21,14 +21,17 @@ h1 = "#{@exercise} (external user #{@external_user})"
|
||||
div class=(@exercise.hide_file_tree ? 'col-sm-12' : 'col-sm-9')
|
||||
#current-file.editor
|
||||
|
||||
#submissions-slider
|
||||
input type='range' orient='horizontal' list='datapoints' min=0 max=submissions.length-1 value=0
|
||||
datalist#datapoints
|
||||
- index=0
|
||||
- submissions.each do |submission|
|
||||
option data-submission=submission
|
||||
=index
|
||||
- index += 1
|
||||
.flex-container
|
||||
button.btn.btn-default id='play-button'
|
||||
span.fa.fa-play
|
||||
#submissions-slider.flex-item
|
||||
input type='range' orient='horizontal' list='datapoints' min=0 max=submissions.length-1 value=0
|
||||
datalist#datapoints
|
||||
- index=0
|
||||
- submissions.each do |submission|
|
||||
option data-submission=submission
|
||||
=index
|
||||
- index += 1
|
||||
|
||||
#timeline
|
||||
.table-responsive
|
||||
|
@ -1,2 +1,18 @@
|
||||
h1 = @user
|
||||
H2 = 'Hallo'
|
||||
h1 = t('.title')
|
||||
|
||||
- exercises = Exercise.where(:id => @user.submissions.group(:exercise_id).select(:exercise_id).distinct())
|
||||
|
||||
.table-responsive
|
||||
table.table
|
||||
thead
|
||||
tr
|
||||
- ['.exercise', '.score', '.runs', '.worktime'].each do |title|
|
||||
th.header = t(title)
|
||||
tbody
|
||||
- exercises.each do |exercise|
|
||||
- submissions = @user.submissions.where(:exercise_id => exercise.id, :cause => ['submit', 'run'])
|
||||
tr
|
||||
td = link_to exercise, controller: "exercises", action: "statistics", external_user_id: @user.id, id: exercise.id
|
||||
td = submissions.maximum(:score) or 0
|
||||
td = submissions.count
|
||||
td = exercise.average_working_time_for(@user.id) or 0
|
||||
|
@ -259,6 +259,13 @@ de:
|
||||
time: Zeit
|
||||
cause: Grund
|
||||
score: Punktzahl
|
||||
external_users:
|
||||
statistics:
|
||||
title: Statistiken für Externe Benutzer
|
||||
exercise: Übung
|
||||
score: Bewertung
|
||||
runs: Versuche
|
||||
worktime: Arbeitszeit
|
||||
files:
|
||||
roles:
|
||||
main_file: Hauptdatei
|
||||
|
@ -259,6 +259,13 @@ en:
|
||||
time: Time
|
||||
cause: Cause
|
||||
score: Score
|
||||
external_users:
|
||||
statistics:
|
||||
title: External User Statistics
|
||||
exercise: Exercise
|
||||
score: Score
|
||||
runs: Runs
|
||||
worktime: Working Time
|
||||
files:
|
||||
roles:
|
||||
main_file: Main File
|
||||
|
Reference in New Issue
Block a user