-
Notifications
You must be signed in to change notification settings - Fork 42
Expand file tree
/
Copy pathpoint_visualisation.rb
More file actions
30 lines (27 loc) · 1 KB
/
point_visualisation.rb
File metadata and controls
30 lines (27 loc) · 1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# frozen_string_literal: true.
module PointVisualisation
extend ActiveSupport::Concern
def define_point_stats(user)
# TODO: bit ugly
@awarded_points = Hash[AwardedPoint.where(id: AwardedPoint.all_awarded(user)).to_a.sort!.group_by(&:course_id).map { |k, v| [k, v.map(&:name)] }]
@courses = []
@missing_points = {}
@percent_completed = {}
@group_completion_ratios = {}
@awarded_points.keys.each do |course_id|
course = Course.find(course_id)
next if course.hide_submissions?
@courses << course
awarded = @awarded_points[course.id]
missing = AvailablePoint.course_points(course).order!.map(&:name) - awarded
@missing_points[course_id] = missing
@percent_completed[course_id] =
if (awarded.size + missing.size).positive?
100 * (awarded.size.to_f / (awarded.size + missing.size))
else
0
end
@group_completion_ratios[course_id] = course.exercise_group_completion_ratio_for_user(user)
end
end
end