Module: Fe::AnswerPagesPresenterConcern

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

Instance Method Summary collapse

Instance Method Details



44
45
46
47
48
49
# File 'app/models/concerns/fe/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/concerns/fe/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, show_hidden_pages = false) ⇒ Object



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

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

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

#initialize_pages(answer_sheet, show_hidden_pages = false) ⇒ Object



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

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


93
94
95
# File 'app/models/concerns/fe/answer_pages_presenter_concern.rb', line 93

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

#next_pageObject



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

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

#prev_pageObject



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

def prev_page
  active_page_dom_id = active_page_link.dom_id

  this_page = @page_links.find {|p| p.dom_id == active_page_dom_id}
  index = @page_links.index(this_page)
  return nil if index == 0
  @page_links.at( index - 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/concerns/fe/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)


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

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/concerns/fe/answer_pages_presenter_concern.rb', line 40

def sheet_title
  @active_answer_sheet.question_sheet.label
end

#started?Boolean

Returns:

  • (Boolean)


85
86
87
88
89
90
91
# File 'app/models/concerns/fe/answer_pages_presenter_concern.rb', line 85

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