Module: SurveyMetamodel::Form::ClassModule

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

Instance Method Summary collapse

Instance Method Details

#actual_pages_numberObject



200
201
202
# File 'lib/generators/survey/metamodels/view.rb', line 200

def actual_pages_number
  page_elements.count
end

#authorObject



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

def author
  model_element.author if !model_element.nil?
end

#has_multiple_pagesObject



204
205
206
# File 'lib/generators/survey/metamodels/view.rb', line 204

def has_multiple_pages
  actual_pages_number > 1
end

#input_elementsObject



212
213
214
215
216
217
218
# File 'lib/generators/survey/metamodels/view.rb', line 212

def input_elements
  page_elements = self.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



192
193
194
# File 'lib/generators/survey/metamodels/view.rb', line 192

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

#pagesObject



208
209
210
# File 'lib/generators/survey/metamodels/view.rb', line 208

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

#pages_numberObject



196
197
198
# File 'lib/generators/survey/metamodels/view.rb', line 196

def pages_number
  pages.count
end

#set_model_elementObject



220
221
222
223
224
225
226
# File 'lib/generators/survey/metamodels/view.rb', line 220

def set_model_element
  model_elements = self.view.app.model.surveys.select { |s| s.name == self.name }
  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



228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
# File 'lib/generators/survey/metamodels/view.rb', line 228

def set_page_elements
  _pages = pages
  first_page_break = _pages.first
  
  self.page_elements = Array.new
  self.page_elements << elements if _pages.count == 0
  if _pages.any?
    _pages.each do |page_break|
      if !page_break.elements.nil? and !page_break.elements.empty?
        self.page_elements << page_break.elements.reject { |e| e.is_a?(Page) }
      else
        if page_break == first_page_break
          self.page_elements << page_elements_before_first
          self.page_elements << page_elements_after(page_break)
        else
          self.page_elements << page_elements_after(page_break)
        end
      end
    end
  end
end