Class: Avo::Filters::BaseFilter

Inherits:
Object
  • Object
show all
Defined in:
lib/avo/filters/base_filter.rb

Constant Summary collapse

PARAM_KEY =
:filters

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(arguments: {}) ⇒ BaseFilter

Returns a new instance of BaseFilter.



29
30
31
# File 'lib/avo/filters/base_filter.rb', line 29

def initialize(arguments: {})
  @arguments = arguments
end

Instance Attribute Details

#argumentsObject (readonly)

Returns the value of attribute arguments.



13
14
15
# File 'lib/avo/filters/base_filter.rb', line 13

def arguments
  @arguments
end

Class Method Details

.decode_filters(filter_params) ⇒ Object



18
19
20
21
22
# File 'lib/avo/filters/base_filter.rb', line 18

def decode_filters(filter_params)
  JSON.parse(Base64.decode64(filter_params))
rescue
  {}
end

.get_empty_messageObject



24
25
26
# File 'lib/avo/filters/base_filter.rb', line 24

def get_empty_message
  empty_message || I18n.t("avo.no_options_available")
end

Instance Method Details

#applied_filtersObject

Fetch the applied filters from the params



59
60
61
# File 'lib/avo/filters/base_filter.rb', line 59

def applied_filters
  self.class.decode_filters params[PARAM_KEY]
end

#applied_or_default_value(applied_filters) ⇒ Object

Get the applied value this filter. If it's not present return the default value.



45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/avo/filters/base_filter.rb', line 45

def applied_or_default_value(applied_filters)
  # Get the values for this particular filter
  applied_value = applied_filters[self.class.to_s]

  # Return that value if present
  return applied_value unless applied_value.nil?

  # Return that default
  default
rescue
  default
end

#apply_query(request, query, value) ⇒ Object



33
34
35
36
37
# File 'lib/avo/filters/base_filter.rb', line 33

def apply_query(request, query, value)
  value.stringify_keys! if value.is_a? Hash

  apply(request, query, value)
end

#idObject



39
40
41
# File 'lib/avo/filters/base_filter.rb', line 39

def id
  self.class.name.underscore.tr("/", "_")
end

#visible_in_view(resource: nil, parent_resource: nil) ⇒ Object



63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/avo/filters/base_filter.rb', line 63

def visible_in_view(resource: nil, parent_resource: nil)
  return true if visible.blank?

  # Run the visible block if available
  Avo::Hosts::VisibilityHost.new(
    block: visible,
    params: params,
    parent_resource: parent_resource,
    resource: resource,
    arguments: arguments
  ).handle

end