defmodule MvWeb.MemberLive.Show do use MvWeb, :live_view import Ash.Query @impl true def render(assigns) do ~H""" <.header> {@member.first_name} {@member.last_name} <:subtitle>This is a member record from your database. <:actions> <.link patch={~p"/members/#{@member}/show/edit"} phx-click={JS.push_focus()}> <.button>Edit member <.list> <:item title="Id">{@member.id} <:item title="First Name">{@member.first_name} <:item title="Last Name">{@member.last_name} <:item title="Email">{@member.email} <:item title="Birth Date">{@member.birth_date} <:item title="Paid">{if @member.paid, do: "Yes", else: "No"} <:item title="Phone Number">{@member.phone_number} <:item title="Join Date">{@member.join_date} <:item title="Exit Date">{@member.exit_date} <:item title="Notes">{@member.notes} <:item title="City">{@member.city} <:item title="Street">{@member.street} <:item title="House Number">{@member.house_number} <:item title="Postal Code">{@member.postal_code}

Custom Properties

<.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 <.modal :if={@live_action == :edit} id="member-modal" show on_cancel={JS.patch(~p"/members/#{@member}")} > <.live_component module={MvWeb.MemberLive.FormComponent} id={@member.id} title={@page_title} action={@live_action} member={@member} patch={~p"/members/#{@member}"} /> """ end @impl true def mount(_params, _session, socket) do {:ok, socket} end @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, member)} end defp page_title(:show), do: "Show Member" defp page_title(:edit), do: "Edit Member" end