From bd2f7d90548ac7258bd291cb7400b03fd78f2b3c Mon Sep 17 00:00:00 2001 From: Guillermo Ramos Date: Fri, 14 Feb 2020 10:02:59 +0100 Subject: Pagination --- lib/waev_web/views/exports_view.ex | 49 ++++++++++++++++++++++++++++++++------ 1 file changed, 42 insertions(+), 7 deletions(-) (limited to 'lib/waev_web/views') diff --git a/lib/waev_web/views/exports_view.ex b/lib/waev_web/views/exports_view.ex index 62eefc1..9175122 100644 --- a/lib/waev_web/views/exports_view.ex +++ b/lib/waev_web/views/exports_view.ex @@ -114,15 +114,50 @@ defmodule WaevWeb.ExportsView do String.replace(text, "\n", "
") end - def pagination_bar(assigns, page, size) do - prev = if page == 0, do: 0, else: page - 1 - # TODO max - next = page + 1 + def pagination_bar(assigns, %{page: page, size: size, pages: pages}) do + offset = 1 # How many buttons to see in each side + path = fn page -> + ~E""" + <%= Routes.exports_path(@conn, :show, @id, page: page, size: size) %> + """ + end + + btn = fn enabled, page, text -> + ~E""" + + href="<%= path.(page) %>" + <% else %> + disabled + <% end %>> + <%= text %> + + """ + end ~E""" -
- Left - Right +
+ <%= btn.(page != 1, page-1, "<") %> + <%= if (page > 1 + offset) do %> + <%= btn.(true, 1, "1") %> + <% end %> + <%= if (page > 1 + offset + 1) do %> + ... + <% end %> + <%= for p <- max(1, page-offset) .. min(pages, page+offset) do %> + <%= if (p == page) do %> + <%= page %> + <% else %> + <%= btn.(p != page, p, p) %> + <% end %> + <% end %> + <%= if (page < pages - offset - 1) do %> + ... + <% end %> + <%= if (page < pages - offset) do %> + <%= btn.(true, pages, pages) %> + <% end %> + <%= btn.(page != pages, page+1, ">") %>
""" end -- cgit v1.2.3