liveview for new member fields

This commit is contained in:
Moritz 2025-06-17 13:34:24 +02:00
parent 12465c262b
commit 3f2d6d116f
Signed by: moritz
GPG key ID: 1020A035E5DD0824
4 changed files with 77 additions and 3 deletions

View file

@ -1,11 +1,12 @@
defmodule MvWeb.MemberLive.Show do
use MvWeb, :live_view
import Ash.Query
@impl true
def render(assigns) do
~H"""
<.header>
Member {@member.id}
{@member.first_name} {@member.last_name}
<:subtitle>This is a member record from your database.</:subtitle>
<:actions>
@ -17,8 +18,30 @@ defmodule MvWeb.MemberLive.Show do
<.list>
<:item title="Id">{@member.id}</:item>
<:item title="First Name">{@member.first_name}</:item>
<:item title="Last Name">{@member.last_name}</:item>
<:item title="Email">{@member.email}</:item>
<:item title="Birth Date">{@member.birth_date}</:item>
<:item title="Paid">{if @member.paid, do: "Yes", else: "No"}</:item>
<:item title="Phone Number">{@member.phone_number}</:item>
<:item title="Join Date">{@member.join_date}</:item>
<:item title="Exit Date">{@member.exit_date}</:item>
<:item title="Notes">{@member.notes}</:item>
<:item title="City">{@member.city}</:item>
<:item title="Street">{@member.street}</:item>
<:item title="House Number">{@member.house_number}</:item>
<:item title="Postal Code">{@member.postal_code}</:item>
</.list>
<h3 class="mt-8 mb-2 text-lg font-semibold">Custom Properties</h3>
<.generic_list
items={Enum.map(@member.properties, fn p ->
{
p.property_type && p.property_type.name, # name
case p.value do %{value: v} -> v; v -> v end # value
}
end)}
/>
<.back navigate={~p"/members"}>Back to members</.back>
<.modal
@ -46,10 +69,17 @@ defmodule MvWeb.MemberLive.Show do
@impl true
def handle_params(%{"id" => id}, _, socket) do
query =
Mv.Membership.Member
|> filter(id == ^id)
|> load(properties: [:property_type])
member = Ash.read_one!(query)
{:noreply,
socket
|> assign(:page_title, page_title(socket.assigns.live_action))
|> assign(:member, Ash.get!(Mv.Membership.Member, id))}
|> assign(:member, member)}
end
defp page_title(:show), do: "Show Member"