diff --git a/app/controllers/exercises_controller.rb b/app/controllers/exercises_controller.rb index 820e61ac..688177e5 100644 --- a/app/controllers/exercises_controller.rb +++ b/app/controllers/exercises_controller.rb @@ -492,13 +492,13 @@ working_time_accumulated: working_time_accumulated}) # Render statistics page for one specific external user if policy(@exercise).detailed_statistics? - @submissions = Submission.where(user: @external_user, + submissions = Submission.where(user: @external_user, exercise_id: @exercise.id).in_study_group_of(current_user).order('created_at') @show_autosaves = params[:show_autosaves] == 'true' - @submissions = @submissions.where.not(cause: 'autosave') unless @show_autosaves + submissions = submissions.where.not(cause: 'autosave') unless @show_autosaves interventions = UserExerciseIntervention.where('user_id = ? AND exercise_id = ?', @external_user.id, @exercise.id) - @all_events = (@submissions + interventions).sort_by(&:created_at) + @all_events = (submissions + interventions).sort_by(&:created_at) @deltas = @all_events.map.with_index do |item, index| delta = item.created_at - @all_events[index - 1].created_at if index.positive? delta.nil? || (delta > StatisticsHelper::WORKING_TIME_DELTA_IN_SECONDS) ? 0 : delta @@ -510,12 +510,12 @@ working_time_accumulated: working_time_accumulated}) else final_submissions = Submission.where(user: @external_user, exercise_id: @exercise.id).in_study_group_of(current_user).final - @submissions = [] + submissions = [] %i[before_deadline within_grace_period after_late_deadline].each do |filter| relevant_submission = final_submissions.send(filter).latest - @submissions.push relevant_submission if relevant_submission.present? + submissions.push relevant_submission if relevant_submission.present? end - @all_events = @submissions + @all_events = submissions end render 'exercises/external_users/statistics' diff --git a/app/views/exercises/external_users/statistics.html.slim b/app/views/exercises/external_users/statistics.html.slim index f9622c49..22a10c98 100644 --- a/app/views/exercises/external_users/statistics.html.slim +++ b/app/views/exercises/external_users/statistics.html.slim @@ -3,20 +3,21 @@ h1 ' (external user = link_to_if(policy(@external_user).show?, @external_user.displayname, @external_user) ' ) -- current_submission = @submissions.first +- submissions = @all_events.filter{|event| event.is_a? Submission} +- current_submission = submissions.first - if current_submission - initial_files = current_submission.files.to_a - all_files = [] - file_types = Set.new() - - @submissions.each do |submission| + - submissions.each do |submission| - submission.files.each do |file| - file_types.add(ActiveSupport::JSON.encode(file.file_type)) - all_files.push(submission.files) - all_files.reject!(&:blank?) - file_types.reject!(&:blank?) - .d-none#data data-submissions=ActiveSupport::JSON.encode(@submissions) data-files=ActiveSupport::JSON.encode(all_files) data-file-types=ActiveSupport::JSON.encode(file_types) + .d-none#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 @@ -33,7 +34,7 @@ h1 input type='range' orient='horizontal' list='datapoints' min=0 max=all_files.length-1 value=0 style="width: 100%" datalist#datapoints - index=0 - - @submissions.each do |submission| + - submissions.each do |submission| - next if submission.files.blank? option data-submission=submission =index