module PaginationHelper
def sequential_paginator(records)
html = '
"
html.html_safe
end
def use_sequential_paginator?(records, page_limit)
params[:page] =~ /[ab]/ || records.current_page >= page_limit
end
def numbered_paginator(records, page_limit: CurrentUser.user.page_limit)
if use_sequential_paginator?(records, page_limit)
return sequential_paginator(records)
end
html = '"
html.html_safe
end
def numbered_paginator_final_item(total_pages, current_page, page_limit)
if total_pages <= page_limit
numbered_paginator_item(total_pages, current_page, page_limit)
else
""
end
end
def numbered_paginator_item(page, current_page, page_limit)
return "" if page.to_i > page_limit
html = []
if page == "..."
html << ""
html << ellipsis_icon
html << ""
elsif page == current_page
html << ""
html << '' + page.to_s + ''
html << ""
else
html << ""
html << link_to(page, nav_params_for(page))
html << ""
end
html.join.html_safe
end
private
def nav_params_for(page)
query_params = params.except(:controller, :action, :id).merge(page: page).permit!
{ params: query_params }
end
end