Module: Fe::AnswerPagesPresenterConcern

Extended by:
ActiveSupport::Concern
Included in:
AnswerPagesPresenter
Defined in:
app/models/fe/concerns/answer_pages_presenter_concern.rb

Instance Method Summary collapse

Instance Method Details



35
36
37
38
39
40
# File 'app/models/fe/concerns/answer_pages_presenter_concern.rb', line 35

def active_page_link
  return unless @active_page
  link = new_page_link(@active_answer_sheet, @active_page)
  link.save_path = answer_sheet_page_path(@active_answer_sheet, @active_page)
  link
end

#all_questions_for_page(page_id = :first) ⇒ Object



24
25
26
27
28
# File 'app/models/fe/concerns/answer_pages_presenter_concern.rb', line 24

def all_questions_for_page(page_id=:first)
  @active_page = page_id == :first ? pages.first : pages.detect {|p| p.id == page_id.to_i}
  @active_page ||= @active_answer_sheet.pages.visible.find(page_id)
  Fe::QuestionSet.new(@active_page ? @active_page.all_elements : [], @active_answer_sheet)
end

#initialize(controller, answer_sheets, a = nil, custom_pages = nil) ⇒ Object



9
10
11
12
13
14
15
16
# File 'app/models/fe/concerns/answer_pages_presenter_concern.rb', line 9

def initialize(controller, answer_sheets, a = nil, custom_pages = nil)
  super(controller)
  @answer_sheets = Array.wrap(answer_sheets)
  @active_answer_sheet = @answer_sheets.first
  initialize_pages(@active_answer_sheet)

  @page_links = page_list(@answer_sheets, a, custom_pages)
end

#initialize_pages(answer_sheet) ⇒ Object



57
58
59
60
61
62
63
64
# File 'app/models/fe/concerns/answer_pages_presenter_concern.rb', line 57

def initialize_pages(answer_sheet)
  @pages = []
  answer_sheet.question_sheets.each do |qs|
    qs.pages.visible.each do |page|
      @pages << page
    end
  end
end


74
75
76
# File 'app/models/fe/concerns/answer_pages_presenter_concern.rb', line 74

def new_page_link(answer_sheet, page, a = nil)
  Fe::PageLink.new(page.label, edit_answer_sheet_page_path(answer_sheet, page, :a => a), dom_page(answer_sheet, page), page) if page
end

#next_pageObject



42
43
44
45
46
47
# File 'app/models/fe/concerns/answer_pages_presenter_concern.rb', line 42

def next_page
  active_page_dom_id = active_page_link.dom_id

  this_page = @page_links.find {|p| p.dom_id == active_page_dom_id}
  @page_links.at( @page_links.index(this_page) + 1 ) unless this_page.nil?
end

#questions_for_page(page_id = :first) ⇒ Object



18
19
20
21
22
# File 'app/models/fe/concerns/answer_pages_presenter_concern.rb', line 18

def questions_for_page(page_id=:first)
  @active_page = page_id == :first ? pages.first : pages.detect {|p| p.id == page_id.to_i}
  @active_page ||= @active_answer_sheet.pages.visible.includes(:elements).find(page_id)
  Fe::QuestionSet.new(@active_page ? @active_page.elements : [], @active_answer_sheet)
end

#reference?Boolean

Returns:

  • (Boolean)


49
50
51
52
53
54
55
# File 'app/models/fe/concerns/answer_pages_presenter_concern.rb', line 49

def reference?
  if @active_answer_sheet.respond_to?(:apply_sheet)
    @active_answer_sheet.apply_sheet.sleeve_sheet.assign_to == 'reference'
  else
    false
  end
end

#sheet_titleObject

title



31
32
33
# File 'app/models/fe/concerns/answer_pages_presenter_concern.rb', line 31

def sheet_title
  @active_answer_sheet.question_sheet.label
end

#started?Boolean

Returns:

  • (Boolean)


66
67
68
69
70
71
72
# File 'app/models/fe/concerns/answer_pages_presenter_concern.rb', line 66

def started?
  active_answer_sheet.question_sheets.each do |qs|
    qs.pages.visible.each do |page|
      return true if page.started?(active_answer_sheet)
    end
  end
end