Class: Quby::Compiler::Entities::Panel
- Defined in:
- lib/quby/compiler/entities/panel.rb
Instance Attribute Summary collapse
-
#items ⇒ Object
Returns the value of attribute items.
-
#key ⇒ Object
Returns the value of attribute key.
-
#questionnaire ⇒ Object
readonly
Returns the value of attribute questionnaire.
-
#title ⇒ Object
Returns the value of attribute title.
Attributes inherited from Item
#presentation, #raw_content, #switch_cycle
Instance Method Summary collapse
- #as_json(options = {}) ⇒ Object
- #index ⇒ Object
-
#initialize(options = {}) ⇒ Panel
constructor
A new instance of Panel.
- #json_items ⇒ Object
- #next ⇒ Object
- #prev ⇒ Object
- #validations ⇒ Object
Constructor Details
#initialize(options = {}) ⇒ Panel
Returns a new instance of Panel.
12 13 14 15 16 17 |
# File 'lib/quby/compiler/entities/panel.rb', line 12 def initialize( = {}) @questionnaire = [:questionnaire] @title = [:title] @key = [:key] @items = [:items] || [] end |
Instance Attribute Details
#items ⇒ Object
Returns the value of attribute items.
8 9 10 |
# File 'lib/quby/compiler/entities/panel.rb', line 8 def items @items end |
#key ⇒ Object
Returns the value of attribute key.
9 10 11 |
# File 'lib/quby/compiler/entities/panel.rb', line 9 def key @key end |
#questionnaire ⇒ Object (readonly)
Returns the value of attribute questionnaire.
10 11 12 |
# File 'lib/quby/compiler/entities/panel.rb', line 10 def questionnaire @questionnaire end |
#title ⇒ Object
Returns the value of attribute title.
7 8 9 |
# File 'lib/quby/compiler/entities/panel.rb', line 7 def title @title end |
Instance Method Details
#as_json(options = {}) ⇒ Object
19 20 21 |
# File 'lib/quby/compiler/entities/panel.rb', line 19 def as_json( = {}) super.merge(title: title, index: index, items: json_items) end |
#index ⇒ Object
23 24 25 |
# File 'lib/quby/compiler/entities/panel.rb', line 23 def index @questionnaire.panels.index(self) end |
#json_items ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/quby/compiler/entities/panel.rb', line 47 def json_items items.map do |item| case item when Text { type: 'html', html: item.html } when Question next if item.table # things inside a table are added to the table, AND ALSO to the panel. skip them. { type: 'question', key: item.key } when Table { type: "table" } end end.compact end |
#next ⇒ Object
27 28 29 30 31 32 33 34 35 |
# File 'lib/quby/compiler/entities/panel.rb', line 27 def next this_panel_index = index if this_panel_index < @questionnaire.panels.size return @questionnaire.panels[this_panel_index + 1] else nil end end |
#prev ⇒ Object
37 38 39 40 41 42 43 44 45 |
# File 'lib/quby/compiler/entities/panel.rb', line 37 def prev this_panel_index = index if this_panel_index > 0 return @questionnaire.panels[this_panel_index - 1] else nil end end |
#validations ⇒ Object
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/quby/compiler/entities/panel.rb', line 61 def validations vals = {} items.each do |item| if item.is_a? Question item..each do |opt| if opt.questions opt.questions.each do |q| vals[q.key] = q.validations end end end vals[item.key] = item.validations end end vals end |