Class: RailsPaginate::Pagers::Slider

Inherits:
Base
  • Object
show all
Defined in:
lib/rails_paginate/pagers/slider.rb

Overview

slider method

Constant Summary collapse

@@inner =
3
@@outer =
1

Instance Attribute Summary

Attributes inherited from Base

#collection, #options

Instance Method Summary collapse

Methods inherited from Base

#current_page, #initialize, #pages

Constructor Details

This class inherits a constructor from RailsPaginate::Pagers::Base

Instance Method Details

#innerObject

get option of inner



58
59
60
# File 'lib/rails_paginate/pagers/slider.rb', line 58

def inner
  options[:inner] || self.class.inner
end

#inner_rangeObject

build dummy inner range



36
37
38
# File 'lib/rails_paginate/pagers/slider.rb', line 36

def inner_range
  @inner_range ||= (current_page - inner)..(current_page + inner)
end

#outerObject

get option of out



63
64
65
# File 'lib/rails_paginate/pagers/slider.rb', line 63

def outer
  options[:outer] || self.class.outer
end

#visible?(page) ⇒ Boolean

looks should this page visible

Returns:

  • (Boolean)


41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/rails_paginate/pagers/slider.rb', line 41

def visible?(page)
  # outer
  if outer > 0
    return true if outer >= page
    return true if (pages - outer) < page
  end

  # current page
  return true if current_page == page

  # inner
  return true if inner_range.include? page

  false
end

#visible_pagesObject

build array with all visible pages



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/rails_paginate/pagers/slider.rb', line 14

def visible_pages
  visible = []
  last_inserted = 0
  splited = false
  (1..pages).each do |page|
    # insert
    if visible? page
      visible << page
      last_inserted = page
      splited = false
    else
      # need splitter
      if not splited and outer > 0 and last_inserted < page
        visible << nil
        splited = true
      end
    end
  end
  visible
end