Sha256: 70f35326aa12b012cc3b05cd81012fe6024a0364d46b2ff51b945d740af04388

Contents?: true

Size: 1.3 KB

Versions: 10

Compression:

Stored size: 1.3 KB

Contents

module ClarkKent
	class ReportColumn < ActiveRecord::Base
	  include ClarkKent::Cloneable

		SummaryMethods = ['total','average']

		belongs_to :report

		scope :sorted, -> { order("clark_kent_report_columns.column_order") }

		def report_sort_pretty
			{'ascending' => 'A->Z','descending' => 'Z->A'}[self.report_sort]
		end

		def calculate_summary(values)
			return nil unless self.summary_method.present?
			calculator.new(values).calculate
		end

		def summarizable?
			report.column_options_for(self.column_name.to_sym).summarizable
		end

		def calculator
			('ClarkKent::' + summary_method.camelcase + 'Calculator').constantize
		end

    def name
      column_name
    end

    def link
      report.column_options_for(self.name.to_sym).link
    end

    def time_zone_column
      report.column_options_for(self.name.to_sym).time_zone_column
    end

    def time_format
      report.column_options_for(self.name.to_sym).time_format
    end
	end

	class AbstractCalculator
    def initialize values
    	@values = values
    end
	end

	class TotalCalculator < AbstractCalculator
    def calculate
    	@values.sum
    end
	end

	class AverageCalculator < AbstractCalculator
    def calculate
    	if @values.length < 1
        return nil
      else
        return (@values.sum.to_f / @values.length)
      end
    end
	end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
clark_kent-0.7.1 app/models/clark_kent/report_column.rb
clark_kent-0.7.0 app/models/clark_kent/report_column.rb
clark_kent-0.6.1 app/models/clark_kent/report_column.rb
clark_kent-0.6.0 app/models/clark_kent/report_column.rb
clark_kent-0.5.0 app/models/clark_kent/report_column.rb
clark_kent-0.4.4 app/models/clark_kent/report_column.rb
clark_kent-0.4.3 app/models/clark_kent/report_column.rb
clark_kent-0.4.2 app/models/clark_kent/report_column.rb
clark_kent-0.4.1 app/models/clark_kent/report_column.rb
clark_kent-0.4.0 app/models/clark_kent/report_column.rb