diff --git a/lib/music_library_web/live/stats_live/index.ex b/lib/music_library_web/live/stats_live/index.ex index aa278420..9604e28b 100644 --- a/lib/music_library_web/live/stats_live/index.ex +++ b/lib/music_library_web/live/stats_live/index.ex @@ -227,7 +227,7 @@ defmodule MusicLibraryWeb.StatsLive.Index do |> assign_top_albums() |> assign_top_artists() |> assign( - scrobble_activity_mode: :albums, + scrobble_activity_mode: "albums", latest_record: latest_record, page_title: gettext("Stats"), current_section: :stats, @@ -274,7 +274,7 @@ defmodule MusicLibraryWeb.StatsLive.Index do {:noreply, socket |> assign_scrobble_activity(recent_tracks) - |> assign(scrobble_activity_mode: String.to_existing_atom(mode))} + |> assign(scrobble_activity_mode: mode)} end def handle_info(%{track_count: 0}, socket) do diff --git a/lib/music_library_web/live/stats_live/index.html.heex b/lib/music_library_web/live/stats_live/index.html.heex index dec58b26..79b0b506 100644 --- a/lib/music_library_web/live/stats_live/index.html.heex +++ b/lib/music_library_web/live/stats_live/index.html.heex @@ -146,401 +146,409 @@ <.refresh_lastfm_feed_button /> - <%!-- TODO: replace with OSS version --%> - - <.button - phx-click={JS.push("set_scrobble_activity_mode", value: %{"mode" => :albums})} - class={[ - "rounded-l-md rounded-r-none", - @scrobble_activity_mode == :albums && "!bg-zinc-100 dark:!bg-zinc-700" - ]} - > - {gettext("Albums")} - - <.button - phx-click={JS.push("set_scrobble_activity_mode", value: %{"mode" => :tracks})} - class={[ - "-ml-px rounded-r-md rounded-l-none", - @scrobble_activity_mode == :tracks && "!bg-zinc-100 dark:!bg-zinc-700" - ]} - > - {gettext("Tracks")} - - -
+ <.tabs_list active_tab={@scrobble_activity_mode} variant="segmented" class="w-48"> + <:tab + name="albums" + phx-click={JS.push("set_scrobble_activity_mode", value: %{mode: "albums"})} + > + {gettext("Albums")} + + <:tab + name="tracks" + phx-click={JS.push("set_scrobble_activity_mode", value: %{mode: "tracks"})} + > + {gettext("Tracks")} + + + + <.tabs_panel name="albums" active={@scrobble_activity_mode == "albums"}> +
+ {album.artist.name} +
+ <.link + :if={album.artist.musicbrainz_id in @artist_ids} + class="font-semibold text-sm block text-zinc-700 hover:text-zinc-500 dark:text-zinc-400 dark:hover:text-zinc-300" + navigate={~p"/artists/#{album.artist.musicbrainz_id}"} + > + {album.artist.name} + ++ {album.metadata.title} +
+ +- {album.metadata.title} -
- + + <.focus_wrap id={"actions-#{album.scrobbled_at_uts}-albums-focus-wrap"}> + <.dropdown_link + :for={format <- Records.Record.formats()} + id={"actions-#{album.scrobbled_at_uts}-#{format}-import"} + phx-click={ + JS.push("import", + value: %{id: album.metadata.musicbrainz_id, format: format}, + page_loading: true + ) + } + > + {format_label(format)} + + +- {track.artist.name} -
- <.link - :if={track.artist.musicbrainz_id in @artist_ids} - class="font-semibold text-sm block text-zinc-700 hover:text-zinc-500 dark:text-zinc-400 dark:hover:text-zinc-300" - navigate={~p"/artists/#{track.artist.musicbrainz_id}"} - > - {track.artist.name} - -- {track.title} -
-- {track.album.title} -
- - <.tooltip> - <.icon - name="hero-information-circle" - class="-mt-1 h-5 w-5 text-zinc-500 dark:text-zinc-400 cursor-pointer" - aria-hidden="true" - data-slot="icon" + +
- {track.musicbrainz_id || gettext("Unknown")}
-
-
-
- {track.album.musicbrainz_id || gettext("Unknown")}
-
-
-
- {track.artist.musicbrainz_id || gettext("Unknown")}
-
-
- + {track.artist.name} +
+ <.link + :if={track.artist.musicbrainz_id in @artist_ids} + class="font-semibold text-sm block text-zinc-700 hover:text-zinc-500 dark:text-zinc-400 dark:hover:text-zinc-300" + navigate={~p"/artists/#{track.artist.musicbrainz_id}"} + > + {track.artist.name} + ++ {track.title} +
++ {track.album.title} +
+ + <.tooltip> + <.icon + name="hero-information-circle" + class="-mt-1 h-5 w-5 text-zinc-500 dark:text-zinc-400 cursor-pointer" + aria-hidden="true" + data-slot="icon" + /> + <:content> +
+ {track.musicbrainz_id || gettext("Unknown")}
+
+
+
+ {track.album.musicbrainz_id || gettext("Unknown")}
+
+
+
+ {track.artist.musicbrainz_id || gettext("Unknown")}
+
+
+