h1 = "#{@exercise} (external user #{@external_user})" - submissions = Submission.where("user_id = ? AND exercise_id = ?", @external_user.id, @exercise.id).order("created_at") - current_submission = submissions.first - if current_submission - initial_files = current_submission.files.to_a - all_files = [] - file_types = Set.new() - submissions.each do |submission| - submission.files.each do |file| - file_types.add(ActiveSupport::JSON.encode(file.file_type)) - all_files.push(submission.files) .hidden#data data-submissions=ActiveSupport::JSON.encode(submissions) data-files=ActiveSupport::JSON.encode(all_files) data-file-types=ActiveSupport::JSON.encode(file_types) #stats-editor.row - index = 0 - all_files.each do |files| .files class=(@exercise.hide_file_tree ? 'hidden col-sm-3' : 'col-sm-3') data-index=index data-entries=FileTree.new(files).to_js_tree - index += 1 div class=(@exercise.hide_file_tree ? 'col-sm-12' : 'col-sm-9') #current-file.editor .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 - working_times_until = Array.new #timeline .table-responsive table.table thead tr - ['.time', '.cause', '.score', '.tests', '.time_difference'].each do |title| th.header = t(title) tbody - deltas = submissions.map.with_index {|item, index| delta = item.created_at - submissions[index - 1].created_at if index > 0; if delta == nil or delta > 30*60 then 0 else delta end} - submissions.each_with_index do |submission, index| tr data-id=submission.id td.clickable = submission.created_at.strftime("%F %T") td = submission.cause td = submission.score td -submission.testruns.each do |run| - if run.passed .unit-test-result.positive-result title=run.output - else .unit-test-result.negative-result title=run.output td = Time.at(deltas[1..index].inject(:+)).utc.strftime("%H:%M:%S") if index > 0 -working_times_until.push((Time.at(deltas[1..index].inject(:+)).utc.strftime("%H:%M:%S") if index > 0)) p = t('.addendum') .hidden#wtimes data-working_times=ActiveSupport::JSON.encode(working_times_until); div#progress_chart.col-lg-12 .graph-functions-2 - else p = t('.no_data_available')