Refactor to move record release helpers to better places
This commit is contained in:
@@ -71,29 +71,17 @@ defmodule MusicLibrary.Records.Record do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def selected_release_id_options(record) do
|
def releases(record) do
|
||||||
record.musicbrainz_data
|
record.musicbrainz_data
|
||||||
|> ReleaseGroup.releases()
|
|> ReleaseGroup.releases()
|
||||||
|> Enum.map(fn release ->
|
|
||||||
{
|
|
||||||
selected_release_label(release),
|
|
||||||
release["id"]
|
|
||||||
}
|
|
||||||
end)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def selected_release(record) do
|
def selected_release(record) do
|
||||||
record.musicbrainz_data
|
record
|
||||||
|> ReleaseGroup.releases()
|
|> releases()
|
||||||
|> Enum.find(fn release -> release["id"] == record.selected_release_id end)
|
|> Enum.find(fn release -> release["id"] == record.selected_release_id end)
|
||||||
end
|
end
|
||||||
|
|
||||||
def selected_release_label(release) do
|
|
||||||
[release["date"], release["country"], release["packaging"]]
|
|
||||||
|> Enum.reject(&is_nil/1)
|
|
||||||
|> Enum.join(" ")
|
|
||||||
end
|
|
||||||
|
|
||||||
def changeset(record, attrs) do
|
def changeset(record, attrs) do
|
||||||
record
|
record
|
||||||
|> cast(attrs, [
|
|> cast(attrs, [
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
defmodule MusicLibraryWeb.FormComponent do
|
defmodule MusicLibraryWeb.FormComponent do
|
||||||
use MusicLibraryWeb, :live_component
|
use MusicLibraryWeb, :live_component
|
||||||
|
|
||||||
import MusicLibraryWeb.RecordComponents, only: [format_label: 1, type_label: 1]
|
import MusicLibraryWeb.RecordComponents,
|
||||||
|
only: [format_label: 1, type_label: 1, release_label: 1]
|
||||||
|
|
||||||
alias MusicLibrary.Records
|
alias MusicLibrary.Records
|
||||||
alias MusicLibrary.Records.{Cover, Record}
|
alias MusicLibrary.Records.{Cover, Record}
|
||||||
|
|
||||||
@@ -54,7 +56,7 @@ defmodule MusicLibraryWeb.FormComponent do
|
|||||||
<Fluxon.Components.Select.select
|
<Fluxon.Components.Select.select
|
||||||
field={@form[:selected_release_id]}
|
field={@form[:selected_release_id]}
|
||||||
label={gettext("Selected Release")}
|
label={gettext("Selected Release")}
|
||||||
options={Record.selected_release_id_options(@record)}
|
options={selected_release_id_options(@record)}
|
||||||
/>
|
/>
|
||||||
<div class="sm:columns-2">
|
<div class="sm:columns-2">
|
||||||
<.input field={@form[:release_date]} type="text" label={gettext("Release Date")} />
|
<.input field={@form[:release_date]} type="text" label={gettext("Release Date")} />
|
||||||
@@ -192,5 +194,16 @@ defmodule MusicLibraryWeb.FormComponent do
|
|||||||
Enum.map(Records.Record.types(), fn t -> {type_label(t), t} end)
|
Enum.map(Records.Record.types(), fn t -> {type_label(t), t} end)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
defp selected_release_id_options(record) do
|
||||||
|
record
|
||||||
|
|> Records.Record.releases()
|
||||||
|
|> Enum.map(fn release ->
|
||||||
|
{
|
||||||
|
release_label(release),
|
||||||
|
release["id"]
|
||||||
|
}
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
defp notify_parent(msg), do: send(self(), {__MODULE__, msg})
|
defp notify_parent(msg), do: send(self(), {__MODULE__, msg})
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -295,12 +295,18 @@ defmodule MusicLibraryWeb.RecordComponents do
|
|||||||
|
|
||||||
def selected_release_label(record) do
|
def selected_release_label(record) do
|
||||||
if release = Records.Record.selected_release(record) do
|
if release = Records.Record.selected_release(record) do
|
||||||
Records.Record.selected_release_label(release)
|
release_label(release)
|
||||||
else
|
else
|
||||||
gettext("No release selected")
|
gettext("No release selected")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def release_label(release) do
|
||||||
|
[release["date"], release["country"], release["packaging"]]
|
||||||
|
|> Enum.reject(&is_nil/1)
|
||||||
|
|> Enum.join(" ")
|
||||||
|
end
|
||||||
|
|
||||||
def toggle_actions_menu(record_id) do
|
def toggle_actions_menu(record_id) do
|
||||||
JS.toggle(to: "#actions-#{record_id}")
|
JS.toggle(to: "#actions-#{record_id}")
|
||||||
|> JS.toggle_class("pointer-events-none", to: "#records > li")
|
|> JS.toggle_class("pointer-events-none", to: "#records > li")
|
||||||
|
|||||||
Reference in New Issue
Block a user