Improve page titles
- When showing a single record, use record details - Split title into logical breadcrumbs
This commit is contained in:
@@ -4,6 +4,7 @@ defmodule MusicLibraryWeb.CollectionLive.Index do
|
||||
|
||||
alias MusicLibrary.Records
|
||||
alias MusicLibrary.Collection
|
||||
alias MusicLibraryWeb.CollectionLive.Show
|
||||
|
||||
@default_records_list_params %{
|
||||
query: "",
|
||||
@@ -38,7 +39,7 @@ defmodule MusicLibraryWeb.CollectionLive.Index do
|
||||
end
|
||||
|
||||
socket
|
||||
|> assign(:page_title, gettext("Import from MusicBrainz"))
|
||||
|> assign(:page_title, gettext("Import from MusicBrainz · Collection"))
|
||||
|> assign(:record, nil)
|
||||
end
|
||||
|
||||
@@ -51,9 +52,11 @@ defmodule MusicLibraryWeb.CollectionLive.Index do
|
||||
socket
|
||||
end
|
||||
|
||||
record = Records.get_record!(id)
|
||||
|
||||
socket
|
||||
|> assign(:page_title, gettext("Edit"))
|
||||
|> assign(:record, Records.get_record!(id))
|
||||
|> assign(:page_title, Show.page_title(socket.assigns.live_action, record))
|
||||
|> assign(:record, record)
|
||||
end
|
||||
|
||||
defp apply_action(socket, :index, params) do
|
||||
|
||||
@@ -31,7 +31,7 @@ defmodule MusicLibraryWeb.CollectionLive.Show do
|
||||
{:noreply,
|
||||
socket
|
||||
|> assign(:nav_section, :records)
|
||||
|> assign(:page_title, page_title(socket.assigns.live_action))
|
||||
|> assign(:page_title, page_title(socket.assigns.live_action, record))
|
||||
|> assign(:record, record)}
|
||||
end
|
||||
|
||||
@@ -88,8 +88,42 @@ defmodule MusicLibraryWeb.CollectionLive.Show do
|
||||
{:noreply, assign(socket, :record, record)}
|
||||
end
|
||||
|
||||
defp page_title(:show), do: gettext("Show")
|
||||
defp page_title(:edit), do: gettext("Edit")
|
||||
def page_title(:show, record) do
|
||||
artist_names = Enum.map(record.artists, & &1.name)
|
||||
|
||||
Enum.join(
|
||||
[
|
||||
Enum.join(artist_names, ", "),
|
||||
"-",
|
||||
record.title,
|
||||
"·",
|
||||
gettext("Details"),
|
||||
"·",
|
||||
gettext("Collection")
|
||||
],
|
||||
" "
|
||||
)
|
||||
end
|
||||
|
||||
def page_title(action, record) do
|
||||
artist_names = Enum.map(record.artists, & &1.name)
|
||||
|
||||
Enum.join(
|
||||
[
|
||||
Enum.join(artist_names, ", "),
|
||||
"-",
|
||||
record.title,
|
||||
"·",
|
||||
title_segment(action),
|
||||
"·",
|
||||
gettext("Collection")
|
||||
],
|
||||
" "
|
||||
)
|
||||
end
|
||||
|
||||
defp title_segment(:show), do: gettext("Show")
|
||||
defp title_segment(:edit), do: gettext("Edit")
|
||||
|
||||
defp musicbrainz_url(record) do
|
||||
"https://musicbrainz.org/release-group/#{record.musicbrainz_id}"
|
||||
|
||||
@@ -4,6 +4,7 @@ defmodule MusicLibraryWeb.WishlistLive.Index do
|
||||
|
||||
alias MusicLibrary.Wishlist
|
||||
alias MusicLibrary.Records
|
||||
alias MusicLibraryWeb.WishlistLive.Show
|
||||
|
||||
@default_records_list_params %{
|
||||
query: "",
|
||||
@@ -38,7 +39,7 @@ defmodule MusicLibraryWeb.WishlistLive.Index do
|
||||
end
|
||||
|
||||
socket
|
||||
|> assign(:page_title, gettext("Import from MusicBrainz"))
|
||||
|> assign(:page_title, gettext("Import from MusicBrainz · Wishlist"))
|
||||
|> assign(:record, nil)
|
||||
end
|
||||
|
||||
@@ -51,9 +52,11 @@ defmodule MusicLibraryWeb.WishlistLive.Index do
|
||||
socket
|
||||
end
|
||||
|
||||
record = Records.get_record!(id)
|
||||
|
||||
socket
|
||||
|> assign(:page_title, gettext("Edit"))
|
||||
|> assign(:record, Records.get_record!(id))
|
||||
|> assign(:page_title, Show.page_title(socket.assigns.live_action, record))
|
||||
|> assign(:record, record)
|
||||
end
|
||||
|
||||
defp apply_action(socket, :index, params) do
|
||||
|
||||
@@ -26,11 +26,13 @@ defmodule MusicLibraryWeb.WishlistLive.Show do
|
||||
|
||||
@impl true
|
||||
def handle_params(%{"id" => id}, _, socket) do
|
||||
record = Records.get_record!(id)
|
||||
|
||||
{:noreply,
|
||||
socket
|
||||
|> assign(:nav_section, :wishlist)
|
||||
|> assign(:page_title, page_title(socket.assigns.live_action))
|
||||
|> assign(:record, Records.get_record!(id))}
|
||||
|> assign(:page_title, page_title(socket.assigns.live_action, record))
|
||||
|> assign(:record, record)}
|
||||
end
|
||||
|
||||
@impl true
|
||||
@@ -86,8 +88,25 @@ defmodule MusicLibraryWeb.WishlistLive.Show do
|
||||
{:noreply, assign(socket, :record, record)}
|
||||
end
|
||||
|
||||
defp page_title(:show), do: gettext("Show")
|
||||
defp page_title(:edit), do: gettext("Edit")
|
||||
def page_title(action, record) do
|
||||
artist_names = Enum.map(record.artists, & &1.name)
|
||||
|
||||
Enum.join(
|
||||
[
|
||||
Enum.join(artist_names, ", "),
|
||||
"-",
|
||||
record.title,
|
||||
"·",
|
||||
title_segment(action),
|
||||
"·",
|
||||
gettext("Wishlist")
|
||||
],
|
||||
" "
|
||||
)
|
||||
end
|
||||
|
||||
defp title_segment(:show), do: gettext("Show")
|
||||
defp title_segment(:edit), do: gettext("Edit")
|
||||
|
||||
defp musicbrainz_url(record) do
|
||||
"https://musicbrainz.org/release-group/#{record.musicbrainz_id}"
|
||||
|
||||
Reference in New Issue
Block a user