Module: Uchi::Field::Configuration
- Included in:
- Uchi::Field
- Defined in:
- lib/uchi/field/configuration.rb
Defined Under Namespace
Classes: Unset
Constant Summary collapse
- DEFAULT_READER =
->(record, field_name) { record&.public_send(field_name) }
- DEFAULT_VISIBLE =
->(_record) { true }
Instance Method Summary collapse
- #initialize(*args) ⇒ Object
-
#on(*views) ⇒ self, Array<Uchi::View>
Sets or gets which views this field should appear on.
-
#reader(reader_proc = nil) ⇒ self, Proc
Sets or gets a custom reader for this field.
-
#searchable(value = Configuration::Unset) ⇒ self, ...
Sets or gets whether and how this field is searchable.
-
#searchable? ⇒ Boolean
Returns true if the field is searchable and should be included in the query when a search term has been entered.
-
#sortable(value = Configuration::Unset) ⇒ self, ...
Sets or gets whether and how this field is sortable.
-
#sortable? ⇒ Boolean
Returns true if the field is sortable.
-
#visible(visible_proc = Configuration::Unset) ⇒ self, Proc
Sets or gets a conditional proc that determines whether this field should be visible for a given record.
-
#visible_for?(record) ⇒ Boolean
Returns whether this field should be visible for the given record.
Instance Method Details
#initialize(*args) ⇒ Object
13 14 15 16 17 18 19 20 |
# File 'lib/uchi/field/configuration.rb', line 13 def initialize(*args) super @on = default_on @reader = DEFAULT_READER @searchable = default_searchable? @visible = DEFAULT_VISIBLE @sortable = default_sortable end |
#on(*views) ⇒ self, Array<Uchi::View>
Sets or gets which views this field should appear on.
When called with arguments, sets the views and returns self for chaining. When called without arguments, returns the current views.
37 38 39 40 41 42 |
# File 'lib/uchi/field/configuration.rb', line 37 def on(*views) return @on if views.empty? @on = views.flatten.map { |view| Uchi::View.new(view) } self end |
#reader(reader_proc = nil) ⇒ self, Proc
Sets or gets a custom reader for this field.
When called with an argument, sets the reader and returns self for chaining. When called without arguments, returns the current reader.
61 62 63 64 65 66 |
# File 'lib/uchi/field/configuration.rb', line 61 def reader(reader_proc = nil) return @reader if reader_proc.nil? && !block_given? @reader = reader_proc || Proc.new self end |
#searchable(value = Configuration::Unset) ⇒ self, ...
Sets or gets whether and how this field is searchable.
When called with an argument, sets searchable and returns self for chaining. When called without arguments, returns the searchable value.
88 89 90 91 92 93 |
# File 'lib/uchi/field/configuration.rb', line 88 def searchable(value = Configuration::Unset) return @searchable if value == Configuration::Unset @searchable = value self end |
#searchable? ⇒ Boolean
Returns true if the field is searchable and should be included in the query when a search term has been entered.
97 98 99 100 101 |
# File 'lib/uchi/field/configuration.rb', line 97 def searchable? return default_searchable? if @searchable.nil? !!@searchable end |
#sortable(value = Configuration::Unset) ⇒ self, ...
Sets or gets whether and how this field is sortable.
When called with an argument, sets sortable and returns self for chaining. When called without arguments, returns the sortable value.
150 151 152 153 154 155 |
# File 'lib/uchi/field/configuration.rb', line 150 def sortable(value = Configuration::Unset) return @sortable.nil? ? default_sortable : @sortable if value == Configuration::Unset @sortable = value self end |
#sortable? ⇒ Boolean
Returns true if the field is sortable
158 159 160 |
# File 'lib/uchi/field/configuration.rb', line 158 def sortable? !!sortable end |
#visible(visible_proc = Configuration::Unset) ⇒ self, Proc
Sets or gets a conditional proc that determines whether this field should be visible for a given record.
When called with a proc argument, sets the visibility condition and returns self for chaining. When called without arguments, returns the current proc.
120 121 122 123 124 125 126 127 |
# File 'lib/uchi/field/configuration.rb', line 120 def visible(visible_proc = Configuration::Unset) return @visible if visible_proc == Configuration::Unset raise ArgumentError, "visible must be callable" unless visible_proc.respond_to?(:call) @visible = visible_proc self end |
#visible_for?(record) ⇒ Boolean
Returns whether this field should be visible for the given record.
Calls the visible proc with the record. Defaults to DEFAULT_VISIBLE, which always returns true.
169 170 171 |
# File 'lib/uchi/field/configuration.rb', line 169 def visible_for?(record) !!@visible.call(record) end |