Add ability to rotate dominant colors
This commit is contained in:
@@ -188,6 +188,18 @@ defmodule MusicLibrary.Records.Record do
|
||||
end
|
||||
end
|
||||
|
||||
def rotate_dominant_colors(%__MODULE__{dominant_colors: dominant_colors} = record) do
|
||||
change(record, dominant_colors: rotate(dominant_colors))
|
||||
end
|
||||
|
||||
def rotate_dominant_colors(changeset) do
|
||||
dominant_colors = get_field(changeset, :dominant_colors)
|
||||
put_change(changeset, :dominant_colors, rotate(dominant_colors))
|
||||
end
|
||||
|
||||
defp rotate([]), do: []
|
||||
defp rotate([first | rest]), do: rest ++ [first]
|
||||
|
||||
defp update_release_ids(changeset) do
|
||||
case get_change(changeset, :musicbrainz_data) do
|
||||
nil ->
|
||||
|
||||
@@ -60,9 +60,15 @@ defmodule MusicLibraryWeb.FormComponent do
|
||||
/>
|
||||
</div>
|
||||
<div class="space-y-4">
|
||||
<.label for="dominant_colors">
|
||||
{gettext("Dominant Colors")}
|
||||
</.label>
|
||||
<div class="flex items-center gap-x-2">
|
||||
<.label for="dominant_colors">
|
||||
{gettext("Dominant Colors")}
|
||||
</.label>
|
||||
<.button type="button" size="sm" phx-click="rotate_dominant_colors" phx-target={@myself}>
|
||||
<.icon name="hero-arrows-right-left" class="icon" aria-hidden="true" data-slot="icon" />
|
||||
{gettext("Rotate colors")}
|
||||
</.button>
|
||||
</div>
|
||||
<div class="mt-2 grid grid-cols-5 gap-2">
|
||||
<div :for={color <- @form[:dominant_colors].value} class="flex flex-col items-center">
|
||||
<input
|
||||
@@ -181,6 +187,11 @@ defmodule MusicLibraryWeb.FormComponent do
|
||||
handle_event("validate", params, socket)
|
||||
end
|
||||
|
||||
def handle_event("rotate_dominant_colors", _params, socket) do
|
||||
changeset = Record.rotate_dominant_colors(socket.assigns.form.source)
|
||||
{:noreply, assign(socket, form: to_form(changeset, action: :validate))}
|
||||
end
|
||||
|
||||
defp save_record(socket, record_params, uploaded_covers) do
|
||||
params =
|
||||
case uploaded_covers do
|
||||
|
||||
Reference in New Issue
Block a user