Sha256: da7f541261eda0efb107e85857fbfb2135ac377d67829509664adf573ed9c64a
Contents?: true
Size: 1.05 KB
Versions: 3
Compression:
Stored size: 1.05 KB
Contents
class ReportFormatter STAT_FUNCTIONS = { sum: ->(arr){arr.sum}, min: ->(arr){arr.min}, max: ->(arr){arr.max}, average: ->(arr){arr.average} } STAT_FORMATS = { number: "%g", date: "%m-%d-%y", time: "%I:%M:%S %P", datetime: "%m-%d-%y %I:%M:%S %P" } def initialize(question, responses) @question = question @responses = responses end def stats(stat_function) stat = calculate_stats(stat_function) format_stats(stat) end def calculate_stats(stat_function) arr = @responses.where(:question_id => @question.id).map{|r| r.response_value.to_f} STAT_FUNCTIONS[stat_function].call(arr) end def format_stats(stat) if @question.question_type_id == :number STAT_FORMATS[@question.question_type_id] % stat.to_f elsif [:date, :datetime, :time].include? @question.question_type_id format_time_stat(stat.to_f) else stat end end def format_time_stat(stat) stat = Time.zone.at(stat) stat.strftime(STAT_FORMATS[@question.question_type_id]) end end
Version data entries
3 entries across 3 versions & 2 rubygems
Version | Path |
---|---|
upgrade_surveyor_gui-0.1.3 | app/facades/report_formatter.rb |
upgrade_surveyor_gui-0.1.2 | app/facades/report_formatter.rb |
surveyor_gui-0.1.2 | app/facades/report_formatter.rb |