From d16361a926069f55bfe4e164c3b68bb03814309a Mon Sep 17 00:00:00 2001 From: Cinder Date: Mon, 3 Feb 2025 08:30:09 -0800 Subject: [PATCH] [Pagination] Add a way to quickly travel to specific pages (#873) --- app/helpers/pagination_helper.rb | 2 +- app/javascript/src/javascripts/paginator.js | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 app/javascript/src/javascripts/paginator.js diff --git a/app/helpers/pagination_helper.rb b/app/helpers/pagination_helper.rb index 1759c2cd6..8cec434ea 100644 --- a/app/helpers/pagination_helper.rb +++ b/app/helpers/pagination_helper.rb @@ -74,7 +74,7 @@ module PaginationHelper html = "".html_safe if page == "..." - html << tag.li(class: "more") { tag.i(class: "fa-solid fa-ellipsis") } + html << tag.li(class: "more") { link_to(tag.i(class: "fa-solid fa-ellipsis"), nav_params_for(0)) } elsif page == records.current_page html << tag.li(class: "current-page") { tag.span(page) } else diff --git a/app/javascript/src/javascripts/paginator.js b/app/javascript/src/javascripts/paginator.js new file mode 100644 index 000000000..4abe73237 --- /dev/null +++ b/app/javascript/src/javascripts/paginator.js @@ -0,0 +1,19 @@ +const Paginator = {}; + +Paginator.init_fasttravel = function (button) { + button.on("click", (event) => { + event.preventDefault(); + + const value = prompt("Navigate to page"); + if (!value) return; + + window.location.replace(button.attr("href").replace("page=0", "page=" + value)); + }); +}; + +$(() => { + for (const one of $(".paginator li.more a").get()) + Paginator.init_fasttravel($(one)); +}); + +export default Paginator;