Show record count by format in stats dashboard
This commit is contained in:
@@ -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">
|
||||
|
||||
Reference in New Issue
Block a user