Class: RubyUIAdmin::Filters::BaseFilter

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

Overview

Base class for filters. Subclasses implement apply(request, query, value) and (for select-style filters) options.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(arguments: {}) ⇒ BaseFilter

Returns a new instance of BaseFilter.



42
43
44
# File 'lib/ruby_ui_admin/filters/base_filter.rb', line 42

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

Instance Attribute Details

#argumentsObject (readonly)

Returns the value of attribute arguments.



40
41
42
# File 'lib/ruby_ui_admin/filters/base_filter.rb', line 40

def arguments
  @arguments
end

Class Method Details

.empty_messageObject



23
24
25
# File 'lib/ruby_ui_admin/filters/base_filter.rb', line 23

def empty_message
  defined?(@empty_message) ? @empty_message : nil
end

.empty_message=(value) ⇒ Object



19
20
21
# File 'lib/ruby_ui_admin/filters/base_filter.rb', line 19

def empty_message=(value)
  @empty_message = value
end

.filter_typeObject

Inherited down the chain (subclasses of SelectFilter are :select, etc.).



28
29
30
31
32
33
# File 'lib/ruby_ui_admin/filters/base_filter.rb', line 28

def filter_type
  return @filter_type if defined?(@filter_type) && @filter_type
  return superclass.filter_type if superclass.respond_to?(:filter_type)

  nil
end

.nameObject



15
16
17
# File 'lib/ruby_ui_admin/filters/base_filter.rb', line 15

def name
  @display_name || super
end

.name=(value) ⇒ Object

Class-level self.name = while still falling back to the real class name (so Zeitwerk/Rails keep working when no display name is set).



11
12
13
# File 'lib/ruby_ui_admin/filters/base_filter.rb', line 11

def name=(value)
  @display_name = value
end

.register_type(type) ⇒ Object



35
36
37
# File 'lib/ruby_ui_admin/filters/base_filter.rb', line 35

def register_type(type)
  @filter_type = type.to_sym
end

Instance Method Details

#apply(request, query, value) ⇒ Object

Override in subclasses.



66
67
68
# File 'lib/ruby_ui_admin/filters/base_filter.rb', line 66

def apply(request, query, value)
  query
end

#defaultObject

Override to provide a default selected value.



76
77
78
# File 'lib/ruby_ui_admin/filters/base_filter.rb', line 76

def default
  nil
end

#empty_messageObject



54
55
56
# File 'lib/ruby_ui_admin/filters/base_filter.rb', line 54

def empty_message
  self.class.empty_message
end

#nameObject



46
47
48
# File 'lib/ruby_ui_admin/filters/base_filter.rb', line 46

def name
  self.class.name
end

#optionsObject

Override in select/multiple-select filters.



71
72
73
# File 'lib/ruby_ui_admin/filters/base_filter.rb', line 71

def options
  {}
end

#param_keyObject

Unique key used in the query string, e.g. RubyUIAdmin::Filters::PublishedFilter -> "published_filter". Uses to_s (not the overridable name) to get the real class name.



61
62
63
# File 'lib/ruby_ui_admin/filters/base_filter.rb', line 61

def param_key
  self.class.to_s.sub(/^RubyUIAdmin::Filters::/, "").gsub("::", "_").underscore
end

#typeObject



50
51
52
# File 'lib/ruby_ui_admin/filters/base_filter.rb', line 50

def type
  self.class.filter_type
end