10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
# File 'app/helpers/metrics_helper.rb', line 10
def summary_results(summary, results)
response = []
= results[0]
summary_key = summary.group_by_key.capitalize.gsub("_"," ")
summary_index = .index(summary_key)
if summary.action_on.present?
summary_action_on = summary.action_on.capitalize.gsub("_"," ")
summary_action_on_index = .index(summary_action_on)
end
summary_results = results.map{|x| x[summary_index]}.uniq.compact.sort - [summary_key]
case summary.action
when 'count'
summary_results.each do |s|
response << {:key => s, :count => results.count{|x| x[summary_index] == s }}
end
when 'sum'
summary_results.each do |s|
response << {:key => s, :count => results.count{|x| x[summary_index] == s }, :sum => results.select{|x| x[summary_index] == s }.sum{|x| x[summary_action_on_index].to_f }}
end
when 'average'
summary_results.each do |s|
response << {:key => s, :count => results.count{|x| x[summary_index] == s }, :average => results.select{|x| x[summary_index] == s }.sum{|x| x[summary_action_on_index].to_f } / results.count{|x| x[summary_index] == s }}
end
when 'median'
summary_results.each do |s|
response << {:key => s, :count => results.count{|x| x[summary_index] == s }, :median => median(results.select{|x| x[summary_index] == s }.map{|x| x[summary_action_on_index].to_f })}
end
else
raise "#{summary.action.capitalize} is not defined, please define it in metrics_helper.rb"
end
return response
end
|