Extract common elements from record detail pages
This commit is contained in:
@@ -1,10 +1,12 @@
|
||||
defmodule MusicLibraryWeb.RecordComponents do
|
||||
use MusicLibraryWeb, :html
|
||||
|
||||
alias MusicBrainz.ReleaseGroup
|
||||
alias MusicBrainz.ReleaseSearchResult
|
||||
alias MusicLibrary.Assets.Transform
|
||||
alias MusicLibrary.Country
|
||||
alias MusicLibrary.Records
|
||||
alias MusicLibrary.RecordSets.RecordSet
|
||||
alias Phoenix.LiveView.JS
|
||||
|
||||
attr :record, :map, required: true
|
||||
@@ -550,4 +552,201 @@ defmodule MusicLibraryWeb.RecordComponents do
|
||||
/>
|
||||
"""
|
||||
end
|
||||
|
||||
attr :record, Records.Record, required: true
|
||||
attr :current_date, Date, default: nil
|
||||
|
||||
def record_title_and_metadata(assigns) do
|
||||
~H"""
|
||||
<div>
|
||||
<h2 class="mt-1 flex font-semibold text-lg md:text-2xl text-zinc-700 dark:text-zinc-300 text-wrap">
|
||||
{@record.title}
|
||||
</h2>
|
||||
<p class="mt-2 flex items-center text-sm text-zinc-500 dark:text-zinc-400">
|
||||
<.record_colors record={@record} />
|
||||
<span class="ml-1">
|
||||
<.icon
|
||||
name="hero-calendar-days"
|
||||
class="-mt-1 h-4 w-4"
|
||||
aria-hidden="true"
|
||||
data-slot="icon"
|
||||
/>
|
||||
{Records.Record.format_release_date(@record.release_date)}
|
||||
<span :if={@current_date && !Records.Record.released?(@record, @current_date)}>
|
||||
({gettext("Unreleased")})
|
||||
</span>
|
||||
· {format_label(@record.format)} · {type_label(@record.type)}
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
"""
|
||||
end
|
||||
|
||||
attr :record, Records.Record, required: true
|
||||
|
||||
def record_external_links(assigns) do
|
||||
~H"""
|
||||
<div class="mt-2 flex items-center gap-2">
|
||||
<code id={"record-#{@record.id}"} class="hidden">{@record.id}</code>
|
||||
<code id={"mb-#{@record.musicbrainz_id}"} class="hidden">
|
||||
{@record.musicbrainz_id}
|
||||
</code>
|
||||
<.button
|
||||
href={ReleaseGroup.url(@record.musicbrainz_id)}
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
variant="ghost"
|
||||
size="xs"
|
||||
>
|
||||
<.icon name="hero-arrow-top-right-on-square" class="h-3.5 w-3.5" aria-hidden="true" />
|
||||
{gettext("MusicBrainz")}
|
||||
</.button>
|
||||
<.button
|
||||
variant="ghost"
|
||||
size="xs"
|
||||
phx-click={
|
||||
JS.dispatch("music_library:clipcopy", to: "#record-#{@record.id}")
|
||||
|> JS.transition("animate-shake")
|
||||
}
|
||||
>
|
||||
<.icon name="hero-clipboard-document" class="h-3.5 w-3.5" aria-hidden="true" />
|
||||
{gettext("Copy ID")}
|
||||
</.button>
|
||||
<.button
|
||||
variant="ghost"
|
||||
size="xs"
|
||||
phx-click={
|
||||
JS.dispatch("music_library:clipcopy", to: "#mb-#{@record.musicbrainz_id}")
|
||||
|> JS.transition("animate-shake")
|
||||
}
|
||||
>
|
||||
<.icon name="hero-clipboard-document" class="h-3.5 w-3.5" aria-hidden="true" />
|
||||
{gettext("Copy MB ID")}
|
||||
</.button>
|
||||
</div>
|
||||
"""
|
||||
end
|
||||
|
||||
attr :record, Records.Record, required: true
|
||||
attr :section, :atom, values: [:collection, :wishlist], required: true
|
||||
|
||||
def record_genres(assigns) do
|
||||
~H"""
|
||||
<.dl_row label={gettext("Genres")}>
|
||||
<.link
|
||||
:for={genre <- @record.genres}
|
||||
patch={genre_search_path(@section, genre)}
|
||||
>
|
||||
<.badge variant="soft">
|
||||
{genre}
|
||||
</.badge>
|
||||
</.link>
|
||||
</.dl_row>
|
||||
"""
|
||||
end
|
||||
|
||||
attr :record, Records.Record, required: true
|
||||
|
||||
def record_published_releases(assigns) do
|
||||
~H"""
|
||||
<.dl_row label={gettext("Published releases")}>
|
||||
<div class="flex justify-between">
|
||||
{Records.Record.release_count(@record)}
|
||||
<.release_list record={@record} />
|
||||
<button phx-click={Fluxon.open_dialog("release-list-" <> @record.id)}>
|
||||
<span class="sr-only">
|
||||
{gettext("Show releases included in the record")}
|
||||
</span>
|
||||
<.icon
|
||||
name="hero-magnifying-glass-plus"
|
||||
class="-mt-1 h-5 w-5"
|
||||
aria-hidden="true"
|
||||
data-slot="icon"
|
||||
/>
|
||||
</button>
|
||||
</div>
|
||||
</.dl_row>
|
||||
"""
|
||||
end
|
||||
|
||||
attr :record, Records.Record, required: true
|
||||
|
||||
def record_includes(assigns) do
|
||||
~H"""
|
||||
<.dl_row
|
||||
:if={Records.Record.included_release_groups_count(@record) > 0}
|
||||
label={gettext("Includes")}
|
||||
>
|
||||
<ul>
|
||||
<li :for={included_release_group <- Records.Record.included_release_groups(@record)}>
|
||||
{included_release_group.artists} - {included_release_group.title}
|
||||
</li>
|
||||
</ul>
|
||||
</.dl_row>
|
||||
"""
|
||||
end
|
||||
|
||||
attr :record_sets, :list, required: true
|
||||
|
||||
def record_sets_list(assigns) do
|
||||
~H"""
|
||||
<.dl_row :if={@record_sets != []} label={gettext("Record sets")}>
|
||||
<ul>
|
||||
<li :for={record_set <- @record_sets} class="flex items-baseline gap-2">
|
||||
<.link
|
||||
navigate={~p"/record-sets/#{record_set}"}
|
||||
class="text-zinc-700 hover:text-zinc-500 dark:text-zinc-400 dark:hover:text-zinc-300 hover:underline"
|
||||
>
|
||||
{record_set.name}
|
||||
</.link>
|
||||
<span class="text-xs text-zinc-500 dark:text-zinc-400">
|
||||
{gettext(
|
||||
"%{collected}/%{total} collected",
|
||||
RecordSet.count_by_status(record_set)
|
||||
)}
|
||||
</span>
|
||||
</li>
|
||||
</ul>
|
||||
</.dl_row>
|
||||
"""
|
||||
end
|
||||
|
||||
attr :record, Records.Record, required: true
|
||||
|
||||
def record_timestamps(assigns) do
|
||||
~H"""
|
||||
<p class="mt-2 flex items-center gap-1.5 text-xs text-zinc-400 dark:text-zinc-500">
|
||||
<.icon name="hero-clock" class="h-3.5 w-3.5" aria-hidden="true" />
|
||||
{gettext("Added %{date}", date: Records.Record.format_as_date(@record.inserted_at))}
|
||||
<span>·</span>
|
||||
{gettext("Updated %{date}", date: Records.Record.format_as_date(@record.updated_at))}
|
||||
</p>
|
||||
"""
|
||||
end
|
||||
|
||||
attr :record, Records.Record, required: true
|
||||
attr :embedding_text, :string, required: true
|
||||
|
||||
def record_debug_sheet(assigns) do
|
||||
~H"""
|
||||
<.debug_data_sheet
|
||||
id="debug-data"
|
||||
items={[
|
||||
%{
|
||||
name: "musicbrainz",
|
||||
title: gettext("MusicBrainz"),
|
||||
data: @record.musicbrainz_data,
|
||||
type: :json
|
||||
},
|
||||
%{name: "embedding", title: gettext("Embedding"), data: @embedding_text, type: :text}
|
||||
]}
|
||||
/>
|
||||
"""
|
||||
end
|
||||
|
||||
defp genre_search_path(:collection, genre),
|
||||
do: ~p"/collection?#{%{query: ~s(genre:"#{genre}")}}"
|
||||
|
||||
defp genre_search_path(:wishlist, genre),
|
||||
do: ~p"/wishlist?#{%{query: ~s(genre:"#{genre}")}}"
|
||||
end
|
||||
|
||||
@@ -5,19 +5,22 @@ defmodule MusicLibraryWeb.CollectionLive.Show do
|
||||
|
||||
import MusicLibraryWeb.RecordComponents,
|
||||
only: [
|
||||
format_label: 1,
|
||||
type_label: 1,
|
||||
release_summary: 1,
|
||||
artist_links: 1,
|
||||
record_colors: 1,
|
||||
record_cover: 1,
|
||||
release_list: 1,
|
||||
record_debug_sheet: 1,
|
||||
record_external_links: 1,
|
||||
record_genres: 1,
|
||||
record_includes: 1,
|
||||
record_published_releases: 1,
|
||||
record_sets_list: 1,
|
||||
record_timestamps: 1,
|
||||
record_title_and_metadata: 1,
|
||||
release_summary: 1,
|
||||
similar_records: 1
|
||||
]
|
||||
|
||||
alias MusicLibrary.{Records, RecordSets, ScrobbleActivity}
|
||||
alias MusicLibrary.Records.Similarity
|
||||
alias MusicLibrary.RecordSets.RecordSet
|
||||
alias Phoenix.LiveView.JS
|
||||
|
||||
@impl true
|
||||
@@ -212,75 +215,11 @@ defmodule MusicLibraryWeb.CollectionLive.Show do
|
||||
</.button_group>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<h2 class="mt-1 flex font-semibold text-lg md:text-2xl text-zinc-700 dark:text-zinc-300 text-wrap">
|
||||
{@record.title}
|
||||
</h2>
|
||||
<p class="mt-2 flex items-center text-sm text-zinc-500 dark:text-zinc-400">
|
||||
<.record_colors record={@record} />
|
||||
<span class="ml-1">
|
||||
<.icon
|
||||
name="hero-calendar-days"
|
||||
class="-mt-1 h-4 w-4"
|
||||
aria-hidden="true"
|
||||
data-slot="icon"
|
||||
/>
|
||||
{Records.Record.format_release_date(@record.release_date)} · {format_label(
|
||||
@record.format
|
||||
)} · {type_label(@record.type)}
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class="mt-2 flex items-center gap-2">
|
||||
<code id={"record-#{@record.id}"} class="hidden">{@record.id}</code>
|
||||
<code id={"mb-#{@record.musicbrainz_id}"} class="hidden">
|
||||
{@record.musicbrainz_id}
|
||||
</code>
|
||||
<.button
|
||||
href={MusicBrainz.ReleaseGroup.url(@record.musicbrainz_id)}
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
variant="ghost"
|
||||
size="xs"
|
||||
>
|
||||
<.icon name="hero-arrow-top-right-on-square" class="h-3.5 w-3.5" aria-hidden="true" />
|
||||
{gettext("MusicBrainz")}
|
||||
</.button>
|
||||
<.button
|
||||
variant="ghost"
|
||||
size="xs"
|
||||
phx-click={
|
||||
JS.dispatch("music_library:clipcopy", to: "#record-#{@record.id}")
|
||||
|> JS.transition("animate-shake")
|
||||
}
|
||||
>
|
||||
<.icon name="hero-clipboard-document" class="h-3.5 w-3.5" aria-hidden="true" />
|
||||
{gettext("Copy ID")}
|
||||
</.button>
|
||||
<.button
|
||||
variant="ghost"
|
||||
size="xs"
|
||||
phx-click={
|
||||
JS.dispatch("music_library:clipcopy", to: "#mb-#{@record.musicbrainz_id}")
|
||||
|> JS.transition("animate-shake")
|
||||
}
|
||||
>
|
||||
<.icon name="hero-clipboard-document" class="h-3.5 w-3.5" aria-hidden="true" />
|
||||
{gettext("Copy MB ID")}
|
||||
</.button>
|
||||
</div>
|
||||
<.record_title_and_metadata record={@record} />
|
||||
<.record_external_links record={@record} />
|
||||
<div class="mt-4 md:mt-8">
|
||||
<dl class="divide-y divide-zinc-100 dark:divide-slate-300/30">
|
||||
<.dl_row label={gettext("Genres")}>
|
||||
<.link
|
||||
:for={genre <- @record.genres}
|
||||
patch={~p"/collection?#{%{query: ~s(genre:"#{genre}")}}"}
|
||||
>
|
||||
<.badge variant="soft">
|
||||
{genre}
|
||||
</.badge>
|
||||
</.link>
|
||||
</.dl_row>
|
||||
<.record_genres record={@record} section={:collection} />
|
||||
<.dl_row label={gettext("Purchased on")}>
|
||||
{Records.Record.format_as_date(@record.purchased_at)}
|
||||
</.dl_row>
|
||||
@@ -295,23 +234,7 @@ defmodule MusicLibraryWeb.CollectionLive.Show do
|
||||
{ngettext("(1 scrobble)", "(%{count} scrobbles)", @play_count)}
|
||||
</span>
|
||||
</.dl_row>
|
||||
<.dl_row label={gettext("Published releases")}>
|
||||
<div class="flex justify-between">
|
||||
{Records.Record.release_count(@record)}
|
||||
<.release_list record={@record} />
|
||||
<button phx-click={Fluxon.open_dialog("release-list-" <> @record.id)}>
|
||||
<span class="sr-only">
|
||||
{gettext("Show releases included in the record")}
|
||||
</span>
|
||||
<.icon
|
||||
name="hero-magnifying-glass-plus"
|
||||
class="-mt-1 h-5 w-5"
|
||||
aria-hidden="true"
|
||||
data-slot="icon"
|
||||
/>
|
||||
</button>
|
||||
</div>
|
||||
</.dl_row>
|
||||
<.record_published_releases record={@record} />
|
||||
<.dl_row label={gettext("Collected release")}>
|
||||
<div class="flex justify-between space-x-2">
|
||||
<span
|
||||
@@ -338,41 +261,10 @@ defmodule MusicLibraryWeb.CollectionLive.Show do
|
||||
/>
|
||||
</div>
|
||||
</.dl_row>
|
||||
<.dl_row
|
||||
:if={Records.Record.included_release_groups_count(@record) > 0}
|
||||
label={gettext("Includes")}
|
||||
>
|
||||
<ul>
|
||||
<li :for={included_release_group <- Records.Record.included_release_groups(@record)}>
|
||||
{included_release_group.artists} - {included_release_group.title}
|
||||
</li>
|
||||
</ul>
|
||||
</.dl_row>
|
||||
<.dl_row :if={@record_sets != []} label={gettext("Record sets")}>
|
||||
<ul>
|
||||
<li :for={record_set <- @record_sets} class="flex items-baseline gap-2">
|
||||
<.link
|
||||
navigate={~p"/record-sets/#{record_set}"}
|
||||
class="text-zinc-700 hover:text-zinc-500 dark:text-zinc-400 dark:hover:text-zinc-300 hover:underline"
|
||||
>
|
||||
{record_set.name}
|
||||
</.link>
|
||||
<span class="text-xs text-zinc-500 dark:text-zinc-400">
|
||||
{gettext(
|
||||
"%{collected}/%{total} collected",
|
||||
RecordSet.count_by_status(record_set)
|
||||
)}
|
||||
</span>
|
||||
</li>
|
||||
</ul>
|
||||
</.dl_row>
|
||||
<.record_includes record={@record} />
|
||||
<.record_sets_list record_sets={@record_sets} />
|
||||
</dl>
|
||||
<p class="mt-2 flex items-center gap-1.5 text-xs text-zinc-400 dark:text-zinc-500">
|
||||
<.icon name="hero-clock" class="h-3.5 w-3.5" aria-hidden="true" />
|
||||
{gettext("Added %{date}", date: Records.Record.format_as_date(@record.inserted_at))}
|
||||
<span>·</span>
|
||||
{gettext("Updated %{date}", date: Records.Record.format_as_date(@record.updated_at))}
|
||||
</p>
|
||||
<.record_timestamps record={@record} />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -383,18 +275,7 @@ defmodule MusicLibraryWeb.CollectionLive.Show do
|
||||
section={:collection}
|
||||
/>
|
||||
|
||||
<.debug_data_sheet
|
||||
id="debug-data"
|
||||
items={[
|
||||
%{
|
||||
name: "musicbrainz",
|
||||
title: gettext("MusicBrainz"),
|
||||
data: @record.musicbrainz_data,
|
||||
type: :json
|
||||
},
|
||||
%{name: "embedding", title: gettext("Embedding"), data: @embedding_text, type: :text}
|
||||
]}
|
||||
/>
|
||||
<.record_debug_sheet record={@record} embedding_text={@embedding_text} />
|
||||
|
||||
<.live_component
|
||||
id="release-with-tracks"
|
||||
|
||||
@@ -3,19 +3,22 @@ defmodule MusicLibraryWeb.WishlistLive.Show do
|
||||
|
||||
import MusicLibraryWeb.RecordComponents,
|
||||
only: [
|
||||
format_label: 1,
|
||||
type_label: 1,
|
||||
release_summary: 1,
|
||||
artist_links: 1,
|
||||
record_colors: 1,
|
||||
record_cover: 1,
|
||||
release_list: 1
|
||||
record_debug_sheet: 1,
|
||||
record_external_links: 1,
|
||||
record_genres: 1,
|
||||
record_includes: 1,
|
||||
record_published_releases: 1,
|
||||
record_sets_list: 1,
|
||||
record_timestamps: 1,
|
||||
record_title_and_metadata: 1,
|
||||
release_summary: 1
|
||||
]
|
||||
|
||||
alias MusicLibrary.OnlineStoreTemplates
|
||||
alias MusicLibrary.{Records, RecordSets}
|
||||
alias MusicLibrary.Records.Similarity
|
||||
alias MusicLibrary.RecordSets.RecordSet
|
||||
|
||||
@impl true
|
||||
def render(assigns) do
|
||||
@@ -188,95 +191,12 @@ defmodule MusicLibraryWeb.WishlistLive.Show do
|
||||
</.button_group>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<h2 class="mt-1 flex font-semibold text-lg md:text-2xl text-zinc-700 dark:text-zinc-300 text-wrap">
|
||||
{@record.title}
|
||||
</h2>
|
||||
<p class="flex items-center mt-2 text-sm text-zinc-500 dark:text-zinc-400">
|
||||
<.record_colors record={@record} />
|
||||
|
||||
<span class="ml-1">
|
||||
<.icon
|
||||
name="hero-calendar-days"
|
||||
class="-mt-1 h-4 w-4"
|
||||
aria-hidden="true"
|
||||
data-slot="icon"
|
||||
/>
|
||||
{Records.Record.format_release_date(@record.release_date)}
|
||||
<span :if={@current_date && !Records.Record.released?(@record, @current_date)}>
|
||||
({gettext("Unreleased")})
|
||||
</span>
|
||||
· {format_label(@record.format)} · {type_label(@record.type)}
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class="mt-2 flex items-center gap-2">
|
||||
<code id={"record-#{@record.id}"} class="hidden">{@record.id}</code>
|
||||
<code id={"mb-#{@record.musicbrainz_id}"} class="hidden">
|
||||
{@record.musicbrainz_id}
|
||||
</code>
|
||||
<.button
|
||||
href={MusicBrainz.ReleaseGroup.url(@record.musicbrainz_id)}
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
variant="ghost"
|
||||
size="xs"
|
||||
>
|
||||
<.icon name="hero-arrow-top-right-on-square" class="h-3.5 w-3.5" aria-hidden="true" />
|
||||
{gettext("MusicBrainz")}
|
||||
</.button>
|
||||
<.button
|
||||
variant="ghost"
|
||||
size="xs"
|
||||
phx-click={
|
||||
JS.dispatch("music_library:clipcopy", to: "#record-#{@record.id}")
|
||||
|> JS.transition("animate-shake")
|
||||
}
|
||||
>
|
||||
<.icon name="hero-clipboard-document" class="h-3.5 w-3.5" aria-hidden="true" />
|
||||
{gettext("Copy ID")}
|
||||
</.button>
|
||||
<.button
|
||||
variant="ghost"
|
||||
size="xs"
|
||||
phx-click={
|
||||
JS.dispatch("music_library:clipcopy", to: "#mb-#{@record.musicbrainz_id}")
|
||||
|> JS.transition("animate-shake")
|
||||
}
|
||||
>
|
||||
<.icon name="hero-clipboard-document" class="h-3.5 w-3.5" aria-hidden="true" />
|
||||
{gettext("Copy MB ID")}
|
||||
</.button>
|
||||
</div>
|
||||
<.record_title_and_metadata record={@record} current_date={@current_date} />
|
||||
<.record_external_links record={@record} />
|
||||
<div class="mt-4 md:mt-8">
|
||||
<dl class="divide-y divide-zinc-100 dark:divide-slate-300/30">
|
||||
<.dl_row label={gettext("Genres")}>
|
||||
<.link
|
||||
:for={genre <- @record.genres}
|
||||
patch={~p"/wishlist?#{%{query: ~s(genre:"#{genre}")}}"}
|
||||
>
|
||||
<.badge variant="soft">
|
||||
{genre}
|
||||
</.badge>
|
||||
</.link>
|
||||
</.dl_row>
|
||||
<.dl_row label={gettext("Published releases")}>
|
||||
<div class="flex justify-between">
|
||||
{Records.Record.release_count(@record)}
|
||||
<.release_list record={@record} />
|
||||
<button phx-click={Fluxon.open_dialog("release-list-" <> @record.id)}>
|
||||
<span class="sr-only">
|
||||
{gettext("Show releases included in the record")}
|
||||
</span>
|
||||
<.icon
|
||||
name="hero-magnifying-glass-plus"
|
||||
class="-mt-1 h-5 w-5"
|
||||
aria-hidden="true"
|
||||
data-slot="icon"
|
||||
/>
|
||||
</button>
|
||||
</div>
|
||||
</.dl_row>
|
||||
<.record_genres record={@record} section={:wishlist} />
|
||||
<.record_published_releases record={@record} />
|
||||
<.dl_row label={gettext("Wishlisted release")}>
|
||||
<div class="flex justify-between space-x-2">
|
||||
<span
|
||||
@@ -291,41 +211,10 @@ defmodule MusicLibraryWeb.WishlistLive.Show do
|
||||
/>
|
||||
</div>
|
||||
</.dl_row>
|
||||
<.dl_row
|
||||
:if={Records.Record.included_release_groups_count(@record) > 0}
|
||||
label={gettext("Includes")}
|
||||
>
|
||||
<ul>
|
||||
<li :for={included_release_group <- Records.Record.included_release_groups(@record)}>
|
||||
{included_release_group.artists} - {included_release_group.title}
|
||||
</li>
|
||||
</ul>
|
||||
</.dl_row>
|
||||
<.dl_row :if={@record_sets != []} label={gettext("Record sets")}>
|
||||
<ul>
|
||||
<li :for={record_set <- @record_sets} class="flex items-baseline gap-2">
|
||||
<.link
|
||||
navigate={~p"/record-sets/#{record_set}"}
|
||||
class="text-zinc-700 hover:text-zinc-500 dark:text-zinc-400 dark:hover:text-zinc-300 hover:underline"
|
||||
>
|
||||
{record_set.name}
|
||||
</.link>
|
||||
<span class="text-xs text-zinc-500 dark:text-zinc-400">
|
||||
{gettext(
|
||||
"%{collected}/%{total} collected",
|
||||
RecordSet.count_by_status(record_set)
|
||||
)}
|
||||
</span>
|
||||
</li>
|
||||
</ul>
|
||||
</.dl_row>
|
||||
<.record_includes record={@record} />
|
||||
<.record_sets_list record_sets={@record_sets} />
|
||||
</dl>
|
||||
<p class="mt-2 flex items-center gap-1.5 text-xs text-zinc-400 dark:text-zinc-500">
|
||||
<.icon name="hero-clock" class="h-3.5 w-3.5" aria-hidden="true" />
|
||||
{gettext("Added %{date}", date: Records.Record.format_as_date(@record.inserted_at))}
|
||||
<span>·</span>
|
||||
{gettext("Updated %{date}", date: Records.Record.format_as_date(@record.updated_at))}
|
||||
</p>
|
||||
<.record_timestamps record={@record} />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -359,18 +248,7 @@ defmodule MusicLibraryWeb.WishlistLive.Show do
|
||||
</details>
|
||||
</div>
|
||||
|
||||
<.debug_data_sheet
|
||||
id="debug-data"
|
||||
items={[
|
||||
%{
|
||||
name: "musicbrainz",
|
||||
title: gettext("MusicBrainz"),
|
||||
data: @record.musicbrainz_data,
|
||||
type: :json
|
||||
},
|
||||
%{name: "embedding", title: gettext("Embedding"), data: @embedding_text, type: :text}
|
||||
]}
|
||||
/>
|
||||
<.record_debug_sheet record={@record} embedding_text={@embedding_text} />
|
||||
|
||||
<.live_component
|
||||
id="record-chat"
|
||||
|
||||
+12
-25
@@ -79,9 +79,8 @@ msgstr ""
|
||||
msgid "Formats"
|
||||
msgstr ""
|
||||
|
||||
#: lib/music_library_web/components/record_components.ex
|
||||
#: lib/music_library_web/components/record_form.ex
|
||||
#: lib/music_library_web/live/collection_live/show.ex
|
||||
#: lib/music_library_web/live/wishlist_live/show.ex
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Genres"
|
||||
msgstr ""
|
||||
@@ -263,8 +262,7 @@ msgstr ""
|
||||
msgid "Wishlisted"
|
||||
msgstr ""
|
||||
|
||||
#: lib/music_library_web/live/collection_live/show.ex
|
||||
#: lib/music_library_web/live/wishlist_live/show.ex
|
||||
#: lib/music_library_web/components/record_components.ex
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Includes"
|
||||
msgstr ""
|
||||
@@ -389,7 +387,6 @@ msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: lib/music_library_web/components/record_components.ex
|
||||
#: lib/music_library_web/live/wishlist_live/show.ex
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Unreleased"
|
||||
msgstr ""
|
||||
@@ -471,8 +468,7 @@ msgstr ""
|
||||
msgid "Record added to the collection"
|
||||
msgstr ""
|
||||
|
||||
#: lib/music_library_web/live/collection_live/show.ex
|
||||
#: lib/music_library_web/live/wishlist_live/show.ex
|
||||
#: lib/music_library_web/components/record_components.ex
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Published releases"
|
||||
msgstr ""
|
||||
@@ -1578,8 +1574,7 @@ msgstr ""
|
||||
msgid "Available releases"
|
||||
msgstr ""
|
||||
|
||||
#: lib/music_library_web/live/collection_live/show.ex
|
||||
#: lib/music_library_web/live/wishlist_live/show.ex
|
||||
#: lib/music_library_web/components/record_components.ex
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Show releases included in the record"
|
||||
msgstr ""
|
||||
@@ -1881,14 +1876,12 @@ msgstr ""
|
||||
msgid "Try a different search term or check the spelling"
|
||||
msgstr ""
|
||||
|
||||
#: lib/music_library_web/live/collection_live/show.ex
|
||||
#: lib/music_library_web/live/wishlist_live/show.ex
|
||||
#: lib/music_library_web/components/record_components.ex
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "%{collected}/%{total} collected"
|
||||
msgstr ""
|
||||
|
||||
#: lib/music_library_web/live/collection_live/show.ex
|
||||
#: lib/music_library_web/live/wishlist_live/show.ex
|
||||
#: lib/music_library_web/components/record_components.ex
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Record sets"
|
||||
msgstr ""
|
||||
@@ -1967,33 +1960,28 @@ msgstr ""
|
||||
msgid "Could not search MusicBrainz. Please try again."
|
||||
msgstr ""
|
||||
|
||||
#: lib/music_library_web/live/collection_live/show.ex
|
||||
#: lib/music_library_web/live/wishlist_live/show.ex
|
||||
#: lib/music_library_web/components/record_components.ex
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Added %{date}"
|
||||
msgstr ""
|
||||
|
||||
#: lib/music_library_web/components/record_components.ex
|
||||
#: lib/music_library_web/live/artist_live/show.ex
|
||||
#: lib/music_library_web/live/collection_live/show.ex
|
||||
#: lib/music_library_web/live/wishlist_live/show.ex
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "MusicBrainz"
|
||||
msgstr ""
|
||||
|
||||
#: lib/music_library_web/live/collection_live/show.ex
|
||||
#: lib/music_library_web/live/wishlist_live/show.ex
|
||||
#: lib/music_library_web/components/record_components.ex
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Updated %{date}"
|
||||
msgstr ""
|
||||
|
||||
#: lib/music_library_web/live/collection_live/show.ex
|
||||
#: lib/music_library_web/live/wishlist_live/show.ex
|
||||
#: lib/music_library_web/components/record_components.ex
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Copy ID"
|
||||
msgstr ""
|
||||
|
||||
#: lib/music_library_web/live/collection_live/show.ex
|
||||
#: lib/music_library_web/live/wishlist_live/show.ex
|
||||
#: lib/music_library_web/components/record_components.ex
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Copy MB ID"
|
||||
msgstr ""
|
||||
@@ -2011,8 +1999,7 @@ msgstr ""
|
||||
msgid "Discogs"
|
||||
msgstr ""
|
||||
|
||||
#: lib/music_library_web/live/collection_live/show.ex
|
||||
#: lib/music_library_web/live/wishlist_live/show.ex
|
||||
#: lib/music_library_web/components/record_components.ex
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Embedding"
|
||||
msgstr ""
|
||||
|
||||
@@ -79,9 +79,8 @@ msgstr ""
|
||||
msgid "Formats"
|
||||
msgstr ""
|
||||
|
||||
#: lib/music_library_web/components/record_components.ex
|
||||
#: lib/music_library_web/components/record_form.ex
|
||||
#: lib/music_library_web/live/collection_live/show.ex
|
||||
#: lib/music_library_web/live/wishlist_live/show.ex
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Genres"
|
||||
msgstr ""
|
||||
@@ -263,8 +262,7 @@ msgstr ""
|
||||
msgid "Wishlisted"
|
||||
msgstr ""
|
||||
|
||||
#: lib/music_library_web/live/collection_live/show.ex
|
||||
#: lib/music_library_web/live/wishlist_live/show.ex
|
||||
#: lib/music_library_web/components/record_components.ex
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Includes"
|
||||
msgstr ""
|
||||
@@ -389,7 +387,6 @@ msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: lib/music_library_web/components/record_components.ex
|
||||
#: lib/music_library_web/live/wishlist_live/show.ex
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Unreleased"
|
||||
msgstr ""
|
||||
@@ -471,8 +468,7 @@ msgstr ""
|
||||
msgid "Record added to the collection"
|
||||
msgstr ""
|
||||
|
||||
#: lib/music_library_web/live/collection_live/show.ex
|
||||
#: lib/music_library_web/live/wishlist_live/show.ex
|
||||
#: lib/music_library_web/components/record_components.ex
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Published releases"
|
||||
msgstr ""
|
||||
@@ -1578,8 +1574,7 @@ msgstr ""
|
||||
msgid "Available releases"
|
||||
msgstr ""
|
||||
|
||||
#: lib/music_library_web/live/collection_live/show.ex
|
||||
#: lib/music_library_web/live/wishlist_live/show.ex
|
||||
#: lib/music_library_web/components/record_components.ex
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Show releases included in the record"
|
||||
msgstr ""
|
||||
@@ -1881,14 +1876,12 @@ msgstr ""
|
||||
msgid "Try a different search term or check the spelling"
|
||||
msgstr ""
|
||||
|
||||
#: lib/music_library_web/live/collection_live/show.ex
|
||||
#: lib/music_library_web/live/wishlist_live/show.ex
|
||||
#: lib/music_library_web/components/record_components.ex
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
msgid "%{collected}/%{total} collected"
|
||||
msgstr ""
|
||||
|
||||
#: lib/music_library_web/live/collection_live/show.ex
|
||||
#: lib/music_library_web/live/wishlist_live/show.ex
|
||||
#: lib/music_library_web/components/record_components.ex
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
msgid "Record sets"
|
||||
msgstr ""
|
||||
@@ -1967,33 +1960,28 @@ msgstr ""
|
||||
msgid "Could not search MusicBrainz. Please try again."
|
||||
msgstr ""
|
||||
|
||||
#: lib/music_library_web/live/collection_live/show.ex
|
||||
#: lib/music_library_web/live/wishlist_live/show.ex
|
||||
#: lib/music_library_web/components/record_components.ex
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Added %{date}"
|
||||
msgstr ""
|
||||
|
||||
#: lib/music_library_web/components/record_components.ex
|
||||
#: lib/music_library_web/live/artist_live/show.ex
|
||||
#: lib/music_library_web/live/collection_live/show.ex
|
||||
#: lib/music_library_web/live/wishlist_live/show.ex
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
msgid "MusicBrainz"
|
||||
msgstr ""
|
||||
|
||||
#: lib/music_library_web/live/collection_live/show.ex
|
||||
#: lib/music_library_web/live/wishlist_live/show.ex
|
||||
#: lib/music_library_web/components/record_components.ex
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
msgid "Updated %{date}"
|
||||
msgstr ""
|
||||
|
||||
#: lib/music_library_web/live/collection_live/show.ex
|
||||
#: lib/music_library_web/live/wishlist_live/show.ex
|
||||
#: lib/music_library_web/components/record_components.ex
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Copy ID"
|
||||
msgstr ""
|
||||
|
||||
#: lib/music_library_web/live/collection_live/show.ex
|
||||
#: lib/music_library_web/live/wishlist_live/show.ex
|
||||
#: lib/music_library_web/components/record_components.ex
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
msgid "Copy MB ID"
|
||||
msgstr ""
|
||||
@@ -2011,8 +1999,7 @@ msgstr ""
|
||||
msgid "Discogs"
|
||||
msgstr ""
|
||||
|
||||
#: lib/music_library_web/live/collection_live/show.ex
|
||||
#: lib/music_library_web/live/wishlist_live/show.ex
|
||||
#: lib/music_library_web/components/record_components.ex
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Embedding"
|
||||
msgstr ""
|
||||
|
||||
Reference in New Issue
Block a user