Class: Super::Filter::SchemaTypes

Inherits:
Object
  • Object
show all
Defined in:
lib/super/filter/schema_types.rb

Overview

This schema type is used to configure the filtering form on your +#index+ action.

The +operators:+ keyword argument can be left out in each case. There is a default set of operators that are provided.

Note: The constants under "Defined Under Namespace" are considered private.

class MemberDashboard # ...

def filter_schema
  Super::Filter.new do |fields, type|
    fields[:name] = type.text(operators: [
      Super::Filter::Operator.eq,
      Super::Filter::Operator.contain,
      Super::Filter::Operator.ncontain,
      Super::Filter::Operator.start,
      Super::Filter::Operator.end,
    ])
    fields[:rank] = type.select(collection: Member.ranks.values)
    fields[:position] = type.text(operators: [
      Super::Filter::Operator.eq,
      Super::Filter::Operator.neq,
      Super::Filter::Operator.contain,
      Super::Filter::Operator.ncontain,
    ])
    fields[:ship_id] = type.select(
      collection: Ship.all.map { |s| ["#{s.name} (Ship ##{s.id})", s.id] },
    )
    fields[:created_at] = type.timestamp
    fields[:updated_at] = type.timestamp
  end
end

# ...

end

Defined Under Namespace

Classes: Select, Text, Timestamp

Instance Method Summary collapse

Instance Method Details

#select(collection:, operators: Filter::Operator.select_defaults) ⇒ Object



95
96
97
98
99
100
# File 'lib/super/filter/schema_types.rb', line 95

def select(collection:, operators: Filter::Operator.select_defaults)
  Select.new(
    collection: collection,
    operators: operators
  )
end

#text(operators: Filter::Operator.text_defaults) ⇒ Object



102
103
104
105
106
107
# File 'lib/super/filter/schema_types.rb', line 102

def text(operators: Filter::Operator.text_defaults)
  Text.new(
    partial_path: "filter_type_text",
    operators: operators
  )
end

#timestamp(operators: Filter::Operator.range_defaults) ⇒ Object



109
110
111
# File 'lib/super/filter/schema_types.rb', line 109

def timestamp(operators: Filter::Operator.range_defaults)
  Timestamp.new(operators: operators)
end