@@ -31,7 +31,7 @@ module Danbooru
|
||||
end
|
||||
|
||||
def paginate_sequential_before(before_id = nil)
|
||||
c = limit(records_per_page)
|
||||
c = limit(records_per_page + 1)
|
||||
|
||||
if before_id.to_i > 0
|
||||
c = c.where("#{table_name}.id < ?", before_id.to_i)
|
||||
@@ -44,7 +44,7 @@ module Danbooru
|
||||
end
|
||||
|
||||
def paginate_sequential_after(after_id)
|
||||
limit(records_per_page).where("#{table_name}.id > ?", after_id.to_i).reorder("#{table_name}.id asc").tap do |obj|
|
||||
limit(records_per_page + 1).where("#{table_name}.id > ?", after_id.to_i).reorder("#{table_name}.id asc").tap do |obj|
|
||||
obj.extend(SequentialCollectionExtension)
|
||||
obj.sequential_paginator_mode = :after
|
||||
end
|
||||
|
||||
@@ -4,18 +4,26 @@ module Danbooru
|
||||
attr_accessor :sequential_paginator_mode
|
||||
|
||||
def is_first_page?
|
||||
size == 0
|
||||
if sequential_paginator_mode == :before
|
||||
false
|
||||
else
|
||||
size <= records_per_page
|
||||
end
|
||||
end
|
||||
|
||||
def is_last_page?
|
||||
size == 0
|
||||
if sequential_paginator_mode == :after
|
||||
false
|
||||
else
|
||||
size <= records_per_page
|
||||
end
|
||||
end
|
||||
|
||||
def to_a
|
||||
if sequential_paginator_mode == :before
|
||||
super
|
||||
super.first(records_per_page)
|
||||
else
|
||||
super.reverse
|
||||
super.first(records_per_page).reverse
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user