Sha256: cebcf99890159dec69fd286098c9d719ad91e0521c5922f5d3e6faf1275e708f
Contents?: true
Size: 1.72 KB
Versions: 2
Compression:
Stored size: 1.72 KB
Contents
module MetricsHelper def summary_headers(summary) if summary.action == "count" [summary.group_by_key, summary.action] else [summary.group_by_key, summary.action, 'Amount'] end end def summary_results(summary, results) response = [] headers = results[0] summary_key = summary.group_by_key.capitalize.gsub("_"," ") summary_index = headers.index(summary_key) if summary.action_on.present? summary_action_on = summary.action_on.capitalize.gsub("_"," ") summary_action_on_index = headers.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 end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
metric_admin-0.0.28 | app/helpers/metrics_helper.rb |
metric_admin-0.0.27 | app/helpers/metrics_helper.rb |