Added sorting for all table attrs

This commit is contained in:
Kieran Eglin 2024-12-12 11:41:11 -08:00
parent 771d2278d4
commit e98c04727d
No known key found for this signature in database
GPG key ID: 193984967FCF432D
2 changed files with 7 additions and 13 deletions

View file

@ -22,15 +22,6 @@ defmodule PinchflatWeb.Sources.SourceLive.IndexTableLive do
|> then(&{:ok, &1}) |> then(&{:ok, &1})
end 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 def handle_event("sort_update", %{"sort_key" => sort_key}, %{assigns: assigns} = socket) do
new_sort_key = String.to_existing_atom(sort_key) 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 defp set_sources(%{assigns: assigns} = socket) do
sources = sources =
sources_query() 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() |> Repo.all()
assign(socket, %{sources: sources}) 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(: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(: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(: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 sort_attr(_), do: sort_attr(:custom_name)
defp sources_query do defp sources_query do

View file

@ -14,7 +14,7 @@
<.localized_number number={source.downloaded_count} /> <.localized_number number={source.downloaded_count} />
</.subtle_link> </.subtle_link>
</:col> </:col>
<: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 %> <%= if source.retention_period_days && source.retention_period_days > 0 do %>
<.localized_number number={source.retention_period_days} /> <.localized_number number={source.retention_period_days} />
<.pluralize count={source.retention_period_days} word="day" /> <.pluralize count={source.retention_period_days} word="day" />
@ -22,12 +22,12 @@
<span class="text-lg">∞</span> <span class="text-lg">∞</span>
<% end %> <% end %>
</:col> </:col>
<: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}"}> <.subtle_link href={~p"/media_profiles/#{source.media_profile_id}"}>
{source.media_profile.name} {source.media_profile.name}
</.subtle_link> </.subtle_link>
</:col> </:col>
<:col :let={source} label="Enabled?"> <:col :let={source} label="Enabled?" sort_key="enabled">
<.live_component <.live_component
module={PinchflatWeb.Sources.SourceLive.SourceEnableToggle} module={PinchflatWeb.Sources.SourceLive.SourceEnableToggle}
source={source} source={source}