Adds record pagination
This commit is contained in:
@@ -6,8 +6,17 @@ defmodule MusicLibraryWeb.RecordLive.Index do
|
||||
alias MusicLibrary.Records.Record
|
||||
|
||||
@impl true
|
||||
def mount(_params, _session, socket) do
|
||||
{:ok, stream(socket, :records, Records.list_records())}
|
||||
def mount(params, _session, socket) do
|
||||
total_records = Records.count_records()
|
||||
|
||||
pagination_params = get_pagination_params(params, total_records)
|
||||
offset = page_to_offset(pagination_params.page, pagination_params.page_size)
|
||||
records = Records.list_records(limit: pagination_params.page_size, offset: offset)
|
||||
|
||||
{:ok,
|
||||
socket
|
||||
|> assign(:pagination_params, pagination_params)
|
||||
|> stream(:records, records)}
|
||||
end
|
||||
|
||||
@impl true
|
||||
@@ -27,10 +36,25 @@ defmodule MusicLibraryWeb.RecordLive.Index do
|
||||
|> assign(:record, %Record{})
|
||||
end
|
||||
|
||||
defp apply_action(socket, :index, _params) do
|
||||
socket
|
||||
|> assign(:page_title, "Listing Records")
|
||||
|> assign(:record, nil)
|
||||
defp apply_action(socket, :index, params) do
|
||||
new_socket =
|
||||
socket
|
||||
|> assign(:page_title, "Listing Records")
|
||||
|> assign(:record, nil)
|
||||
|
||||
total_records = Records.count_records()
|
||||
pagination_params = get_pagination_params(params, total_records)
|
||||
|
||||
if pagination_params != socket.assigns.pagination_params do
|
||||
offset = page_to_offset(pagination_params.page, pagination_params.page_size)
|
||||
records = Records.list_records(limit: pagination_params.page_size, offset: offset)
|
||||
|
||||
new_socket
|
||||
|> assign(:pagination_params, pagination_params)
|
||||
|> stream(:records, records, reset: true)
|
||||
else
|
||||
new_socket
|
||||
end
|
||||
end
|
||||
|
||||
@impl true
|
||||
|
||||
@@ -55,4 +55,4 @@
|
||||
/>
|
||||
</.modal>
|
||||
|
||||
<.card_footer entries={@streams.records} />
|
||||
<.pagination pagination_params={@pagination_params} />
|
||||
|
||||
Reference in New Issue
Block a user