Class: ActiveReporter::Report
- Inherits:
-
Object
- Object
- ActiveReporter::Report
- Includes:
- Aggregation, Definition, Metrics, Validation
- Defined in:
- lib/active_reporter/report.rb,
lib/active_reporter/report/metrics.rb,
lib/active_reporter/report/definition.rb,
lib/active_reporter/report/validation.rb,
lib/active_reporter/report/aggregation.rb
Defined Under Namespace
Modules: Aggregation, Definition, Metrics, Validation
Constant Summary
Constants included from Definition
Instance Attribute Summary collapse
-
#params ⇒ Object
readonly
Returns the value of attribute params.
-
#parent_groupers ⇒ Object
readonly
Returns the value of attribute parent_groupers.
-
#parent_report ⇒ Object
readonly
Returns the value of attribute parent_report.
-
#supplements ⇒ Object
readonly
Returns the value of attribute supplements.
Attributes included from Validation
Instance Method Summary collapse
-
#initialize(params = {}) ⇒ Report
constructor
A new instance of Report.
Methods included from Aggregation
#flat_data, #hashed_data, #nested_data, #raw_data, #source_data, #total_data
Methods included from Metrics
#aggregators, #all_aggregators, #base_relation, #calculators, #dimensions, #evaluators, #fields, #filters, #grouper_names, #groupers, #groups, #records, #relation, #relators, #total_report, #trackers
Methods included from Validation
#validate_aggregators!, #validate_calculators!, #validate_configuration!, #validate_groupers!, #validate_params!, #validate_parent_report!, #validate_total_report!, #validate_trackers!
Constructor Details
#initialize(params = {}) ⇒ Report
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/active_reporter/report.rb', line 12 def initialize(params = {}) @params = params # prepare the params for processing clean_params # When using a Calculator you may need the parent report data. Pass in a ActiveReporter::Report object when # instantiating a new ActiveReporter::Report instance as :parent_report. This will allow you to calculate a data # based on the #total_report of this passed :parent_report. For example, if the parent report includes a sum # aggregated 'views' column, the child report can use Report::Calculator::Ratio to caluclate the ratio of 'views' # on a given row versus the total 'views' from the parent report. @parent_report = @params.delete(:parent_report) @parent_groupers = @params.delete(:parent_groupers) || ( grouper_names & Array(parent_report&.grouper_names) ) # Supplements -> supplemental reports and data # # we need 2 items: # 1- the #supplements, a hash of reports and data, we can refrence by name # => this is passed into the report initializer, the key is the name the value is the enrire report object # 2- a configuration class, this will allow you to specify a special aggregator in the report class that # => take a block. The block defines { |key, row| return_value }, the block has access to the data in # #supplements available to use when calculating return the value. @supplements = @params.delete(:supplements) # You may pass in pre-compiled :row_data if you don't want ActiveReporter to compile this data for you. All # :calculators and :trackers will still be processed when :raw_data is passed in. @raw_data = @params.delete(:raw_data) # You may pass in pre-aggregated :total_report object as an instance of ActiveReporter::Report if you don't want # ActiveReporter to total this data for you no additional processing is completed on #total_report when a # :total_report value is passed. @total_report = @params.delete(:total_report) # Instead or in addition to passing a :total_report you may pass :total_data, which is used when report data is # built. In the case that both :total_report and :total_data are passed, the :total_report object will be used # for all :calculators. If only :total_data is passed, the :total_report object will not be populated and no # :calculators will be processed. Data in :total_data is never altered or appended. @total_data = @params.delete(:total_data) || @total_report&.data validate_params! # After params are parsed and validated you can call #data (or any derivitive of: #raw_data, #flat_data, # #hashed_data, #nested_data, etc.) on the ActiveReporter::Report object to #aggregate the data. This will # aggregate all the raw data by the configured dimensions, process any calculators, and then process any # trackers. # Caclulators calculate values using the current row data and the #parent_report. # Trackers calculate values using the current row data and prior row data. # If pre-compiled raw data was passed in, process all :calculators and :trackers now. aggregate if @raw_data.present? && ( @params.include?(:calculators) || @params.include?(:trackers) ) total if @total_data.present? end |
Instance Attribute Details
#params ⇒ Object (readonly)
Returns the value of attribute params.
10 11 12 |
# File 'lib/active_reporter/report.rb', line 10 def params @params end |
#parent_groupers ⇒ Object (readonly)
Returns the value of attribute parent_groupers.
10 11 12 |
# File 'lib/active_reporter/report.rb', line 10 def parent_groupers @parent_groupers end |
#parent_report ⇒ Object (readonly)
Returns the value of attribute parent_report.
10 11 12 |
# File 'lib/active_reporter/report.rb', line 10 def parent_report @parent_report end |
#supplements ⇒ Object (readonly)
Returns the value of attribute supplements.
10 11 12 |
# File 'lib/active_reporter/report.rb', line 10 def supplements @supplements end |