Class: Fe::QuestionSheet

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/fe/question_sheet.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.new_with_pageObject

create a new form with a page already attached



27
28
29
30
31
# File 'app/models/fe/question_sheet.rb', line 27

def self.new_with_page
  question_sheet = self.new(:label => next_label)
  question_sheet.pages.build(:label => 'Page 1', :number => 1)
  question_sheet
end

Instance Method Details

#duplicateObject

Pages get duplicated Question elements get associated non-question elements get cloned



44
45
46
47
48
49
50
51
52
# File 'app/models/fe/question_sheet.rb', line 44

def duplicate
  new_sheet = QuestionSheet.new(self.attributes.merge(id: nil))
  new_sheet.label = self.label + ' - COPY'
  new_sheet.save(:validate => false)
  self.pages.each do |page|
    page.copy_to(new_sheet)
  end
  new_sheet
end

#elementsObject



37
38
39
# File 'app/models/fe/question_sheet.rb', line 37

def elements
  pages.collect(&:elements).flatten
end

#hidden_pages(answer_sheet) ⇒ Object

pages hidden by a conditional element



55
56
57
58
59
# File 'app/models/fe/question_sheet.rb', line 55

def hidden_pages(answer_sheet)
  elements.find_all{ |e| 
    e.conditional.is_a?(Fe::Page) && !e.conditional_match(answer_sheet)
  }.collect(&:conditional)
end

#questionsObject



33
34
35
# File 'app/models/fe/question_sheet.rb', line 33

def questions
  pages.collect(&:questions).flatten
end