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



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

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

#all_questions_for_page(page_id = :first) ⇒ Object



32
33
34
35
36
37
# File 'app/models/fe/concerns/answer_pages_presenter_concern.rb', line 32

def all_questions_for_page(page_id=:first)
  @active_page = page_id == :first ? pages.first : pages.detect {|p| p.id == page_id.to_i}
  base = @active_answer_sheet.pages.visible
  @active_page ||= page_id == :first ? base.first : base.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



12
13
14
15
16
17
18
19
# File 'app/models/fe/concerns/answer_pages_presenter_concern.rb', line 12

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



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

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


83
84
85
# File 'app/models/fe/concerns/answer_pages_presenter_concern.rb', line 83

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

#next_pageObject



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

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



21
22
23
24
25
26
27
28
29
30
# File 'app/models/fe/concerns/answer_pages_presenter_concern.rb', line 21

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

#reference?Boolean

Returns:

  • (Boolean)


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

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



40
41
42
# File 'app/models/fe/concerns/answer_pages_presenter_concern.rb', line 40

def sheet_title
  @active_answer_sheet.question_sheet.label
end

#started?Boolean

Returns:

  • (Boolean)


75
76
77
78
79
80
81
# File 'app/models/fe/concerns/answer_pages_presenter_concern.rb', line 75

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