From e98c04727ddee4224148998386f0777f2c573a73 Mon Sep 17 00:00:00 2001 From: Kieran Eglin Date: Thu, 12 Dec 2024 11:41:11 -0800 Subject: [PATCH] Added sorting for all table attrs --- .../sources/source_live/index_table_live.ex | 14 ++++---------- .../sources/source_live/index_table_live.html.heex | 6 +++--- 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/lib/pinchflat_web/controllers/sources/source_live/index_table_live.ex b/lib/pinchflat_web/controllers/sources/source_live/index_table_live.ex index 8125d2a..a4068b3 100644 --- a/lib/pinchflat_web/controllers/sources/source_live/index_table_live.ex +++ b/lib/pinchflat_web/controllers/sources/source_live/index_table_live.ex @@ -22,15 +22,6 @@ defmodule PinchflatWeb.Sources.SourceLive.IndexTableLive do |> then(&{:ok, &1}) end - # def handle_event("formless-input", %{"event" => "toggle_enabled"} = params, socket) do - # source = Sources.get_source!(params["id"]) - # should_enable = params["value"] == "true" - - # {:ok, _} = Sources.update_source(source, %{enabled: should_enable}) - - # {:noreply, assign(socket, %{sources: get_sources(socket.assigns)})} - # end - def handle_event("sort_update", %{"sort_key" => sort_key}, %{assigns: assigns} = socket) do new_sort_key = String.to_existing_atom(sort_key) @@ -48,7 +39,7 @@ defmodule PinchflatWeb.Sources.SourceLive.IndexTableLive do defp set_sources(%{assigns: assigns} = socket) do sources = sources_query() - |> order_by(^[{assigns.sort_direction, sort_attr(assigns.sort_key)}]) + |> order_by(^[{assigns.sort_direction, sort_attr(assigns.sort_key)}, asc: :id]) |> Repo.all() assign(socket, %{sources: sources}) @@ -56,7 +47,10 @@ defmodule PinchflatWeb.Sources.SourceLive.IndexTableLive do defp sort_attr(:pending_count), do: dynamic([s, mp, dl, pe], field(pe, :pending_count)) defp sort_attr(:downloaded_count), do: dynamic([s, mp, dl], field(dl, :downloaded_count)) + defp sort_attr(:media_profile_name), do: dynamic([s, mp], field(mp, :name)) defp sort_attr(:custom_name), do: dynamic([s], field(s, :custom_name)) + defp sort_attr(:enabled), do: dynamic([s], field(s, :enabled)) + defp sort_attr(:retention_period_days), do: dynamic([s], field(s, :retention_period_days)) defp sort_attr(_), do: sort_attr(:custom_name) defp sources_query do diff --git a/lib/pinchflat_web/controllers/sources/source_live/index_table_live.html.heex b/lib/pinchflat_web/controllers/sources/source_live/index_table_live.html.heex index 76c7231..7fb7a97 100644 --- a/lib/pinchflat_web/controllers/sources/source_live/index_table_live.html.heex +++ b/lib/pinchflat_web/controllers/sources/source_live/index_table_live.html.heex @@ -14,7 +14,7 @@ <.localized_number number={source.downloaded_count} /> - <:col :let={source} label="Retention"> + <:col :let={source} label="Retention" sort_key="retention_period_days"> <%= if source.retention_period_days && source.retention_period_days > 0 do %> <.localized_number number={source.retention_period_days} /> <.pluralize count={source.retention_period_days} word="day" /> @@ -22,12 +22,12 @@ <% end %> - <:col :let={source} label="Media Profile"> + <:col :let={source} label="Media Profile" sort_key="media_profile_name"> <.subtle_link href={~p"/media_profiles/#{source.media_profile_id}"}> {source.media_profile.name} - <:col :let={source} label="Enabled?"> + <:col :let={source} label="Enabled?" sort_key="enabled"> <.live_component module={PinchflatWeb.Sources.SourceLive.SourceEnableToggle} source={source}