forked from shibao/cannery
		
	style ammo type show page
This commit is contained in:
		@@ -4,9 +4,9 @@ defmodule Cannery.Ammo do
 | 
			
		||||
  """
 | 
			
		||||
 | 
			
		||||
  import Ecto.Query, warn: false
 | 
			
		||||
  alias Cannery.Repo
 | 
			
		||||
 | 
			
		||||
  alias Cannery.Ammo.AmmoType
 | 
			
		||||
  alias Cannery.{Accounts.User, Repo}
 | 
			
		||||
  alias Cannery.Ammo.{AmmoGroup, AmmoType}
 | 
			
		||||
  alias Ecto.Changeset
 | 
			
		||||
 | 
			
		||||
  @doc """
 | 
			
		||||
  Returns the list of ammo_types.
 | 
			
		||||
@@ -17,9 +17,8 @@ defmodule Cannery.Ammo do
 | 
			
		||||
      [%AmmoType{}, ...]
 | 
			
		||||
 | 
			
		||||
  """
 | 
			
		||||
  def list_ammo_types do
 | 
			
		||||
    Repo.all(AmmoType)
 | 
			
		||||
  end
 | 
			
		||||
  @spec list_ammo_types() :: [AmmoType.t()]
 | 
			
		||||
  def list_ammo_types, do: Repo.all(AmmoType)
 | 
			
		||||
 | 
			
		||||
  @doc """
 | 
			
		||||
  Gets a single ammo_type.
 | 
			
		||||
@@ -35,6 +34,7 @@ defmodule Cannery.Ammo do
 | 
			
		||||
      ** (Ecto.NoResultsError)
 | 
			
		||||
 | 
			
		||||
  """
 | 
			
		||||
  @spec get_ammo_type!(AmmoType.id()) :: AmmoType.t()
 | 
			
		||||
  def get_ammo_type!(id), do: Repo.get!(AmmoType, id)
 | 
			
		||||
 | 
			
		||||
  @doc """
 | 
			
		||||
@@ -49,11 +49,9 @@ defmodule Cannery.Ammo do
 | 
			
		||||
      {:error, %Ecto.Changeset{}}
 | 
			
		||||
 | 
			
		||||
  """
 | 
			
		||||
  def create_ammo_type(attrs \\ %{}) do
 | 
			
		||||
    %AmmoType{}
 | 
			
		||||
    |> AmmoType.changeset(attrs)
 | 
			
		||||
    |> Repo.insert()
 | 
			
		||||
  end
 | 
			
		||||
  @spec create_ammo_type(attrs :: map()) :: {:ok, AmmoType.t()} | {:error, Changeset.t()}
 | 
			
		||||
  def create_ammo_type(attrs \\ %{}),
 | 
			
		||||
    do: %AmmoType{} |> AmmoType.changeset(attrs) |> Repo.insert()
 | 
			
		||||
 | 
			
		||||
  @doc """
 | 
			
		||||
  Updates a ammo_type.
 | 
			
		||||
@@ -67,11 +65,10 @@ defmodule Cannery.Ammo do
 | 
			
		||||
      {:error, %Ecto.Changeset{}}
 | 
			
		||||
 | 
			
		||||
  """
 | 
			
		||||
  def update_ammo_type(%AmmoType{} = ammo_type, attrs) do
 | 
			
		||||
    ammo_type
 | 
			
		||||
    |> AmmoType.changeset(attrs)
 | 
			
		||||
    |> Repo.update()
 | 
			
		||||
  end
 | 
			
		||||
  @spec update_ammo_type(AmmoType.t(), attrs :: map()) ::
 | 
			
		||||
          {:ok, AmmoType.t()} | {:error, Changeset.t()}
 | 
			
		||||
  def update_ammo_type(%AmmoType{} = ammo_type, attrs),
 | 
			
		||||
    do: ammo_type |> AmmoType.changeset(attrs) |> Repo.update()
 | 
			
		||||
 | 
			
		||||
  @doc """
 | 
			
		||||
  Deletes a ammo_type.
 | 
			
		||||
@@ -85,9 +82,20 @@ defmodule Cannery.Ammo do
 | 
			
		||||
      {:error, %Ecto.Changeset{}}
 | 
			
		||||
 | 
			
		||||
  """
 | 
			
		||||
  def delete_ammo_type(%AmmoType{} = ammo_type) do
 | 
			
		||||
    Repo.delete(ammo_type)
 | 
			
		||||
  end
 | 
			
		||||
  @spec delete_ammo_type(AmmoType.t()) :: {:ok, AmmoType.t()} | {:error, Changeset.t()}
 | 
			
		||||
  def delete_ammo_type(%AmmoType{} = ammo_type), do: ammo_type |> Repo.delete()
 | 
			
		||||
 | 
			
		||||
  @doc """
 | 
			
		||||
  Deletes a ammo_type.
 | 
			
		||||
 | 
			
		||||
  ## Examples
 | 
			
		||||
 | 
			
		||||
      iex> delete_ammo_type(ammo_type)
 | 
			
		||||
      %AmmoType{}
 | 
			
		||||
 | 
			
		||||
  """
 | 
			
		||||
  @spec delete_ammo_type!(AmmoType.t()) :: AmmoType.t()
 | 
			
		||||
  def delete_ammo_type!(%AmmoType{} = ammo_type), do: ammo_type |> Repo.delete!()
 | 
			
		||||
 | 
			
		||||
  @doc """
 | 
			
		||||
  Returns an `%Ecto.Changeset{}` for tracking ammo_type changes.
 | 
			
		||||
@@ -98,23 +106,28 @@ defmodule Cannery.Ammo do
 | 
			
		||||
      %Ecto.Changeset{data: %AmmoType{}}
 | 
			
		||||
 | 
			
		||||
  """
 | 
			
		||||
  def change_ammo_type(%AmmoType{} = ammo_type, attrs \\ %{}) do
 | 
			
		||||
    AmmoType.changeset(ammo_type, attrs)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  alias Cannery.Ammo.AmmoGroup
 | 
			
		||||
  @spec change_ammo_type(AmmoType.t() | AmmoType.new_ammo_type()) :: Changeset.t()
 | 
			
		||||
  @spec change_ammo_type(AmmoType.t() | AmmoType.new_ammo_type(), attrs :: map()) :: Changeset.t()
 | 
			
		||||
  def change_ammo_type(%AmmoType{} = ammo_type, attrs \\ %{}),
 | 
			
		||||
    do: AmmoType.changeset(ammo_type, attrs)
 | 
			
		||||
 | 
			
		||||
  @doc """
 | 
			
		||||
  Returns the list of ammo_groups.
 | 
			
		||||
 | 
			
		||||
  ## Examples
 | 
			
		||||
 | 
			
		||||
      iex> list_ammo_groups()
 | 
			
		||||
      iex> list_ammo_groups(%User{id: 123})
 | 
			
		||||
      [%AmmoGroup{}, ...]
 | 
			
		||||
 | 
			
		||||
      iex> list_ammo_groups(123)
 | 
			
		||||
      [%AmmoGroup{}, ...]
 | 
			
		||||
 | 
			
		||||
  """
 | 
			
		||||
  def list_ammo_groups do
 | 
			
		||||
    Repo.all(AmmoGroup)
 | 
			
		||||
  @spec list_ammo_groups(User.t() | User.id()) :: [AmmoGroup.t()]
 | 
			
		||||
  def list_ammo_groups(%{id: user_id}), do: list_ammo_groups(user_id)
 | 
			
		||||
 | 
			
		||||
  def list_ammo_groups(user_id) do
 | 
			
		||||
    Repo.all(from am in AmmoGroup, where: am.user_id == ^user_id)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  @doc """
 | 
			
		||||
@@ -131,6 +144,7 @@ defmodule Cannery.Ammo do
 | 
			
		||||
      ** (Ecto.NoResultsError)
 | 
			
		||||
 | 
			
		||||
  """
 | 
			
		||||
  @spec get_ammo_group!(AmmoGroup.id()) :: AmmoGroup.t()
 | 
			
		||||
  def get_ammo_group!(id), do: Repo.get!(AmmoGroup, id)
 | 
			
		||||
 | 
			
		||||
  @doc """
 | 
			
		||||
@@ -145,11 +159,9 @@ defmodule Cannery.Ammo do
 | 
			
		||||
      {:error, %Ecto.Changeset{}}
 | 
			
		||||
 | 
			
		||||
  """
 | 
			
		||||
  def create_ammo_group(attrs \\ %{}) do
 | 
			
		||||
    %AmmoGroup{}
 | 
			
		||||
    |> AmmoGroup.changeset(attrs)
 | 
			
		||||
    |> Repo.insert()
 | 
			
		||||
  end
 | 
			
		||||
  @spec create_ammo_group(attrs :: map()) :: {:ok, AmmoGroup.t()} | {:error, Changeset.t()}
 | 
			
		||||
  def create_ammo_group(attrs \\ %{}),
 | 
			
		||||
    do: %AmmoGroup{} |> AmmoGroup.changeset(attrs) |> Repo.insert()
 | 
			
		||||
 | 
			
		||||
  @doc """
 | 
			
		||||
  Updates a ammo_group.
 | 
			
		||||
@@ -163,11 +175,10 @@ defmodule Cannery.Ammo do
 | 
			
		||||
      {:error, %Ecto.Changeset{}}
 | 
			
		||||
 | 
			
		||||
  """
 | 
			
		||||
  def update_ammo_group(%AmmoGroup{} = ammo_group, attrs) do
 | 
			
		||||
    ammo_group
 | 
			
		||||
    |> AmmoGroup.changeset(attrs)
 | 
			
		||||
    |> Repo.update()
 | 
			
		||||
  end
 | 
			
		||||
  @spec update_ammo_group(AmmoGroup.t(), attrs :: map()) ::
 | 
			
		||||
          {:ok, AmmoGroup.t()} | {:error, Changeset.t()}
 | 
			
		||||
  def update_ammo_group(%AmmoGroup{} = ammo_group, attrs),
 | 
			
		||||
    do: ammo_group |> AmmoGroup.changeset(attrs) |> Repo.update()
 | 
			
		||||
 | 
			
		||||
  @doc """
 | 
			
		||||
  Deletes a ammo_group.
 | 
			
		||||
@@ -181,9 +192,20 @@ defmodule Cannery.Ammo do
 | 
			
		||||
      {:error, %Ecto.Changeset{}}
 | 
			
		||||
 | 
			
		||||
  """
 | 
			
		||||
  def delete_ammo_group(%AmmoGroup{} = ammo_group) do
 | 
			
		||||
    Repo.delete(ammo_group)
 | 
			
		||||
  end
 | 
			
		||||
  @spec delete_ammo_group(AmmoGroup.t()) :: {:ok, AmmoGroup.t()} | {:error, Changeset.t()}
 | 
			
		||||
  def delete_ammo_group(%AmmoGroup{} = ammo_group), do: ammo_group |> Repo.delete()
 | 
			
		||||
 | 
			
		||||
  @doc """
 | 
			
		||||
  Deletes a ammo_group.
 | 
			
		||||
 | 
			
		||||
  ## Examples
 | 
			
		||||
 | 
			
		||||
      iex> delete_ammo_group!(ammo_group)
 | 
			
		||||
      %AmmoGroup{}
 | 
			
		||||
 | 
			
		||||
  """
 | 
			
		||||
  @spec delete_ammo_group!(AmmoGroup.t()) :: AmmoGroup.t()
 | 
			
		||||
  def delete_ammo_group!(%AmmoGroup{} = ammo_group), do: ammo_group |> Repo.delete!()
 | 
			
		||||
 | 
			
		||||
  @doc """
 | 
			
		||||
  Returns an `%Ecto.Changeset{}` for tracking ammo_group changes.
 | 
			
		||||
@@ -194,7 +216,8 @@ defmodule Cannery.Ammo do
 | 
			
		||||
      %Ecto.Changeset{data: %AmmoGroup{}}
 | 
			
		||||
 | 
			
		||||
  """
 | 
			
		||||
  def change_ammo_group(%AmmoGroup{} = ammo_group, attrs \\ %{}) do
 | 
			
		||||
    AmmoGroup.changeset(ammo_group, attrs)
 | 
			
		||||
  end
 | 
			
		||||
  @spec change_ammo_group(AmmoGroup.t()) :: Changeset.t(AmmoGroup.t())
 | 
			
		||||
  @spec change_ammo_group(AmmoGroup.t(), attrs :: map()) :: Changeset.t(AmmoGroup.t())
 | 
			
		||||
  def change_ammo_group(%AmmoGroup{} = ammo_group, attrs \\ %{}),
 | 
			
		||||
    do: AmmoGroup.changeset(ammo_group, attrs)
 | 
			
		||||
end
 | 
			
		||||
 
 | 
			
		||||
@@ -20,6 +20,12 @@ defmodule CanneryWeb.AmmoTypeLive.Show do
 | 
			
		||||
     |> assign(:ammo_type, Ammo.get_ammo_type!(id))}
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  @impl true
 | 
			
		||||
  def handle_event("delete", _, socket) do
 | 
			
		||||
    socket.assigns.ammo_type |> Ammo.delete_ammo_type!()
 | 
			
		||||
    {:noreply, socket |> push_redirect(to: Routes.ammo_type_index_path(socket, :index))}
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  defp page_title(:show), do: "Show Ammo type"
 | 
			
		||||
  defp page_title(:edit), do: "Edit Ammo type"
 | 
			
		||||
end
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										54
									
								
								lib/cannery_web/live/ammo_type_live/show.html.heex
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								lib/cannery_web/live/ammo_type_live/show.html.heex
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,54 @@
 | 
			
		||||
<div class="mx-auto space-y-4 max-w-3xl flex flex-col justify-center items-center">
 | 
			
		||||
  <h1 class="title text-2xl title-primary-500">
 | 
			
		||||
    <%= @ammo_type.name %>
 | 
			
		||||
  </h1>
 | 
			
		||||
 | 
			
		||||
  <div class="flex space-x-4 justify-center items-center text-primary-500">
 | 
			
		||||
    <%= live_redirect "Back", to: Routes.ammo_type_index_path(@socket, :index), class: "link" %>
 | 
			
		||||
    <%= live_patch "Edit", to: Routes.ammo_type_show_path(@socket, :edit, @ammo_type), class: "button" %>
 | 
			
		||||
    <%= link("Delete",
 | 
			
		||||
      to: "#",
 | 
			
		||||
      class: "link",
 | 
			
		||||
      phx_click: "delete",
 | 
			
		||||
      data: [confirm: "Are you sure you want to delete #{@ammo_type.name}?"]
 | 
			
		||||
    ) %>
 | 
			
		||||
  </div>
 | 
			
		||||
 | 
			
		||||
  <hr class="w-full">
 | 
			
		||||
 | 
			
		||||
  <ul class="text-center">
 | 
			
		||||
    <li>
 | 
			
		||||
      <strong>Desc:</strong>
 | 
			
		||||
      <%= @ammo_type.desc %>
 | 
			
		||||
    </li>
 | 
			
		||||
 | 
			
		||||
    <li>
 | 
			
		||||
      <strong>Case material:</strong>
 | 
			
		||||
      <%= @ammo_type.case_material %>
 | 
			
		||||
    </li>
 | 
			
		||||
 | 
			
		||||
    <li>
 | 
			
		||||
      <strong>Bullet type:</strong>
 | 
			
		||||
      <%= @ammo_type.bullet_type %>
 | 
			
		||||
    </li>
 | 
			
		||||
 | 
			
		||||
    <li>
 | 
			
		||||
      <strong>Grain:</strong>
 | 
			
		||||
      <%= @ammo_type.grain %>
 | 
			
		||||
    </li>
 | 
			
		||||
 | 
			
		||||
    <li>
 | 
			
		||||
      <strong>Manufacturer:</strong>
 | 
			
		||||
      <%= @ammo_type.manufacturer %>
 | 
			
		||||
    </li>
 | 
			
		||||
  </ul>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<%= if @live_action in [:edit] do %>
 | 
			
		||||
  <%= live_modal CanneryWeb.AmmoTypeLive.FormComponent,
 | 
			
		||||
    id: @ammo_type.id,
 | 
			
		||||
    title: @page_title,
 | 
			
		||||
    action: @live_action,
 | 
			
		||||
    ammo_type: @ammo_type,
 | 
			
		||||
    return_to: Routes.ammo_type_show_path(@socket, :show, @ammo_type) %>
 | 
			
		||||
<% end %>
 | 
			
		||||
@@ -1,47 +0,0 @@
 | 
			
		||||
<h1>Show Ammo type</h1>
 | 
			
		||||
 | 
			
		||||
<%= if @live_action in [:edit] do %>
 | 
			
		||||
  <%= live_modal CanneryWeb.AmmoTypeLive.FormComponent,
 | 
			
		||||
    id: @ammo_type.id,
 | 
			
		||||
    title: @page_title,
 | 
			
		||||
    action: @live_action,
 | 
			
		||||
    ammo_type: @ammo_type,
 | 
			
		||||
    return_to: Routes.ammo_type_show_path(@socket, :show, @ammo_type) %>
 | 
			
		||||
<% end %>
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
 | 
			
		||||
  <li>
 | 
			
		||||
    <strong>Name:</strong>
 | 
			
		||||
    <%= @ammo_type.name %>
 | 
			
		||||
  </li>
 | 
			
		||||
 | 
			
		||||
  <li>
 | 
			
		||||
    <strong>Desc:</strong>
 | 
			
		||||
    <%= @ammo_type.desc %>
 | 
			
		||||
  </li>
 | 
			
		||||
 | 
			
		||||
  <li>
 | 
			
		||||
    <strong>Case material:</strong>
 | 
			
		||||
    <%= @ammo_type.case_material %>
 | 
			
		||||
  </li>
 | 
			
		||||
 | 
			
		||||
  <li>
 | 
			
		||||
    <strong>Bullet type:</strong>
 | 
			
		||||
    <%= @ammo_type.bullet_type %>
 | 
			
		||||
  </li>
 | 
			
		||||
 | 
			
		||||
  <li>
 | 
			
		||||
    <strong>Weight:</strong>
 | 
			
		||||
    <%= @ammo_type.weight %>
 | 
			
		||||
  </li>
 | 
			
		||||
 | 
			
		||||
  <li>
 | 
			
		||||
    <strong>Manufacturer:</strong>
 | 
			
		||||
    <%= @ammo_type.manufacturer %>
 | 
			
		||||
  </li>
 | 
			
		||||
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<span><%= live_patch "Edit", to: Routes.ammo_type_show_path(@socket, :edit, @ammo_type), class: "button" %></span>
 | 
			
		||||
<span><%= live_redirect "Back", to: Routes.ammo_type_index_path(@socket, :index) %></span>
 | 
			
		||||
		Reference in New Issue
	
	Block a user