forked from shibao/cannery
		
	add cloning to ammo group index
This commit is contained in:
		@@ -73,14 +73,14 @@ defmodule CanneryWeb.AmmoGroupLive.FormComponent do
 | 
			
		||||
         ammo_group_params
 | 
			
		||||
       ) do
 | 
			
		||||
    changeset_action =
 | 
			
		||||
      case action do
 | 
			
		||||
        :new -> :insert
 | 
			
		||||
        :edit -> :update
 | 
			
		||||
      cond do
 | 
			
		||||
        action in [:new, :clone] -> :insert
 | 
			
		||||
        action == :edit -> :update
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
    changeset =
 | 
			
		||||
      case action do
 | 
			
		||||
        :new ->
 | 
			
		||||
      cond do
 | 
			
		||||
        action in [:new, :clone] ->
 | 
			
		||||
          ammo_type =
 | 
			
		||||
            if ammo_group_params |> Map.has_key?("ammo_type_id"),
 | 
			
		||||
              do: ammo_group_params |> Map.get("ammo_type_id") |> Ammo.get_ammo_type!(user),
 | 
			
		||||
@@ -93,7 +93,7 @@ defmodule CanneryWeb.AmmoGroupLive.FormComponent do
 | 
			
		||||
 | 
			
		||||
          ammo_group |> AmmoGroup.create_changeset(ammo_type, container, user, ammo_group_params)
 | 
			
		||||
 | 
			
		||||
        :edit ->
 | 
			
		||||
        action == :edit ->
 | 
			
		||||
          ammo_group |> AmmoGroup.update_changeset(ammo_group_params)
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
@@ -127,9 +127,10 @@ defmodule CanneryWeb.AmmoGroupLive.FormComponent do
 | 
			
		||||
 | 
			
		||||
  defp save_ammo_group(
 | 
			
		||||
         %{assigns: %{changeset: changeset}} = socket,
 | 
			
		||||
         :new,
 | 
			
		||||
         action,
 | 
			
		||||
         %{"multiplier" => multiplier_str} = ammo_group_params
 | 
			
		||||
       ) do
 | 
			
		||||
       )
 | 
			
		||||
       when action in [:new, :clone] do
 | 
			
		||||
    socket =
 | 
			
		||||
      case multiplier_str |> Integer.parse() do
 | 
			
		||||
        {multiplier, _remainder}
 | 
			
		||||
 
 | 
			
		||||
@@ -51,8 +51,8 @@
 | 
			
		||||
    ) %>
 | 
			
		||||
    <%= error_tag(f, :container_id, "col-span-3 text-center") %>
 | 
			
		||||
 | 
			
		||||
    <%= case @action do %>
 | 
			
		||||
      <% :new -> %>
 | 
			
		||||
    <%= cond do %>
 | 
			
		||||
      <% @action in [:new, :clone] -> %>
 | 
			
		||||
        <hr class="hr col-span-3" />
 | 
			
		||||
 | 
			
		||||
        <%= label(f, :multiplier, gettext("Copies"), class: "title text-lg text-primary-600") %>
 | 
			
		||||
@@ -69,7 +69,7 @@
 | 
			
		||||
        ) %>
 | 
			
		||||
 | 
			
		||||
        <%= error_tag(f, :multiplier, "col-span-3 text-center") %>
 | 
			
		||||
      <% :edit -> %>
 | 
			
		||||
      <% @action == :edit -> %>
 | 
			
		||||
        <%= submit(dgettext("actions", "Save"),
 | 
			
		||||
          phx_disable_with: dgettext("prompts", "Saving..."),
 | 
			
		||||
          class: "mx-auto col-span-3 btn btn-primary"
 | 
			
		||||
 
 | 
			
		||||
@@ -39,6 +39,12 @@ defmodule CanneryWeb.AmmoGroupLive.Index do
 | 
			
		||||
    |> assign(:ammo_group, Ammo.get_ammo_group!(id, current_user))
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  defp apply_action(%{assigns: %{current_user: current_user}} = socket, :clone, %{"id" => id}) do
 | 
			
		||||
    socket
 | 
			
		||||
    |> assign(:page_title, dgettext("actions", "Add Ammo"))
 | 
			
		||||
    |> assign(:ammo_group, %{Ammo.get_ammo_group!(id, current_user) | id: nil})
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  defp apply_action(socket, :new, _params) do
 | 
			
		||||
    socket
 | 
			
		||||
    |> assign(:page_title, dgettext("actions", "Add Ammo"))
 | 
			
		||||
@@ -217,6 +223,14 @@ defmodule CanneryWeb.AmmoGroupLive.Index do
 | 
			
		||||
        <i class="fa-fw fa-lg fas fa-edit"></i>
 | 
			
		||||
      </.link>
 | 
			
		||||
 | 
			
		||||
      <.link
 | 
			
		||||
        patch={Routes.ammo_group_index_path(Endpoint, :clone, @ammo_group)}
 | 
			
		||||
        class="text-primary-600 link"
 | 
			
		||||
        data-qa={"clone-#{@ammo_group.id}"}
 | 
			
		||||
      >
 | 
			
		||||
        <i class="fa-fw fa-lg fas fa-copy"></i>
 | 
			
		||||
      </.link>
 | 
			
		||||
 | 
			
		||||
      <.link
 | 
			
		||||
        href="#"
 | 
			
		||||
        class="text-primary-600 link"
 | 
			
		||||
 
 | 
			
		||||
@@ -61,7 +61,7 @@
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<%= cond do %>
 | 
			
		||||
  <% @live_action in [:new, :edit] -> %>
 | 
			
		||||
  <% @live_action in [:new, :edit, :clone] -> %>
 | 
			
		||||
    <.modal return_to={Routes.ammo_group_index_path(Endpoint, :index)}>
 | 
			
		||||
      <.live_component
 | 
			
		||||
        module={CanneryWeb.AmmoGroupLive.FormComponent}
 | 
			
		||||
 
 | 
			
		||||
@@ -85,6 +85,7 @@ defmodule CanneryWeb.Router do
 | 
			
		||||
    live "/ammo", AmmoGroupLive.Index, :index
 | 
			
		||||
    live "/ammo/new", AmmoGroupLive.Index, :new
 | 
			
		||||
    live "/ammo/:id/edit", AmmoGroupLive.Index, :edit
 | 
			
		||||
    live "/ammo/:id/clone", AmmoGroupLive.Index, :clone
 | 
			
		||||
    live "/ammo/:id/add_shot_group", AmmoGroupLive.Index, :add_shot_group
 | 
			
		||||
    live "/ammo/:id/move", AmmoGroupLive.Index, :move
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user