Merge pull request #35 from openHPI/statistics

Statistics
This commit is contained in:
rteusner
2015-12-16 16:40:05 +01:00
7 changed files with 79 additions and 11 deletions

View File

@ -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();

View File

@ -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;
}

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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