Sha256: a099f3a11e1a1ef1a9c0dc1ffc617a8d61144c86b94cf0b7e4b2f23f0a7534bd

Contents?: true

Size: 1.54 KB

Versions: 7

Compression:

Stored size: 1.54 KB

Contents

module QueryReport
  autoload :ColumnModule, 'query_report/column'
  autoload :FilterModule, 'query_report/filter'
  autoload :PaginateModule, 'query_report/paginate'
  autoload :Record, 'query_report/record'
  autoload :ChartAdapterModule, 'query_report/chart_adapter'

  DEFAULT_OPTIONS = {enable_chart: true, chart_on_web: true, chart_on_pdf: true, paginate: true}

  class Report
    attr_reader :params, :template, :options, :charts

    include QueryReport::ColumnModule
    include QueryReport::FilterModule
    include QueryReport::PaginateModule
    include QueryReport::Record
    include QueryReport::ChartAdapterModule

    def initialize(params, template, options={}, &block)
      @params, @template = params, template
      @columns, @filters, @charts = [], [], []
      @options = QueryReport::DEFAULT_OPTIONS.merge options
      instance_eval &block if block_given?
    end

    # define options methods
    QueryReport::DEFAULT_OPTIONS.each do |option_name, value|
      if value.class == TrueClass or value.class == FalseClass
        define_method "#{option_name.to_s}?" do
          @options[option_name]
        end
      end
    end

    def has_chart?
      !@charts.empty?
    end

    def has_total?
      @columns.any?(&:has_total?)
    end

    def paginate?
      return true if @options[:paginate].nil?
      @options[:paginate]
    end

    # to support the helper methods
    def method_missing(meth, *args, &block)
      if @template.respond_to?(meth)
        @template.send(meth, *args)
      else
        super
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
query_report-1.1.6 lib/query_report/report.rb
query_report-1.1.5 lib/query_report/report.rb
query_report-1.1.4 lib/query_report/report.rb
query_report-1.1.3 lib/query_report/report.rb
query_report-1.1.2 lib/query_report/report.rb
query_report-1.1.1 lib/query_report/report.rb
query_report-1.1.0 lib/query_report/report.rb