Wire buttons with view

This commit is contained in:
Claudio Ortolina
2024-12-29 15:31:26 +00:00
parent 48e2f4e2e3
commit 1534d28c9e
3 changed files with 30 additions and 11 deletions
@@ -63,11 +63,13 @@ defmodule MusicLibraryWeb.CollectionLive.Index do
defp apply_action(socket, :index, params) do
query = params["query"] || ""
order = params["order"] || "alphabetical"
total_records = Collection.search_records_count(query)
record_list_params =
@default_records_list_params
|> merge_query(query)
|> merge_order(order)
|> merge_pagination(params, total_records)
offset = page_to_offset(record_list_params.page, record_list_params.page_size)
@@ -138,6 +140,10 @@ defmodule MusicLibraryWeb.CollectionLive.Index do
Map.put(record_list_params, :query, query)
end
defp merge_order(record_list_params, order) do
Map.put(record_list_params, :order, parse_order(order))
end
defp merge_pagination(record_list_params, params, total_records) do
record_list_params
|> Map.put(:page, parse_int_or_default(params["page"], record_list_params.page))
@@ -154,10 +160,23 @@ defmodule MusicLibraryWeb.CollectionLive.Index do
String.to_integer(value)
end
defp back_path(record_list_params) do
defp parse_order("alphabetical"), do: :alphabetical
defp parse_order("purchase"), do: :purchase
defp order_path(record_list_params, order) do
qs =
record_list_params
|> Map.take([:query, :page, :page_size])
|> Map.put(:order, order)
|> Enum.filter(fn {_, v} -> v not in ["", nil] end)
~p"/collection?#{qs}"
end
defp back_path(record_list_params) do
qs =
record_list_params
|> Map.take([:query, :page, :page_size, :order])
|> Enum.filter(fn {_, v} -> v not in ["", nil] end)
~p"/collection?#{qs}"