liveview for new member fields
This commit is contained in:
parent
12465c262b
commit
3f2d6d116f
4 changed files with 77 additions and 3 deletions
|
|
@ -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"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue