Merge pull request #188 from openHPI/feature/ordered_exercise_collection
Ordered exercise collections
This commit is contained in:
@@ -14,7 +14,8 @@ class Exercise < ActiveRecord::Base
|
||||
|
||||
has_and_belongs_to_many :proxy_exercises
|
||||
has_many :user_proxy_exercise_exercises
|
||||
has_and_belongs_to_many :exercise_collections
|
||||
has_many :exercise_collection_items
|
||||
has_many :exercise_collections, through: :exercise_collection_items
|
||||
has_many :user_exercise_interventions
|
||||
has_many :interventions, through: :user_exercise_interventions
|
||||
has_many :exercise_tags
|
||||
|
@@ -1,23 +1,26 @@
|
||||
class ExerciseCollection < ActiveRecord::Base
|
||||
include TimeHelper
|
||||
|
||||
has_and_belongs_to_many :exercises
|
||||
has_many :exercise_collection_items
|
||||
alias_method :items, :exercise_collection_items
|
||||
has_many :exercises, through: :exercise_collection_items
|
||||
belongs_to :user, polymorphic: true
|
||||
|
||||
def exercise_working_times
|
||||
working_times = {}
|
||||
exercises.each do |exercise|
|
||||
working_times[exercise.id] = time_to_f exercise.average_working_time
|
||||
def collection_statistics
|
||||
statistics = {}
|
||||
exercise_collection_items.each do |item|
|
||||
statistics[item.position] = {exercise_id: item.exercise.id, exercise_title: item.exercise.title, working_time: time_to_f(item.exercise.average_working_time)}
|
||||
end
|
||||
working_times
|
||||
statistics
|
||||
end
|
||||
|
||||
def average_working_time
|
||||
if exercises.empty?
|
||||
0
|
||||
else
|
||||
values = exercise_working_times.values.reject { |v| v.nil?}
|
||||
values.reduce(:+) / exercises.size
|
||||
values = collection_statistics.values.reject { |o| o[:working_time].nil?}
|
||||
sum = values.reduce(0) {|sum, item| sum + item[:working_time]}
|
||||
sum / values.size
|
||||
end
|
||||
end
|
||||
|
||||
|
4
app/models/exercise_collection_item.rb
Normal file
4
app/models/exercise_collection_item.rb
Normal file
@@ -0,0 +1,4 @@
|
||||
class ExerciseCollectionItem < ActiveRecord::Base
|
||||
belongs_to :exercise_collection
|
||||
belongs_to :exercise
|
||||
end
|
Reference in New Issue
Block a user