Show how many years ago for "On this day" records
This commit is contained in:
@@ -82,6 +82,21 @@ defmodule MusicLibrary.Records.Record do
|
||||
end
|
||||
end
|
||||
|
||||
def released_how_long_ago?(%{release_date: nil}, _current_day), do: nil
|
||||
|
||||
def released_how_long_ago?(record, current_day) do
|
||||
case Date.from_iso8601(record.release_date) do
|
||||
{:ok, release_date} ->
|
||||
# approximate calculation of "how many years ago",
|
||||
# we don't really care about leap years
|
||||
diff_days = Date.diff(current_day, release_date)
|
||||
div(diff_days, 365)
|
||||
|
||||
_error ->
|
||||
nil
|
||||
end
|
||||
end
|
||||
|
||||
def releases(record) do
|
||||
record.musicbrainz_data
|
||||
|> ReleaseGroup.releases()
|
||||
|
||||
@@ -85,7 +85,7 @@ defmodule MusicLibraryWeb.StatsComponents do
|
||||
|
||||
attr :record_show_path, :any, required: true
|
||||
attr :records, :list, required: true
|
||||
attr :current_date, Date, required: false, default: nil
|
||||
attr :current_date, Date, required: true
|
||||
|
||||
def records_on_this_day(assigns) do
|
||||
~H"""
|
||||
@@ -129,10 +129,11 @@ defmodule MusicLibraryWeb.StatsComponents do
|
||||
{record.title}
|
||||
</h2>
|
||||
<p class="mt-1 text-xs leading-5 text-zinc-500 dark:text-zinc-400">
|
||||
{Records.Record.format_release_date(record.release_date)}
|
||||
<span :if={@current_date && !Records.Record.released?(record, @current_date)}>
|
||||
({gettext("Unreleased")})
|
||||
</span>
|
||||
{ngettext(
|
||||
"1 year ago",
|
||||
"%{count} years ago",
|
||||
Records.Record.released_how_long_ago?(record, @current_date)
|
||||
)}
|
||||
</p>
|
||||
<p class="sm:hidden mt-1 text-xs leading-5 text-zinc-500 dark:text-zinc-400">
|
||||
{format_label(record.format)} · {type_label(record.type)}
|
||||
|
||||
@@ -9,11 +9,12 @@ defmodule MusicLibraryWeb.StatsLive.Index do
|
||||
alias MusicLibraryWeb.StatsLive.{TopAlbums, TopArtists}
|
||||
|
||||
def mount(_params, _session, socket) do
|
||||
current_date = Date.utc_today()
|
||||
latest_record = Collection.get_latest_record!()
|
||||
recent_tracks = LastFm.get_scrobbled_tracks()
|
||||
records_by_artists = Collection.count_records_by_artist(limit: 20)
|
||||
records_by_genre = Collection.count_records_by_genre(limit: 20)
|
||||
records_on_this_day = Collection.get_records_on_this_day()
|
||||
records_on_this_day = Collection.get_records_on_this_day(current_date)
|
||||
|
||||
if connected?(socket) do
|
||||
LastFm.subscribe_to_feed()
|
||||
@@ -32,6 +33,7 @@ defmodule MusicLibraryWeb.StatsLive.Index do
|
||||
|> assign_counts()
|
||||
|> assign_scrobble_activity(recent_tracks)
|
||||
|> assign(
|
||||
current_date: current_date,
|
||||
scrobble_activity_mode: "albums",
|
||||
latest_record: latest_record,
|
||||
page_title: gettext("Stats"),
|
||||
|
||||
@@ -493,6 +493,7 @@
|
||||
{gettext("On This day")}
|
||||
</h1>
|
||||
<.records_on_this_day
|
||||
current_date={@current_date}
|
||||
records={@streams.records_on_this_day}
|
||||
record_show_path={fn record -> ~p"/collection/#{record}" end}
|
||||
/>
|
||||
|
||||
@@ -17,7 +17,7 @@ defmodule MusicLibraryWeb.WishlistLive.Index do
|
||||
|
||||
@impl true
|
||||
def mount(_params, _session, socket) do
|
||||
current_date = DateTime.utc_now() |> DateTime.to_date()
|
||||
current_date = Date.utc_today()
|
||||
|
||||
{:ok,
|
||||
socket
|
||||
|
||||
@@ -435,7 +435,6 @@ msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#: lib/music_library_web/components/record_components.ex
|
||||
#: lib/music_library_web/components/stats_components.ex
|
||||
#: lib/music_library_web/live/wishlist_live/show.html.heex
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Unreleased"
|
||||
@@ -1303,3 +1302,10 @@ msgstr ""
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "On This day"
|
||||
msgstr ""
|
||||
|
||||
#: lib/music_library_web/components/stats_components.ex
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "1 year ago"
|
||||
msgid_plural "%{count} years ago"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
@@ -435,7 +435,6 @@ msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#: lib/music_library_web/components/record_components.ex
|
||||
#: lib/music_library_web/components/stats_components.ex
|
||||
#: lib/music_library_web/live/wishlist_live/show.html.heex
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Unreleased"
|
||||
@@ -1303,3 +1302,10 @@ msgstr ""
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "On This day"
|
||||
msgstr ""
|
||||
|
||||
#: lib/music_library_web/components/stats_components.ex
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "1 year ago"
|
||||
msgid_plural "%{count} years ago"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
Reference in New Issue
Block a user