Class: Neewom::AbstractForm

Inherits:
Object
  • Object
show all
Includes:
Proxies::BuildersAndFinders, Serializer
Defined in:
lib/neewom/abstract_form.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Serializer

#to_h, #to_json

Methods included from Proxies::BuildersAndFinders

#apply_inputs, #build_resource, #find, #find_and_apply_inputs, #find_by, #find_by!, #find_by_and_apply_inputs, #find_by_and_apply_inputs!, #parse_submit_control_value, #permit_params, #strong_params_permit, #strong_params_require

Instance Attribute Details

#fieldsObject

Returns the value of attribute fields.



7
8
9
# File 'lib/neewom/abstract_form.rb', line 7

def fields
  @fields
end

#idObject

Returns the value of attribute id.



7
8
9
# File 'lib/neewom/abstract_form.rb', line 7

def id
  @id
end

#persist_submit_controlsObject

Returns the value of attribute persist_submit_controls.



7
8
9
# File 'lib/neewom/abstract_form.rb', line 7

def persist_submit_controls
  @persist_submit_controls
end

#repository_klassObject

Returns the value of attribute repository_klass.



7
8
9
# File 'lib/neewom/abstract_form.rb', line 7

def repository_klass
  @repository_klass
end

#templateObject

Returns the value of attribute template.



7
8
9
# File 'lib/neewom/abstract_form.rb', line 7

def template
  @template
end

Class Method Details

.build(config) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/neewom/abstract_form.rb', line 9

def self.build(config)
  form = self.new
  form.id = config[:id]
  form.repository_klass = config[:repository_klass]
  form.template = config[:template]
  form.persist_submit_controls = config[:persist_submit_controls]

  form.fields = config[:fields].map do |name, field_config|
    field = Neewom::AbstractField.new

    field_config = { input: field_config } if field_config.is_a?(String)

    field.name              = name
    field.label             = field_config[:label]        
    field.input             = field_config[:input]
    field.virtual           = field_config[:virtual]
    field.validations       = field_config[:validations]
    field.collection        = field_config[:collection]
    field.collection_klass  = field_config[:collection_klass]
    field.collection_method = field_config[:collection_method]
    field.collection_params = field_config[:collection_params]
    field.label_method      = field_config[:label_method]
    field.value_method      = field_config[:value_method]
    field.input_html        = field_config[:input_html]
    field.custom_options    = field_config[:custom_options]

    field
  end

  form
end

Instance Method Details

#persisted_fieldsObject



57
58
59
# File 'lib/neewom/abstract_form.rb', line 57

def persisted_fields
  persist_submit_controls ? fields : fields.reject(&:submit?)
end

#store!Object



61
62
63
# File 'lib/neewom/abstract_form.rb', line 61

def store!
  Neewom::Repository.new.store!(self)
end

#submit_fieldsObject



53
54
55
# File 'lib/neewom/abstract_form.rb', line 53

def submit_fields
  fields.select(&:submit?)
end

#virtual_fieldsObject



49
50
51
# File 'lib/neewom/abstract_form.rb', line 49

def virtual_fields
  fields.select(&:virtual)
end