Show record count by format in stats dashboard

This commit is contained in:
Claudio Ortolina
2024-10-02 21:26:21 +01:00
parent 6edbb7e057
commit 62d792a244
4 changed files with 28 additions and 2 deletions
+9
View File
@@ -39,6 +39,15 @@ defmodule MusicLibrary.Records do
Repo.aggregate(Record, :count)
end
def count_records_by_format do
q =
from r in Record,
group_by: r.format,
select: {r.format, count(r.id)}
Repo.all(q)
end
def search_records_count(query) do
q =
from r in Record,
@@ -4,8 +4,15 @@ defmodule MusicLibraryWeb.StatsController do
alias MusicLibrary.Records
def index(conn, _params) do
records_count = Records.count_records()
records_count_by_format = Records.count_records_by_format()
records_count = Enum.reduce(records_count_by_format, 0, fn {_, count}, acc -> acc + count end)
record = Records.get_latest_record!()
render(conn, :index, records_count: records_count, record: record, nav_section: :dashboard)
render(conn, :index,
records_count_by_format: records_count_by_format,
records_count: records_count,
record: record,
nav_section: :dashboard
)
end
end
@@ -2,4 +2,11 @@ defmodule MusicLibraryWeb.StatsHTML do
use MusicLibraryWeb, :html
embed_templates "stats_html/*"
defp format_records_count(records_count_by_format) do
Enum.map(records_count_by_format, fn {format, count} ->
Integer.to_string(count) <> " " <> Atom.to_string(format)
end)
|> Enum.join(", ")
end
end
@@ -24,6 +24,9 @@
</dt>
<dd class="ml-16 flex items-baseline pb-6 sm:pb-7">
<p class="text-2xl font-semibold text-gray-900"><%= @records_count %></p>
<p class="ml-2 flex items-baseline text-sm font-medium">
<%= format_records_count(@records_count_by_format) %>
</p>
<div class="absolute inset-x-0 bottom-0 bg-gray-50 px-4 py-4 sm:px-6">
<div class="text-sm">
<a href={~p"/records"} class="font-medium text-zinc-600 hover:text-zinc-500">