Class: Carnival::Paginator

Inherits:
Object
  • Object
show all
Defined in:
app/view_objects/carnival/paginator.rb

Instance Method Summary collapse

Constructor Details

#initialize(current_page, last_page, max_fast_pages = 5) ⇒ Paginator

Returns a new instance of Paginator.



4
5
6
7
8
# File 'app/view_objects/carnival/paginator.rb', line 4

def initialize(current_page, last_page, max_fast_pages = 5)
  @current_page = current_page
  @last_page = last_page >= 1 ? last_page : 1
  @max_fast_pages = max_fast_pages
end

Instance Method Details



22
23
24
25
26
# File 'app/view_objects/carnival/paginator.rb', line 22

def fast_pages_links_html
  fast_pages_links_indexes.map do |page|
    {:label => page, :css_class => get_css_class(page), :js_function => get_js_function(page)}
  end
end


10
11
12
13
14
15
16
17
18
19
20
# File 'app/view_objects/carnival/paginator.rb', line 10

def fast_pages_links_indexes
  fast_page_links = []
  first_index = -(@max_fast_pages/2)
  while fast_page_links.size < @max_fast_pages do
    fast_page = @current_page + first_index
    break if fast_page > @last_page
    fast_page_links << fast_page if fast_page > 0
    first_index = first_index + 1
  end
  fast_page_links
end

#get_css_class(page) ⇒ Object



32
33
34
35
36
37
38
# File 'app/view_objects/carnival/paginator.rb', line 32

def get_css_class page
  if page == @current_page
    'carnival-selected-page-button'
  else
    'carnival-page-button'
  end
end

#get_js_function(page) ⇒ Object



28
29
30
# File 'app/view_objects/carnival/paginator.rb', line 28

def get_js_function page
  "javascript:Carnival.goToPage(#{page})"
end

#next_pageObject



48
49
50
51
52
53
54
# File 'app/view_objects/carnival/paginator.rb', line 48

def next_page
  if @current_page + 1 > @last_page
    @current_page
  else
    @current_page + 1
  end
end

#pagesObject



56
57
58
59
60
61
62
63
# File 'app/view_objects/carnival/paginator.rb', line 56

def pages
  htmls = []
  htmls << {:label => ('paginate_first'), :js_function => get_js_function(1)}
  htmls << {:label => ('paginate_previous'), :js_function => get_js_function(previous_page)}
  htmls = htmls + fast_pages_links_html
  htmls << {:label => ('paginate_next'), :js_function => get_js_function(next_page)}
  htmls << {:label => ('paginate_last'), :js_function => get_js_function(@last_page)}
end

#previous_pageObject



40
41
42
43
44
45
46
# File 'app/view_objects/carnival/paginator.rb', line 40

def previous_page
  if @current_page - 1 < 1
    @current_page
  else
    @current_page - 1
  end
end