Packages
ash_phoenix
2.3.23
2.3.24
2.3.23
2.3.22
2.3.21
2.3.20
2.3.19
2.3.18
2.3.17
2.3.16
2.3.15
2.3.14
2.3.13
2.3.12
2.3.11
2.3.10
2.3.9
2.3.8
2.3.7
2.3.6
2.3.5
2.3.4
2.3.3
2.3.2
2.3.1
2.3.0
2.2.0
2.1.26
2.1.25
2.1.24
2.1.23
2.1.22
2.1.21
2.1.20
2.1.19
2.1.18
2.1.17
2.1.16
2.1.15
2.1.14
2.1.13
2.1.12
2.1.11
2.1.10
2.1.9
2.1.8
2.1.7
2.1.6
2.1.5
2.1.4
2.1.3
2.1.2
2.1.1
2.1.0
2.0.4
2.0.3
2.0.2
2.0.1
2.0.0
2.0.0-rc.8
2.0.0-rc.7
2.0.0-rc.6
2.0.0-rc.5
2.0.0-rc.4
2.0.0-rc.3
2.0.0-rc.2
2.0.0-rc.1
2.0.0-rc.0
1.3.7
1.3.6
1.3.5
1.3.4
1.3.3
1.3.2
1.3.1
1.3.0
1.2.26
1.2.25
1.2.24
1.2.23
1.2.22
1.2.21
1.2.20
1.2.19
1.2.18
1.2.17
1.2.16
1.2.15
1.2.14
1.2.13
1.2.12
1.2.11
1.2.10
1.2.9
1.2.8
1.2.7
1.2.6
1.2.5
1.2.4
1.2.3
1.2.2
1.2.1
1.2.0
1.1.2
1.1.1
1.1.0
1.1.0-rc.3
1.1.0-rc.2
1.1.0-rc.1
1.1.0-rc.0
1.0.0-rc.1
1.0.0-rc.0
1.0.0-pre.2
1.0.0-pre.1
1.0.0-pre.0
0.7.7
0.7.6-rc.0
0.7.5
0.7.4
0.7.3
0.7.2-rc.2
0.7.2-rc.1
0.7.2-rc.0
0.7.1
0.7.0
0.6.0-rc.7
0.6.0-rc.6
0.6.0-rc.5
0.6.0-rc.4
0.6.0-rc.3
0.6.0-rc.2
0.6.0-rc.1
0.6.0-rc.0
0.5.19-rc.2
0.5.19-rc.1
0.5.19-rc.0
0.5.18
0.5.17
0.5.16
0.5.15
0.5.14
0.5.13
0.5.12
0.5.11
0.5.10
0.5.9
0.5.8
0.5.7
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.24
0.4.23
0.4.23-rc.1
0.4.23-rc.0
0.4.22-rc2
0.4.22-rc1
0.4.21
0.4.20
0.4.19
0.4.18
0.4.17
0.4.16
0.4.15
0.4.14
0.4.13
0.4.12
0.4.11
0.4.10
0.4.9
0.4.8
0.4.7
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.2
0.3.1
0.3.0
0.2.3
0.2.2
0.2.1
0.2.0
0.1.2
0.1.1
0.1.0
Utilities for integrating Ash and Phoenix
Current section
Files
Jump to
Current section
Files
priv/templates/ash_phoenix.gen.live/old/index.ex.eex
defmodule <%= inspect Module.concat(@web_module, @resource_alias) %>Live.Index do
use <%= @web_module %>, :live_view
@impl true
def render(assigns) do
~H"""
<.header>
Listing <%= @resource_human_plural %>
<%= if @create_action do %>
<:actions>
<.link patch={~p"<%= @route_prefix %>/new"}>
<.button>New <%= @resource_human_singular %></.button>
</.link>
</:actions>
<% end %>
</.header>
<.table
id="<%= @resource_plural %>"
rows={@streams.<%= @resource_plural %>}
row_click={fn {_<%= @pkey %>, <%= @resource_singular %>} -> JS.navigate(~p"<%= @route_prefix %>/#{<%= @resource_singular %>}") end}
>
<%= for %{name: name} <- @attrs do %>
<:col :let={{_<%= @pkey %>, <%= @resource_singular %>}} label="<%= Phoenix.Naming.humanize(Atom.to_string(name)) %>"><%%= <%= @resource_singular %>.<%= name %> %></:col>
<% end %>
<:action :let={{_<%= @pkey %>, <%= @resource_singular %>}}>
<div class="sr-only">
<.link navigate={~p"<%= @route_prefix %>/#{<%= @resource_singular %>}"}>Show</.link>
</div>
<%= if @update_action do %>
<.link patch={~p"<%= @route_prefix %>/#{<%= @resource_singular %>}/edit"}>Edit</.link>
<% end %>
</:action>
<%= if @destroy do %>
<:action :let={{<%= @pkey %>, <%= @resource_singular %>}}>
<.link
phx-click={JS.push("delete", value: %{<%= @pkey %>: <%= @resource_singular %>.<%= @pkey %>}) |> hide("##{<%= @pkey %>}")}
data-confirm="Are you sure?"
>
Delete
</.link>
</:action>
<% end %>
</.table>
<%= cond do %>
<% @create_action && @update_action -> %>
<.modal :if={@live_action in [:new, :edit]} id="<%= @resource_singular %>-modal" show on_cancel={JS.patch(~p"<%= @route_prefix %>")}>
<.live_component
module={<%= inspect Module.concat(@web_module, @resource_alias) %>Live.FormComponent}
id={(@<%= @resource_singular %> && @<%= @resource_singular%>.<%= @pkey %>) || :new}
title={@page_title}
<%= cond do %>
<% @scope -> %>
scope={@scope}
<% @actor && @tenant -> %>
<%= @actor %>={@<%= @actor %>}
<%= @tenant %>={@<%= @tenant %>}
<% @actor -> %>
<%= @actor %>={@<%= @actor %>}
<% @tenant -> %>
<%= @tenant %>={@<%= @tenant %>}
<% true -> %>
<% end %>
action={@live_action}
<%= @resource_singular %>={@<%= @resource_singular %>}
patch={~p"<%= @route_prefix %>"}
/>
</.modal>
<% @create_action -> %>
<.modal :if={@live_action == :new} id="<%= @resource_singular %>-modal" show on_cancel={JS.patch(~p"<%= @route_prefix %>")}>
<.live_component
module={<%= inspect Module.concat(@web_module, @resource_alias) %>Live.FormComponent}
<%= cond do %>
<% @scope -> %>
scope={@scope}
<% @actor && @tenant -> %>
<%= @actor %>={@<%= @actor %>}
<%= @tenant %>={@<%= @tenant %>}
<% @actor -> %>
<%= @actor %>={@<%= @actor %>}
<% @tenant -> %>
<%= @tenant %>={@<%= @tenant %>}
<% true -> %>
<% end %>
id={:new}
title={@page_title}
action={@live_action}
<%= @resource_singular %>={@<%= @resource_singular %>}
patch={~p"<%= @route_prefix %>"}
/>
</.modal>
<% @update_action -> %>
<.modal :if={@live_action == :edit} id="<%= @resource_singular %>-modal" show on_cancel={JS.patch(~p"<%= @route_prefix %>")}>
<.live_component
module={<%= inspect Module.concat(@web_module, @resource_alias) %>Live.FormComponent}
id={@<%= @resource_singular %>.<%= @pkey %>}
<%= cond do %>
<% @scope -> %>
scope={@scope}
<% @actor && @tenant -> %>
<%= @actor %>={@<%= @actor %>}
<%= @tenant %>={@<%= @tenant %>}
<% @actor -> %>
<%= @actor %>={@<%= @actor %>}
<% @tenant -> %>
<%= @tenant %>={@<%= @tenant %>}
<% true -> %>
<% end %>
title={@page_title}
action={@live_action}
<%= @resource_singular %>={@<%= @resource_singular %>}
patch={~p"<%= @route_prefix %>"}
/>
</.modal>
<% true -> %>
<% nil %>
<% end %>
"""
end
@impl true
def mount(_params, _session, socket) do
<%= cond do %>
<% @scope -> %>
{:ok, stream(socket, :<%= @resource_plural %>, Ash.read!(<%= @resource %>, scope: socket.assigns.scope))}
<% @actor && @tenant -> %>
{:ok,
socket
|> assign_new(:<%= @actor %>, fn -> nil end)
|> assign_new(:<%= @tenant %>, fn -> nil end)
|> stream(:<%= @resource_plural %>, Ash.read!(<%= @resource %>, actor: socket.assigns[:<%= @actor %>], tenant: socket.assigns[:<%= @tenant %>]))}
<% @actor -> %>
{:ok,
socket
|> assign_new(:<%= @actor %>, fn -> nil end)
|> stream(:<%= @resource_plural %>, Ash.read!(<%= @resource %>, actor: socket.assigns[:<%= @actor %>]))}
<% @tenant -> %>
{:ok,
socket
|> assign_new(:<%= @tenant %>, fn -> nil end)
|> stream(:<%= @resource_plural %>, Ash.read!(<%= @resource %>, tenant: socket.assigns[:<%= @tenant %>]))}
<% true -> %>
{:ok, stream(socket, :<%= @resource_plural %>, Ash.read!(<%= @resource %>))}
<% end %>
end
@impl true
def handle_params(params, _url, socket) do
{:noreply, apply_action(socket, socket.assigns.live_action, params)}
end
<%= if @update_action do %>
defp apply_action(socket, :edit, %{"<%= @pkey %>" => <%= @pkey %>}) do
socket
|> assign(:page_title, "Edit <%= @resource_human_singular %>")
|> assign(:<%= @resource_singular %>, <%= @get_by_pkey %>)
end
<% end %>
<%= if @create_action do %>
defp apply_action(socket, :new, _params) do
socket
|> assign(:page_title, "New <%= @resource_human_singular %>")
|> assign(:<%= @resource_singular %>, nil)
end
<% end %>
defp apply_action(socket, :index, _params) do
socket
|> assign(:page_title, "Listing <%= @resource_human_plural %>")
<%= if @update_action || @create_action do %>
|> assign(:<%= @resource_singular %>, nil)
<% end %>
end
<%= if @create_action || @update_action do %>
@impl true
def handle_info({<%= inspect Module.concat(@web_module, @resource_alias) %>Live.FormComponent, {:saved, <%= @resource_singular %>}}, socket) do
{:noreply, stream_insert(socket, :<%= @resource_plural %>, <%= @resource_singular %>)}
end
<% end %>
<%= if @destroy do %>
@impl true
def handle_event("delete", %{"<%= @pkey %>" => <%= @pkey %>}, socket) do
<%= @destroy %>
{:noreply, stream_delete(socket, :<%= @resource_plural %>, <%= @resource_singular %>)}
end
<% end %>
end