Sha256: 3d2b817d36f4061d39656ec00b564fbd5fadb555088080aeafc36956829f5755

Contents?: true

Size: 1.72 KB

Versions: 11

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.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

11 entries across 11 versions & 1 rubygems

Version Path
metric_admin-0.0.26 app/helpers/metrics_helper.rb
metric_admin-0.0.25 app/helpers/metrics_helper.rb
metric_admin-0.0.24 app/helpers/metrics_helper.rb
metric_admin-0.0.23 app/helpers/metrics_helper.rb
metric_admin-0.0.22 app/helpers/metrics_helper.rb
metric_admin-0.0.21 app/helpers/metrics_helper.rb
metric_admin-0.0.20 app/helpers/metrics_helper.rb
metric_admin-0.0.19 app/helpers/metrics_helper.rb
metric_admin-0.0.18 app/helpers/metrics_helper.rb
metric_admin-0.0.17 app/helpers/metrics_helper.rb
metric_admin-0.0.16 app/helpers/metrics_helper.rb