Class: Qe::AnswerPagesPresenter

Inherits:
Presenter show all
Defined in:
app/presenters/qe/answer_pages_presenter.rb

Instance Attribute Summary collapse

Attributes inherited from Presenter

#controller

Instance Method Summary collapse

Methods inherited from Presenter

#request

Constructor Details

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

Returns a new instance of AnswerPagesPresenter.



16
17
18
19
20
21
22
23
# File 'app/presenters/qe/answer_pages_presenter.rb', line 16

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

Instance Attribute Details

#active_answer_sheetObject

Returns the value of attribute active_answer_sheet.



14
15
16
# File 'app/presenters/qe/answer_pages_presenter.rb', line 14

def active_answer_sheet
  @active_answer_sheet
end

#active_pageObject

Returns the value of attribute active_page.



14
15
16
# File 'app/presenters/qe/answer_pages_presenter.rb', line 14

def active_page
  @active_page
end

Returns the value of attribute page_links.



14
15
16
# File 'app/presenters/qe/answer_pages_presenter.rb', line 14

def page_links
  @page_links
end

#pagesObject

Returns the value of attribute pages.



14
15
16
# File 'app/presenters/qe/answer_pages_presenter.rb', line 14

def pages
  @pages
end

Instance Method Details

#all_questions_for_page(page_id = :first) ⇒ Object



31
32
33
34
35
# File 'app/presenters/qe/answer_pages_presenter.rb', line 31

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)
  QuestionSet.new(@active_page ? @active_page.all_elements : [], @active_answer_sheet)
end

#initialize_pages(answer_sheet) ⇒ Object



64
65
66
67
68
69
70
71
# File 'app/presenters/qe/answer_pages_presenter.rb', line 64

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


81
82
83
# File 'app/presenters/qe/answer_pages_presenter.rb', line 81

def new_page_link(answer_sheet, page, a = nil)
  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



49
50
51
52
53
54
# File 'app/presenters/qe/answer_pages_presenter.rb', line 49

def next_page
  active_page_dom_id = active_page.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



25
26
27
28
29
# File 'app/presenters/qe/answer_pages_presenter.rb', line 25

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)
  QuestionSet.new(@active_page ? @active_page.elements : [], @active_answer_sheet)
end

#reference?Boolean

Returns:

  • (Boolean)


56
57
58
59
60
61
62
# File 'app/presenters/qe/answer_pages_presenter.rb', line 56

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



38
39
40
# File 'app/presenters/qe/answer_pages_presenter.rb', line 38

def sheet_title
  @active_answer_sheet.question_sheet.label
end

#started?Boolean

Returns:

  • (Boolean)


73
74
75
76
77
78
79
# File 'app/presenters/qe/answer_pages_presenter.rb', line 73

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