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