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