Files
codeocean/app/views/exercises/external_users/statistics.html.slim
Sebastian Serth 9a9efd5caa Lint Slim files and fix offenses
The fixing was partially done manually and partially automatically.
2024-04-18 08:31:24 +02:00

112 lines
5.0 KiB
Plaintext

h1
=> @exercise
' (external user
= link_to_if(policy(@external_user).show?, @external_user.displayname, @external_user)
' )
- submissions = @all_events.filter {|event| event.is_a? Submission }
- current_submission = submissions.first
- if current_submission
- 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)
- all_files.compact_blank!
- file_types.reject!(&:blank?) # rubocop:disable Rails/CompactBlank because it's a set
.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
- all_files.each do |files|
.files class=(@exercise.hide_file_tree ? 'd-none col-sm-3' : 'col-sm-3') data-index=index data-entries=FileTree.new(files).to_js_tree_in_json
- index += 1
div class=(@exercise.hide_file_tree ? 'col-sm-12' : 'col-sm-9')
#current-file.editor
.flex-container
button.btn.btn-secondary#play-button
span.fa-solid.fa-play
#submissions-slider.flex-item
input.w-100 type='range' orient='horizontal' list='datapoints' value=0 min=0 max=all_files.length - 1
datalist#datapoints
- index = 0
- submissions.each do |submission|
- next if submission.files.blank?
option data-submission=submission
= index
- index += 1
- if policy(@exercise).detailed_statistics?
.bg-body-secondary.w-100.p-2.mb-4.align-items-center.d-flex.justify-content-between
- if @show_autosaves
span.ps-1.pb-1
i.fa-solid.fa-circle-info.align-middle
small.me-5.ms-1 = t('.toggle_status_on')
= link_to t('.toggle_autosave_off'), statistics_external_user_exercise_path(show_autosaves: false), class: 'btn btn-outline-contrast float-end btn-sm'
- else
span.ps-1.pb-1
i.fa-solid.fa-circle-info.align-middle
small.me-5.ms-1 = t('.toggle_status_off')
= link_to t('.toggle_autosave_on'), statistics_external_user_exercise_path(show_autosaves: true), class: 'btn btn-outline-contrast float-end btn-sm'
#timeline
.table-responsive
table.table
thead
tr
th.header = t('.time')
th.header = t('.cause')
th.header = t('.score')
th.header = t('.tests')
th.header = t('.time_difference') if policy(@exercise).detailed_statistics?
tbody
- @all_events.each_with_index do |this, event_index|
- highlight = event_index.positive? && @deltas.present? && @deltas[event_index].zero? && this.created_at.to_s != @all_events[event_index - 1].created_at.to_s
- row_classes = ''
- row_classes += ' highlight' if highlight
- row_classes += ' before_deadline' if this.is_a?(Submission) && this.before_deadline?
- row_classes += ' within_grace_period' if this.is_a?(Submission) && this.within_grace_period?
- row_classes += ' after_late_deadline' if this.is_a?(Submission) && this.after_late_deadline?
tr data-id=this.id class=row_classes
- if this.is_a?(Submission)
td class=(this.files.present? ? 'clickable' : '')
= this.created_at.strftime('%F %T')
td = this.cause
td = this.score
td.align-middle
-this.testruns.sort_by {|t| [t.file&.name ? 0 : 1, t.file&.name] }.each do |run|
- if run.passed
.unit-test-result.positive-result title=[run.file&.filepath, run.log].join("\n").strip
- else
.unit-test-result.unknown-result title=[run.file&.filepath, run.log].join("\n").strip
td = @working_times_until[event_index] if event_index.positive? && policy(@exercise).detailed_statistics?
- elsif this.is_a? UserExerciseIntervention
td = this.created_at.strftime('%F %T')
td = this.intervention.name
td
td
td = @working_times_until[event_index] if event_index.positive? && policy(@exercise).detailed_statistics?
small
b
= t('.legend')
.container.px-0.border
.row.w-100.mx-0
.col-sm-3.py-2
= t('.no_deadline')
.col-sm-3.before_deadline.py-2
= t('.before_deadline')
.col-sm-3.within_grace_period.py-2
= t('.within_grace_period')
.col-sm-3.after_late_deadline.py-2
= t('.after_late_deadline')
- unless current_user.try(:admin?)
p.mt-2 = t('.filter')
- if current_user.try(:admin?)
p = t('.addendum', delta: StatisticsHelper::WORKING_TIME_DELTA_IN_SECONDS / 60)
.d-none#wtimes data-working_times=ActiveSupport::JSON.encode(@working_times_until)
#progress_chart.col-lg-12
.graph-functions-2
- else
p = t('.no_data_available')