Class: Formbuilder::Form
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- Formbuilder::Form
- Defined in:
- app/models/formbuilder/form.rb
Instance Attribute Summary collapse
-
#show_admin_only ⇒ Object
Returns the value of attribute show_admin_only.
-
#show_blind ⇒ Object
Returns the value of attribute show_blind.
Instance Method Summary collapse
- #copy_response_fields!(other_form) ⇒ Object
- #filtered_response_fields ⇒ Object
- #input_fields ⇒ Object
- #multi_page? ⇒ Boolean
- #num_pages ⇒ Object
- #response_fields_by_page ⇒ Object
- #response_fields_for_page(x) ⇒ Object
- #response_fields_json ⇒ Object
Instance Attribute Details
#show_admin_only ⇒ Object
Returns the value of attribute show_admin_only.
7 8 9 |
# File 'app/models/formbuilder/form.rb', line 7 def show_admin_only @show_admin_only end |
#show_blind ⇒ Object
Returns the value of attribute show_blind.
7 8 9 |
# File 'app/models/formbuilder/form.rb', line 7 def show_blind @show_blind end |
Instance Method Details
#copy_response_fields!(other_form) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'app/models/formbuilder/form.rb', line 17 def copy_response_fields!(other_form) other_form.response_fields.each_with_index do |response_field, i| self.response_fields.create( label: response_field.label, type: response_field.type, field_options: response_field., sort_order: response_field.sort_order, required: response_field.required, blind: response_field.blind, admin_only: response_field.admin_only ) end end |
#filtered_response_fields ⇒ Object
39 40 41 42 43 44 |
# File 'app/models/formbuilder/form.rb', line 39 def filtered_response_fields query = response_fields query = query.reject { |rf| rf.blind? } unless show_blind query = query.reject { |rf| rf.admin_only? } unless show_admin_only query end |
#input_fields ⇒ Object
9 10 11 |
# File 'app/models/formbuilder/form.rb', line 9 def input_fields response_fields.reject { |rf| !rf.input_field } end |
#multi_page? ⇒ Boolean
31 32 33 |
# File 'app/models/formbuilder/form.rb', line 31 def multi_page? num_pages > 1 end |
#num_pages ⇒ Object
35 36 37 |
# File 'app/models/formbuilder/form.rb', line 35 def num_pages response_fields_by_page.length end |
#response_fields_by_page ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'app/models/formbuilder/form.rb', line 46 def response_fields_by_page [].tap do |a| a.push [] page_index = 0 filtered_response_fields.each do |response_field| if response_field.field_type == 'page_break' a << [] else a.last << response_field end end a.delete_if { |page| page.empty? } a.push([]) if a.empty? end end |
#response_fields_for_page(x) ⇒ Object
64 65 66 |
# File 'app/models/formbuilder/form.rb', line 64 def response_fields_for_page(x) response_fields_by_page[x - 1] # 0-indexed end |
#response_fields_json ⇒ Object
13 14 15 |
# File 'app/models/formbuilder/form.rb', line 13 def response_fields_json self.response_fields.to_json(methods: [:field_type, :cid]) end |