Class: Spotlight::Analytics::AggregationComponent

Inherits:
ViewComponent::Base
  • Object
show all
Defined in:
app/components/spotlight/analytics/aggregation_component.rb

Overview

Display Analytics aggregations as table

Instance Method Summary collapse

Constructor Details

#initialize(data:, exclude_fields: nil) ⇒ AggregationComponent

Returns a new instance of AggregationComponent.



7
8
9
10
11
# File 'app/components/spotlight/analytics/aggregation_component.rb', line 7

def initialize(data:, exclude_fields: nil)
  super
  @exclude_fields = exclude_fields
  @data = data
end

Instance Method Details

#display_fieldsObject



17
18
19
20
21
22
# File 'app/components/spotlight/analytics/aggregation_component.rb', line 17

def display_fields
  return @data unless @exclude_fields

  filtered_data = @data.to_h.except(*@exclude_fields)
  OpenStruct.new(filtered_data)
end

#format_field(key, value) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
# File 'app/components/spotlight/analytics/aggregation_component.rb', line 24

def format_field(key, value)
  if value.is_a?(Float)
    if key.to_s.downcase.include?('rate')
      "#{(value * 100).to_i}%"
    else
      Kernel.format('%.2f', value)
    end
  else
    value
  end
end

#render?Boolean

Returns:

  • (Boolean)


13
14
15
# File 'app/components/spotlight/analytics/aggregation_component.rb', line 13

def render?
  display_fields.to_h.present?
end