Class: Liquor::Pagination::PageExternal
- Inherits:
-
Object
- Object
- Liquor::Pagination::PageExternal
- Includes:
- External
- Defined in:
- lib/liquor/extensions/pagination.rb
Instance Method Summary collapse
- #each_relevant_page ⇒ Object
- #in_inner_window ⇒ Object
- #in_outer_window ⇒ Object
-
#initialize(collection, options = {}) ⇒ PageExternal
constructor
A new instance of PageExternal.
- #is_current ⇒ Object
- #is_first ⇒ Object
- #is_gap ⇒ Object
- #is_last ⇒ Object
- #is_next ⇒ Object
- #is_prev ⇒ Object
- #path ⇒ Object
- #relevant_pages ⇒ Object
- #with(index) ⇒ Object
Methods included from External
Constructor Details
#initialize(collection, options = {}) ⇒ PageExternal
Returns a new instance of PageExternal.
56 57 58 59 60 |
# File 'lib/liquor/extensions/pagination.rb', line 56 def initialize(collection, ={}) @collection = collection @options = @index = @collection.current_page end |
Instance Method Details
#each_relevant_page ⇒ Object
104 105 106 107 108 |
# File 'lib/liquor/extensions/pagination.rb', line 104 def each_relevant_page relevant_pages.each do |page| with(page); yield end end |
#in_inner_window ⇒ Object
84 85 86 |
# File 'lib/liquor/extensions/pagination.rb', line 84 def in_inner_window (@collection.current_page - @index).abs <= @options[:inner_window] end |
#in_outer_window ⇒ Object
88 89 90 91 |
# File 'lib/liquor/extensions/pagination.rb', line 88 def in_outer_window @index <= @options[:outer_window] || @collection.total_pages - @index < @options[:outer_window] end |
#is_current ⇒ Object
62 63 64 |
# File 'lib/liquor/extensions/pagination.rb', line 62 def is_current @index == @collection.current_page end |
#is_first ⇒ Object
66 67 68 |
# File 'lib/liquor/extensions/pagination.rb', line 66 def is_first @index == 1 end |
#is_gap ⇒ Object
93 94 95 |
# File 'lib/liquor/extensions/pagination.rb', line 93 def is_gap !in_outer_window && !in_inner_window end |
#is_last ⇒ Object
70 71 72 |
# File 'lib/liquor/extensions/pagination.rb', line 70 def is_last @index == @collection.total_pages - 1 end |
#is_next ⇒ Object
78 79 80 |
# File 'lib/liquor/extensions/pagination.rb', line 78 def is_next @index == @collection.current_page + 1 end |
#is_prev ⇒ Object
74 75 76 |
# File 'lib/liquor/extensions/pagination.rb', line 74 def is_prev @index == @collection.current_page - 1 end |
#path ⇒ Object
118 119 120 121 122 123 124 125 126 127 128 |
# File 'lib/liquor/extensions/pagination.rb', line 118 def path @url_generator ||= UrlGenerator.bootstrap.new if @collection.respond_to? :to_page_path @collection.to_page_path(@url_generator, @index) elsif @collection.is_a? ActiveRecord::Relation @url_generator.polymorphic_path(@collection.klass, page: @index) else raise "Don't know how to generate page path for #{@collection.class}" end end |
#relevant_pages ⇒ Object
110 111 112 113 114 115 116 |
# File 'lib/liquor/extensions/pagination.rb', line 110 def relevant_pages left_window_plus_one = 1.upto(@options[:outer_window] + 1).to_a right_window_plus_one = (@collection.total_pages - @options[:outer_window]).upto(@collection.total_pages).to_a inside_window_plus_each_sides = (@collection.current_page - @options[:inner_window] - 1).upto(@collection.current_page + @options[:inner_window] + 1).to_a (left_window_plus_one + inside_window_plus_each_sides + right_window_plus_one).uniq.sort.reject {|x| (x < 1) || (x > @collection.total_pages)} end |
#with(index) ⇒ Object
99 100 101 102 |
# File 'lib/liquor/extensions/pagination.rb', line 99 def with(index) @index = index self end |