class ReportsKits::Reports::Data::NormalizeProperties
Attributes
raw_properties[RW]
Public Class Methods
new(raw_properties)
click to toggle source
# File lib/reports_kits/reports/data/normalize_properties.rb, line 7 def initialize(raw_properties) self.raw_properties = raw_properties.dup end
Public Instance Methods
perform()
click to toggle source
# File lib/reports_kits/reports/data/normalize_properties.rb, line 11 def perform context_properties = raw_properties.slice(:context_params, :contextual_filters) properties = recursively_normalize_properties(raw_properties) populate_context_properties(properties, context_properties: context_properties) end
Private Instance Methods
normalize_filters(series_properties, ui_filters)
click to toggle source
# File lib/reports_kits/reports/data/normalize_properties.rb, line 19 def normalize_filters(series_properties, ui_filters) series_properties[:filters] = series_properties[:filters].map do |filter_properties| filter_properties = { key: filter_properties } if filter_properties.is_a?(String) key = filter_properties[:key] ui_key = filter_properties[:ui_key] value = ui_filters[key.to_sym] value ||= ui_filters[ui_key.to_sym] if ui_key if value filter_properties[:criteria] ||= {} filter_properties[:criteria][:value] = value end filter_properties end series_properties end
populate_context_properties(properties, context_properties: nil)
click to toggle source
# File lib/reports_kits/reports/data/normalize_properties.rb, line 49 def populate_context_properties(properties, context_properties: nil) return properties if context_properties.blank? || properties.blank? || properties[:series].blank? can_have_nesting = properties[:composite_operator].present? || properties[:series].is_a?(Array) properties[:series] = properties[:series].map do |series_properties| series_properties = series_properties.merge(context_properties) series_properties = populate_context_properties(series_properties, context_properties: context_properties) if can_have_nesting series_properties end properties end
recursively_normalize_properties(properties, ui_filters: nil)
click to toggle source
# File lib/reports_kits/reports/data/normalize_properties.rb, line 35 def recursively_normalize_properties(properties, ui_filters: nil) can_have_nesting = properties[:composite_operator].present? || properties[:series].is_a?(Array) ui_filters ||= properties[:ui_filters] properties[:series] ||= properties.slice(*Series::VALID_KEYS).presence properties[:series] = [properties[:series]] if properties[:series].is_a?(Hash) && properties[:series].present? return properties if ui_filters.blank? || properties[:series].blank? properties[:series] = properties[:series].map do |series_properties| series_properties = recursively_normalize_properties(series_properties, ui_filters: ui_filters) if can_have_nesting next(series_properties) if series_properties[:filters].blank? normalize_filters(series_properties, ui_filters) end properties end