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



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

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

#filter_pages_from_elements(elements) ⇒ Object

filters the pages and pages_list such that only pages for which there are elements in the elements array passed in are kept



103
104
105
106
107
108
# File 'app/models/concerns/fe/answer_pages_presenter_concern.rb', line 103

def filter_pages_from_elements(elements)
  pages_from_elements = elements.collect{ |e| e.pages }.flatten.uniq
  pages.reject! { |p| !pages_from_elements.include?(p) }
  @page_links.reject! { |pl| !pages_from_elements.include?(pl.page) }
  true
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



79
80
81
82
83
84
85
86
87
# File 'app/models/concerns/fe/answer_pages_presenter_concern.rb', line 79

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


97
98
99
# File 'app/models/concerns/fe/answer_pages_presenter_concern.rb', line 97

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



64
65
66
67
68
69
# File 'app/models/concerns/fe/answer_pages_presenter_concern.rb', line 64

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



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

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_all_pagesObject



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

def questions_for_all_pages
  Fe::QuestionSet.new(@active_answer_sheet.question_sheet.all_elements, @active_answer_sheet)
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)


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

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



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

def sheet_title
  @active_answer_sheet.question_sheet.label
end

#started?Boolean

Returns:

  • (Boolean)


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

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