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 submissions = $('#data').data('submissions');
var files = $('#data').data('files'); var files = $('#data').data('files');
var filetypes = $('#data').data('file-types'); var filetypes = $('#data').data('file-types');
var playButton = $('#play-button');
var playInterval = undefined;
editor = ace.edit('current-file'); editor = ace.edit('current-file');
editor.setShowPrintMargin(false); editor.setShowPrintMargin(false);
@@ -88,6 +90,23 @@ $(function() {
showActiveFile(); 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] active_file = files[0][0]
initializeFileTree(); initializeFileTree();
showActiveFile(); showActiveFile();

View File

@@ -10,3 +10,19 @@
.clickable { .clickable {
cursor: pointer; 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, (SELECT user_id,
id, id,
(created_at - lag(created_at) over (PARTITION BY user_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 FROM submissions
WHERE exercise_id=#{id}) AS foo) AS bar WHERE exercise_id=#{id}) AS foo) AS bar
GROUP BY user_id 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') div class=(@exercise.hide_file_tree ? 'col-sm-12' : 'col-sm-9')
#current-file.editor #current-file.editor
#submissions-slider .flex-container
input type='range' orient='horizontal' list='datapoints' min=0 max=submissions.length-1 value=0 button.btn.btn-default id='play-button'
datalist#datapoints span.fa.fa-play
- index=0 #submissions-slider.flex-item
- submissions.each do |submission| input type='range' orient='horizontal' list='datapoints' min=0 max=submissions.length-1 value=0
option data-submission=submission datalist#datapoints
=index - index=0
- index += 1 - submissions.each do |submission|
option data-submission=submission
=index
- index += 1
#timeline #timeline
.table-responsive .table-responsive

View File

@@ -1,2 +1,18 @@
h1 = @user h1 = t('.title')
H2 = 'Hallo'
- 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 time: Zeit
cause: Grund cause: Grund
score: Punktzahl score: Punktzahl
external_users:
statistics:
title: Statistiken für Externe Benutzer
exercise: Übung
score: Bewertung
runs: Versuche
worktime: Arbeitszeit
files: files:
roles: roles:
main_file: Hauptdatei main_file: Hauptdatei

View File

@@ -259,6 +259,13 @@ en:
time: Time time: Time
cause: Cause cause: Cause
score: Score score: Score
external_users:
statistics:
title: External User Statistics
exercise: Exercise
score: Score
runs: Runs
worktime: Working Time
files: files:
roles: roles:
main_file: Main File main_file: Main File