Add stats for last 7 days

This commit is contained in:
Claudio Ortolina
2025-09-23 16:01:35 +03:00
parent 5d507a357b
commit 03a57823dc
5 changed files with 76 additions and 46 deletions
+4 -2
View File
@@ -343,11 +343,12 @@ defmodule MusicLibrary.ScrobbleActivity do
releases.
"""
def get_top_albums_by_period(opts) do
period = Keyword.get(opts, :period, :last_30_days)
period = Keyword.get(opts, :period, :last_7_days)
albums =
case period do
:all_time -> get_top_albums(opts)
:last_7_days -> get_top_albums_by_days(7, opts)
:last_30_days -> get_top_albums_by_days(30, opts)
:last_90_days -> get_top_albums_by_days(90, opts)
:last_365_days -> get_top_albums_by_days(365, opts)
@@ -373,10 +374,11 @@ defmodule MusicLibrary.ScrobbleActivity do
Gets top artists for a time period (30, 90, 365 days) and all time.
"""
def get_top_artists_by_period(opts) do
period = Keyword.get(opts, :period, :last_30_days)
period = Keyword.get(opts, :period, :last_7_days)
case period do
:all_time -> get_top_artists(opts)
:last_7_days -> get_top_artists_by_days(7, opts)
:last_30_days -> get_top_artists_by_days(30, opts)
:last_90_days -> get_top_artists_by_days(90, opts)
:last_365_days -> get_top_artists_by_days(365, opts)
@@ -20,13 +20,21 @@ defmodule MusicLibraryWeb.StatsLive.TopAlbums do
</h1>
<.tabs class="mt-4">
<.tabs_list active_tab={name_from_period(@period)} variant="segmented" size="xs">
<:tab
class="flex-1"
name="top_albums_last_7_days"
phx-click={JS.push("set_period", value: %{period: "last_7_days"})}
phx-target={@myself}
>
{gettext("7d")}
</:tab>
<:tab
class="flex-1"
name="top_albums_last_30_days"
phx-click={JS.push("set_period", value: %{period: "last_30_days"})}
phx-target={@myself}
>
{gettext("30 days")}
{gettext("30d")}
</:tab>
<:tab
class="flex-1"
@@ -34,7 +42,7 @@ defmodule MusicLibraryWeb.StatsLive.TopAlbums do
phx-click={JS.push("set_period", value: %{period: "last_90_days"})}
phx-target={@myself}
>
{gettext("90 days")}
{gettext("90d")}
</:tab>
<:tab
class="flex-1"
@@ -42,7 +50,7 @@ defmodule MusicLibraryWeb.StatsLive.TopAlbums do
phx-click={JS.push("set_period", value: %{period: "last_365_days"})}
phx-target={@myself}
>
{gettext("Last year")}
{gettext("1y")}
</:tab>
<:tab
class="flex-1"
@@ -76,7 +84,7 @@ defmodule MusicLibraryWeb.StatsLive.TopAlbums do
def mount(socket) do
{:ok,
socket
|> assign(:period, :last_30_days)}
|> assign(:period, :last_7_days)}
end
@impl true
@@ -20,13 +20,21 @@ defmodule MusicLibraryWeb.StatsLive.TopArtists do
</h1>
<.tabs class="mt-4">
<.tabs_list active_tab={name_from_period(@period)} variant="segmented" size="xs">
<:tab
class="flex-1"
name="top_artists_last_7_days"
phx-click={JS.push("set_period", value: %{period: "last_7_days"})}
phx-target={@myself}
>
{gettext("7d")}
</:tab>
<:tab
class="flex-1"
name="top_artists_last_30_days"
phx-click={JS.push("set_period", value: %{period: "last_30_days"})}
phx-target={@myself}
>
{gettext("30 days")}
{gettext("30d")}
</:tab>
<:tab
class="flex-1"
@@ -34,7 +42,7 @@ defmodule MusicLibraryWeb.StatsLive.TopArtists do
phx-click={JS.push("set_period", value: %{period: "last_90_days"})}
phx-target={@myself}
>
{gettext("90 days")}
{gettext("90d")}
</:tab>
<:tab
class="flex-1"
@@ -42,7 +50,7 @@ defmodule MusicLibraryWeb.StatsLive.TopArtists do
phx-click={JS.push("set_period", value: %{period: "last_365_days"})}
phx-target={@myself}
>
{gettext("Last year")}
{gettext("1y")}
</:tab>
<:tab
class="flex-1"
@@ -72,7 +80,7 @@ defmodule MusicLibraryWeb.StatsLive.TopArtists do
def mount(socket) do
{:ok,
socket
|> assign(:period, :last_30_days)}
|> assign(:period, :last_7_days)}
end
@impl true
+24 -18
View File
@@ -887,12 +887,6 @@ msgstr ""
msgid "Top Albums"
msgstr ""
#: lib/music_library_web/live/stats_live/top_albums.ex
#: lib/music_library_web/live/stats_live/top_artists.ex
#, elixir-autogen, elixir-format
msgid "Last year"
msgstr ""
#: lib/music_library_web/components/record_components.ex
#, elixir-autogen, elixir-format
msgid "Wishlisted on"
@@ -1268,18 +1262,6 @@ msgstr ""
msgid "Data sourced from"
msgstr ""
#: lib/music_library_web/live/stats_live/top_albums.ex
#: lib/music_library_web/live/stats_live/top_artists.ex
#, elixir-autogen, elixir-format
msgid "30 days"
msgstr ""
#: lib/music_library_web/live/stats_live/top_albums.ex
#: lib/music_library_web/live/stats_live/top_artists.ex
#, elixir-autogen, elixir-format
msgid "90 days"
msgstr ""
#: lib/music_library_web/components/record_form.ex
#, elixir-autogen, elixir-format
msgid "Rotate colors"
@@ -1393,3 +1375,27 @@ msgstr ""
#, elixir-autogen, elixir-format
msgid "Read"
msgstr ""
#: lib/music_library_web/live/stats_live/top_albums.ex
#: lib/music_library_web/live/stats_live/top_artists.ex
#, elixir-autogen, elixir-format
msgid "1y"
msgstr ""
#: lib/music_library_web/live/stats_live/top_albums.ex
#: lib/music_library_web/live/stats_live/top_artists.ex
#, elixir-autogen, elixir-format
msgid "30d"
msgstr ""
#: lib/music_library_web/live/stats_live/top_albums.ex
#: lib/music_library_web/live/stats_live/top_artists.ex
#, elixir-autogen, elixir-format
msgid "7d"
msgstr ""
#: lib/music_library_web/live/stats_live/top_albums.ex
#: lib/music_library_web/live/stats_live/top_artists.ex
#, elixir-autogen, elixir-format
msgid "90d"
msgstr ""
+24 -18
View File
@@ -887,12 +887,6 @@ msgstr ""
msgid "Top Albums"
msgstr ""
#: lib/music_library_web/live/stats_live/top_albums.ex
#: lib/music_library_web/live/stats_live/top_artists.ex
#, elixir-autogen, elixir-format, fuzzy
msgid "Last year"
msgstr ""
#: lib/music_library_web/components/record_components.ex
#, elixir-autogen, elixir-format, fuzzy
msgid "Wishlisted on"
@@ -1268,18 +1262,6 @@ msgstr ""
msgid "Data sourced from"
msgstr ""
#: lib/music_library_web/live/stats_live/top_albums.ex
#: lib/music_library_web/live/stats_live/top_artists.ex
#, elixir-autogen, elixir-format
msgid "30 days"
msgstr ""
#: lib/music_library_web/live/stats_live/top_albums.ex
#: lib/music_library_web/live/stats_live/top_artists.ex
#, elixir-autogen, elixir-format
msgid "90 days"
msgstr ""
#: lib/music_library_web/components/record_form.ex
#, elixir-autogen, elixir-format
msgid "Rotate colors"
@@ -1393,3 +1375,27 @@ msgstr ""
#, elixir-autogen, elixir-format, fuzzy
msgid "Read"
msgstr ""
#: lib/music_library_web/live/stats_live/top_albums.ex
#: lib/music_library_web/live/stats_live/top_artists.ex
#, elixir-autogen, elixir-format
msgid "1y"
msgstr ""
#: lib/music_library_web/live/stats_live/top_albums.ex
#: lib/music_library_web/live/stats_live/top_artists.ex
#, elixir-autogen, elixir-format, fuzzy
msgid "30d"
msgstr ""
#: lib/music_library_web/live/stats_live/top_albums.ex
#: lib/music_library_web/live/stats_live/top_artists.ex
#, elixir-autogen, elixir-format
msgid "7d"
msgstr ""
#: lib/music_library_web/live/stats_live/top_albums.ex
#: lib/music_library_web/live/stats_live/top_artists.ex
#, elixir-autogen, elixir-format, fuzzy
msgid "90d"
msgstr ""