Class: StudyEngine::Report
- Inherits:
-
Struct
- Object
- Struct
- StudyEngine::Report
- Defined in:
- app/models/study_engine/report.rb
Instance Attribute Summary collapse
-
#assessments ⇒ Object
Returns the value of attribute assessments.
-
#direction ⇒ Object
Returns the value of attribute direction.
-
#field ⇒ Object
Returns the value of attribute field.
Class Method Summary collapse
Instance Method Summary collapse
Instance Attribute Details
#assessments ⇒ Object
Returns the value of attribute assessments
4 5 6 |
# File 'app/models/study_engine/report.rb', line 4 def assessments @assessments end |
#direction ⇒ Object
Returns the value of attribute direction
4 5 6 |
# File 'app/models/study_engine/report.rb', line 4 def direction @direction end |
#field ⇒ Object
Returns the value of attribute field
4 5 6 |
# File 'app/models/study_engine/report.rb', line 4 def field @field end |
Class Method Details
.event_fields ⇒ Object
5 6 7 |
# File 'app/models/study_engine/report.rb', line 5 def self.event_fields StudyEngine.events.map.with_index { |_, index| :"event_#{index}" } end |
.group_class ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'app/models/study_engine/report.rb', line 9 def self.group_class Struct.new(:study_id, *event_fields) do def each(&block) Report.event_fields.map { |field| send(field) }.each(&block) end def max_count Report.event_fields.map { |field| send(field).count }.max end def == other values == other.values end end end |
Instance Method Details
#ascending? ⇒ Boolean
50 51 52 |
# File 'app/models/study_engine/report.rb', line 50 def ascending? direction == "ASC" end |
#build_groups ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'app/models/study_engine/report.rb', line 29 def build_groups assessments.reduce({}) do |groups, assessment| group = groups[assessment.study_id.to_s] || new_empty_group(assessment.study_id) field = field_map[assessment.event] group.send(field).push assessment group.send(field).sort_by! { |a| a.completed_at ? -1 : 1 } groups.merge(assessment.study_id.to_s => group) end.values end |
#groups ⇒ Object
25 26 27 |
# File 'app/models/study_engine/report.rb', line 25 def groups sort build_groups end |
#sort(groups) ⇒ Object
42 43 44 45 46 47 48 |
# File 'app/models/study_engine/report.rb', line 42 def sort groups groups.sort do |a, b| a = a.send(field) b = b.send(field) ascending? ? a <=> b : b <=> a end end |