Module: SurveyMetamodel::Form::ClassModule

Defined in:
lib/generators/survey/metamodels/view.rb

Instance Method Summary collapse

Instance Method Details

#actual_pages_numberObject



172
173
174
# File 'lib/generators/survey/metamodels/view.rb', line 172

def actual_pages_number
  page_elements.count
end

#authorObject



159
160
161
# File 'lib/generators/survey/metamodels/view.rb', line 159

def author
  model_element.author if model_element?
end

#has_multiple_pages?Boolean

Returns:

  • (Boolean)


155
156
157
# File 'lib/generators/survey/metamodels/view.rb', line 155

def has_multiple_pages?
  actual_pages_number > 1
end

#input_elementsObject



184
185
186
187
188
189
190
# File 'lib/generators/survey/metamodels/view.rb', line 184

def input_elements
  page_elements = elements.select { |e| e.is_a?(Page) }.elements
  other_elements = page_elements.select { |e| !e.is_a?(Group) }
  group_elements = page_elements.select { |e| e.is_a?(Group) }.elements
  input_elems = (inputs + other_elements + group_elements)
  return input_elems
end

#inputsObject



176
177
178
# File 'lib/generators/survey/metamodels/view.rb', line 176

def inputs
  elements.select { |e| e.is_a?(Input) }
end

#page_title(j) ⇒ Object



163
164
165
166
# File 'lib/generators/survey/metamodels/view.rb', line 163

def page_title(j)
  page = (pages.reject { |p| p.break == true })[j - 1]
  return (!page.nil? and page.title? and !page.break)? page.title: ""
end

#pagesObject



180
181
182
# File 'lib/generators/survey/metamodels/view.rb', line 180

def pages
  elements.select { |e| e.is_a?(Page) }
end

#pages_numberObject



168
169
170
# File 'lib/generators/survey/metamodels/view.rb', line 168

def pages_number
  pages.count
end

#set_model_elementObject



192
193
194
195
196
197
198
199
# File 'lib/generators/survey/metamodels/view.rb', line 192

def set_model_element
  model_elements = view.app.model.surveys.select { |s| s.name == name }
  raise "Form have to be associated to exactly one survey (name='#{name}')!" if !name? or model_elements.nil? or model_elements.count > 1
  if !model_elements.nil? and model_elements.count == 1
    self.model_element = model_elements.first
    self.title = model_element.title if !title? and model_element.title?
  end
end

#set_page_elementsObject



201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
# File 'lib/generators/survey/metamodels/view.rb', line 201

def set_page_elements
  first_page = pages.first
  page_elems = Array.new
  page_elems << elements if pages.count == 0
  
  pages.each do |page|
    if !page.elements.nil? and !page.elements.empty?
      page_elems << page.elements
    else
      page_elems << page_elements_before(first_page) if (page == first_page)
      after_page_elements = page_elements_after(page)
      page_elems << after_page_elements if after_page_elements.any?
    end
  end
  self.page_elements = page_elems
end