diff --git a/lib/music_library/records/record.ex b/lib/music_library/records/record.ex index 9d29de20..bad7f517 100644 --- a/lib/music_library/records/record.ex +++ b/lib/music_library/records/record.ex @@ -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 -> diff --git a/lib/music_library_web/components/form_component.ex b/lib/music_library_web/components/form_component.ex index e80edd2c..04ccf6eb 100644 --- a/lib/music_library_web/components/form_component.ex +++ b/lib/music_library_web/components/form_component.ex @@ -60,9 +60,15 @@ defmodule MusicLibraryWeb.FormComponent do />
- <.label for="dominant_colors"> - {gettext("Dominant Colors")} - +
+ <.label for="dominant_colors"> + {gettext("Dominant Colors")} + + <.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")} + +