Class: CckForms::ParameterTypeClass::Enum

Inherits:
Object
  • Object
show all
Includes:
Base
Defined in:
lib/cck_forms/parameter_type_class/enum.rb

Overview

Represents a enum (SELECT).

Instance Method Summary collapse

Instance Method Details

#build_form(form_builder, options) ⇒ Object

options:

as        - if 'checkboxes', display a set of checkboxes, not SELECT
only      - leave only these keys (array/string)
except    - reverse of :only
required  - HTML required attr


37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/cck_forms/parameter_type_class/enum.rb', line 37

def build_form(form_builder, options)

  if options.is_a? Hash and options[:as] == 'checkboxes'
    options = options.except(:for, :as)
    checkboxes = CckForms::ParameterTypeClass::Checkboxes.new valid_values: self.valid_values, value: self.value
    return checkboxes.build_form(form_builder, options)
  end

  set_value_in_hash options

  values = valid_values_enum
  if options[:only]
    options[:only] = [options[:only]] unless options[:only].is_a? Array
    values.select! { |o| o[1].in? options[:only] }
  end

  if options[:except]
    options[:except] = [options[:except]] unless options[:except].is_a? Array
    values.reject! { |o| o[1].in? options[:except] }
  end

  form_builder.select :value, values, {selected: options[:value], required: options[:required], include_blank: !options[:required]}, class: 'form-control '
end

#mongoizeObject



6
7
8
# File 'lib/cck_forms/parameter_type_class/enum.rb', line 6

def mongoize
  value.presence
end

#search(selectable, field, query) ⇒ Object

Constructs MongoDB query. If query is a Hash, find all objects where field is any of the hash keys, for which value is ‘1’. Otherwise treat query as where(filed => query).



18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/cck_forms/parameter_type_class/enum.rb', line 18

def search(selectable, field, query)
  if query.is_a? Hash
    query = query.map { |k, v| v == '1' ? k : nil }.compact
  end
  query = [query] unless query.is_a? Array

  if query.any?
    selectable.where(field.to_sym.in => query)
  else
    selectable
  end
end

#to_s(_options = nil) ⇒ Object

Current string value from valid_values



11
12
13
14
# File 'lib/cck_forms/parameter_type_class/enum.rb', line 11

def to_s(_options = nil)
  return '' if value.blank?
  valid_values[value].to_s
end