Class: ReportsKit::Reports::Data::Generate
- Inherits:
-
Object
- Object
- ReportsKit::Reports::Data::Generate
- Defined in:
- lib/reports_kit/reports/data/generate.rb
Constant Summary collapse
- ROUND_PRECISION =
3
Instance Attribute Summary collapse
-
#context_record ⇒ Object
Returns the value of attribute context_record.
-
#properties ⇒ Object
Returns the value of attribute properties.
Instance Method Summary collapse
-
#initialize(properties, context_record: nil, context_params: nil) ⇒ Generate
constructor
A new instance of Generate.
- #perform ⇒ Object
Constructor Details
#initialize(properties, context_record: nil, context_params: nil) ⇒ Generate
Returns a new instance of Generate.
9 10 11 12 13 14 15 |
# File 'lib/reports_kit/reports/data/generate.rb', line 9 def initialize(properties, context_record: nil, context_params: nil) self.properties = properties.deep_symbolize_keys self.properties = ReportsKit.configuration.default_properties.deep_merge(self.properties) if ReportsKit.configuration.default_properties self.properties[:context_params] = context_params if context_params self.properties = NormalizeProperties.new(self.properties).perform self.context_record = context_record end |
Instance Attribute Details
#context_record ⇒ Object
Returns the value of attribute context_record.
7 8 9 |
# File 'lib/reports_kit/reports/data/generate.rb', line 7 def context_record @context_record end |
#properties ⇒ Object
Returns the value of attribute properties.
7 8 9 |
# File 'lib/reports_kit/reports/data/generate.rb', line 7 def properties @properties end |
Instance Method Details
#perform ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/reports_kit/reports/data/generate.rb', line 17 def perform data = ReportsKit::Cache.get(properties, context_record) return data.deep_symbolize_keys if data if two_dimensions? raw_data = Data::FormatTwoDimensions.new(serieses.first, serieses_results.first.last, order: order, limit: limit).perform else raw_data = Data::FormatOneDimension.new(serieses_results, order: order, limit: limit).perform end raw_data = format_csv_times(raw_data) if format == 'csv' raw_data = Data::AddTableAggregations.new(raw_data, report_options: ).perform if table_or_csv? raw_data = data_format_method.call(data: raw_data, properties: properties, context_record: context_record) if data_format_method raw_data = csv_data_format_method.call(data: raw_data, properties: properties, context_record: context_record) if csv_data_format_method && format == 'csv' chart_data = format_chart_data(raw_data) data = { chart_data: chart_data } data = ChartOptions.new(data, options: properties[:chart], inferred_options: ).perform data[:report_options] = if data = format_table_data(data) if table_or_csv? ReportsKit::Cache.set(properties, context_record, data) data end |