Compare commits
	
		
			9 Commits
		
	
	
		
			10c4f40864
			...
			6083fbca4f
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 6083fbca4f | |||
| cc31958bbe | |||
| 9e386f1631 | |||
| 36a0a1c6c8 | |||
| 2e0bb861f1 | |||
| dbc575d305 | |||
| 5390dcc4c2 | |||
| dc355fcd8e | |||
| 44fbd69e0f | 
| @@ -1,5 +1,14 @@ | ||||
| # v0.5.5 | ||||
| - Update translations | ||||
| - Display used-up date on used-up ammo | ||||
| - Make ammo index page a bit more compact | ||||
| - Make ammo index page filter used-up ammo | ||||
| - Make ammo catalog page include ammo count | ||||
| - Make ammo type show page a bit more compact | ||||
| - Make ammo type show page include container names for each ammo | ||||
| - Make ammo type show page filter used-up ammo | ||||
| - Make container show page a bit more compact | ||||
| - Make container show page filter used-up ammo | ||||
| - Forgot to add the logo as the favicon whoops | ||||
|  | ||||
| # v0.5.4 | ||||
|   | ||||
| @@ -25,7 +25,7 @@ | ||||
|   } | ||||
|  | ||||
|   .btn { | ||||
|     @apply inline-block break-words min-w-4; | ||||
|     @apply inline-block break-words; | ||||
|     @apply focus:outline-none px-4 py-2 rounded-lg; | ||||
|     @apply shadow-sm focus:shadow-lg; | ||||
|     @apply transition-all duration-300 ease-in-out; | ||||
| @@ -52,7 +52,7 @@ | ||||
|   } | ||||
|  | ||||
|   .link { | ||||
|     @apply inline-block break-all min-w-4; | ||||
|     @apply inline-block break-words; | ||||
|     @apply hover:underline; | ||||
|     @apply transition-colors duration-500 ease-in-out; | ||||
|   } | ||||
|   | ||||
| @@ -5,7 +5,7 @@ defmodule Cannery.Ammo do | ||||
|  | ||||
|   import CanneryWeb.Gettext | ||||
|   import Ecto.Query, warn: false | ||||
|   alias Cannery.{Accounts.User, Containers, Repo} | ||||
|   alias Cannery.{Accounts.User, Containers, Containers.Container, Repo} | ||||
|   alias Cannery.ActivityLog.ShotGroup | ||||
|   alias Cannery.Ammo.{AmmoGroup, AmmoType} | ||||
|   alias Ecto.Changeset | ||||
| @@ -220,7 +220,15 @@ defmodule Cannery.Ammo do | ||||
|  | ||||
|   """ | ||||
|   @spec list_ammo_groups_for_type(AmmoType.t(), User.t()) :: [AmmoGroup.t()] | ||||
|   def list_ammo_groups_for_type(%AmmoType{id: ammo_type_id, user_id: user_id}, %User{id: user_id}) do | ||||
|   @spec list_ammo_groups_for_type(AmmoType.t(), User.t(), include_empty :: boolean()) :: | ||||
|           [AmmoGroup.t()] | ||||
|   def list_ammo_groups_for_type(ammo_type, user, include_empty \\ false) | ||||
|  | ||||
|   def list_ammo_groups_for_type( | ||||
|         %AmmoType{id: ammo_type_id, user_id: user_id}, | ||||
|         %User{id: user_id}, | ||||
|         true = _include_empty | ||||
|       ) do | ||||
|     Repo.all( | ||||
|       from ag in AmmoGroup, | ||||
|         left_join: sg in assoc(ag, :shot_groups), | ||||
| @@ -231,6 +239,110 @@ defmodule Cannery.Ammo do | ||||
|     ) | ||||
|   end | ||||
|  | ||||
|   def list_ammo_groups_for_type( | ||||
|         %AmmoType{id: ammo_type_id, user_id: user_id}, | ||||
|         %User{id: user_id}, | ||||
|         false = _include_empty | ||||
|       ) do | ||||
|     Repo.all( | ||||
|       from ag in AmmoGroup, | ||||
|         left_join: sg in assoc(ag, :shot_groups), | ||||
|         where: ag.ammo_type_id == ^ammo_type_id, | ||||
|         where: ag.user_id == ^user_id, | ||||
|         where: not (ag.count == 0), | ||||
|         preload: [shot_groups: sg], | ||||
|         order_by: ag.id | ||||
|     ) | ||||
|   end | ||||
|  | ||||
|   @doc """ | ||||
|   Returns the list of ammo_groups for a user and container. | ||||
|  | ||||
|   ## Examples | ||||
|  | ||||
|       iex> list_ammo_groups_for_container(%AmmoType{id: 123}, %User{id: 123}) | ||||
|       [%AmmoGroup{}, ...] | ||||
|  | ||||
|   """ | ||||
|   @spec list_ammo_groups_for_container(Container.t(), User.t()) :: [AmmoGroup.t()] | ||||
|   @spec list_ammo_groups_for_container(Container.t(), User.t(), include_empty :: boolean()) :: | ||||
|           [AmmoGroup.t()] | ||||
|   def list_ammo_groups_for_container(container, user, include_empty \\ false) | ||||
|  | ||||
|   def list_ammo_groups_for_container( | ||||
|         %Container{id: container_id, user_id: user_id}, | ||||
|         %User{id: user_id}, | ||||
|         true = _include_empty | ||||
|       ) do | ||||
|     Repo.all( | ||||
|       from ag in AmmoGroup, | ||||
|         left_join: sg in assoc(ag, :shot_groups), | ||||
|         where: ag.container_id == ^container_id, | ||||
|         where: ag.user_id == ^user_id, | ||||
|         preload: [shot_groups: sg], | ||||
|         order_by: ag.id | ||||
|     ) | ||||
|   end | ||||
|  | ||||
|   def list_ammo_groups_for_container( | ||||
|         %Container{id: container_id, user_id: user_id}, | ||||
|         %User{id: user_id}, | ||||
|         false = _include_empty | ||||
|       ) do | ||||
|     Repo.all( | ||||
|       from ag in AmmoGroup, | ||||
|         left_join: sg in assoc(ag, :shot_groups), | ||||
|         where: ag.container_id == ^container_id, | ||||
|         where: ag.user_id == ^user_id, | ||||
|         where: not (ag.count == 0), | ||||
|         preload: [shot_groups: sg], | ||||
|         order_by: ag.id | ||||
|     ) | ||||
|   end | ||||
|  | ||||
|   @doc """ | ||||
|   Returns the count of ammo_groups for an ammo type. | ||||
|  | ||||
|   ## Examples | ||||
|  | ||||
|       iex> get_ammo_groups_count_for_type(%User{id: 123}) | ||||
|       3 | ||||
|  | ||||
|   """ | ||||
|   @spec get_ammo_groups_count_for_type(AmmoType.t(), User.t()) :: [AmmoGroup.t()] | ||||
|   @spec get_ammo_groups_count_for_type(AmmoType.t(), User.t(), include_empty :: boolean()) :: | ||||
|           [AmmoGroup.t()] | ||||
|   def get_ammo_groups_count_for_type(ammo_type, user, include_empty \\ false) | ||||
|  | ||||
|   def get_ammo_groups_count_for_type( | ||||
|         %AmmoType{id: ammo_type_id, user_id: user_id}, | ||||
|         %User{id: user_id}, | ||||
|         true = _include_empty | ||||
|       ) do | ||||
|     Repo.one!( | ||||
|       from ag in AmmoGroup, | ||||
|         where: ag.user_id == ^user_id, | ||||
|         where: ag.ammo_type_id == ^ammo_type_id, | ||||
|         distinct: true, | ||||
|         select: count(ag.id) | ||||
|     ) || 0 | ||||
|   end | ||||
|  | ||||
|   def get_ammo_groups_count_for_type( | ||||
|         %AmmoType{id: ammo_type_id, user_id: user_id}, | ||||
|         %User{id: user_id}, | ||||
|         false = _include_empty | ||||
|       ) do | ||||
|     Repo.one!( | ||||
|       from ag in AmmoGroup, | ||||
|         where: ag.user_id == ^user_id, | ||||
|         where: ag.ammo_type_id == ^ammo_type_id, | ||||
|         where: not (ag.count == 0), | ||||
|         distinct: true, | ||||
|         select: count(ag.id) | ||||
|     ) || 0 | ||||
|   end | ||||
|  | ||||
|   @doc """ | ||||
|   Returns the list of ammo_groups for a user. | ||||
|  | ||||
| @@ -242,22 +354,27 @@ defmodule Cannery.Ammo do | ||||
|   """ | ||||
|   @spec list_ammo_groups(User.t()) :: [AmmoGroup.t()] | ||||
|   @spec list_ammo_groups(User.t(), include_empty :: boolean()) :: [AmmoGroup.t()] | ||||
|   def list_ammo_groups(%User{id: user_id}, include_empty \\ false) do | ||||
|     if include_empty do | ||||
|   def list_ammo_groups(user, include_empty \\ false) | ||||
|  | ||||
|   def list_ammo_groups(%User{id: user_id}, true = _include_empty) do | ||||
|     Repo.all( | ||||
|       from ag in AmmoGroup, | ||||
|         left_join: sg in assoc(ag, :shot_groups), | ||||
|         where: ag.user_id == ^user_id, | ||||
|         preload: [shot_groups: sg], | ||||
|         order_by: ag.id | ||||
|     else | ||||
|     ) | ||||
|   end | ||||
|  | ||||
|   def list_ammo_groups(%User{id: user_id}, false = _include_empty) do | ||||
|     Repo.all( | ||||
|       from ag in AmmoGroup, | ||||
|         left_join: sg in assoc(ag, :shot_groups), | ||||
|         where: ag.user_id == ^user_id, | ||||
|         where: not (ag.count == 0), | ||||
|         preload: [shot_groups: sg], | ||||
|         order_by: ag.id | ||||
|     end | ||||
|     |> Repo.all() | ||||
|     ) | ||||
|   end | ||||
|  | ||||
|   @doc """ | ||||
| @@ -318,6 +435,17 @@ defmodule Cannery.Ammo do | ||||
|     |> Enum.sum() | ||||
|   end | ||||
|  | ||||
|   @doc """ | ||||
|   Returns the last entered shot group for an ammo group | ||||
|   """ | ||||
|   @spec get_last_used_shot_group(AmmoGroup.t()) :: ShotGroup.t() | nil | ||||
|   def get_last_used_shot_group(%AmmoGroup{} = ammo_group) do | ||||
|     ammo_group | ||||
|     |> Repo.preload(:shot_groups) | ||||
|     |> Map.fetch!(:shot_groups) | ||||
|     |> Enum.max_by(fn %{date: date} -> date end, Date, fn -> nil end) | ||||
|   end | ||||
|  | ||||
|   @doc """ | ||||
|   Calculates the percentage remaining of an ammo group out of 100 | ||||
|   """ | ||||
|   | ||||
| @@ -212,6 +212,7 @@ defmodule Cannery.Containers do | ||||
|     container | ||||
|     |> Repo.preload(:ammo_groups) | ||||
|     |> Map.fetch!(:ammo_groups) | ||||
|     |> Enum.reject(fn %{count: count} -> count == 0 end) | ||||
|     |> Enum.count() | ||||
|   end | ||||
|  | ||||
|   | ||||
| @@ -4,11 +4,16 @@ defmodule CanneryWeb.Components.AmmoGroupCard do | ||||
|   """ | ||||
|  | ||||
|   use CanneryWeb, :component | ||||
|   alias Cannery.Repo | ||||
|   alias Cannery.{Ammo, Repo} | ||||
|   alias CanneryWeb.Endpoint | ||||
|  | ||||
|   def ammo_group_card(assigns) do | ||||
|     assigns = assigns |> assign(:ammo_group, assigns.ammo_group |> Repo.preload(:ammo_type)) | ||||
|   def ammo_group_card(%{ammo_group: ammo_group} = assigns) do | ||||
|     assigns = | ||||
|       %{show_container: show_container} = assigns |> assign_new(:show_container, fn -> false end) | ||||
|  | ||||
|     preloads = if show_container, do: [:ammo_type, :container], else: [:ammo_type] | ||||
|     ammo_group = ammo_group |> Repo.preload(preloads) | ||||
|     assigns = assigns |> assign(:ammo_group, ammo_group) | ||||
|  | ||||
|     ~H""" | ||||
|     <div | ||||
| @@ -17,7 +22,7 @@ defmodule CanneryWeb.Components.AmmoGroupCard do | ||||
|             border border-gray-400 rounded-lg shadow-lg hover:shadow-md | ||||
|             transition-all duration-300 ease-in-out" | ||||
|     > | ||||
|       <%= live_redirect to: Routes.ammo_group_show_path(Endpoint, :show, @ammo_group), | ||||
|       <%= live_patch to: Routes.ammo_group_show_path(Endpoint, :show, @ammo_group), | ||||
|                     class: "mb-2 link" do %> | ||||
|         <h1 class="title text-xl title-primary-500"> | ||||
|           <%= @ammo_group.ammo_type.name %> | ||||
| @@ -27,7 +32,7 @@ defmodule CanneryWeb.Components.AmmoGroupCard do | ||||
|       <div class="flex flex-col justify-center items-center"> | ||||
|         <span class="rounded-lg title text-lg"> | ||||
|           <%= gettext("Count:") %> | ||||
|           <%= @ammo_group.count %> | ||||
|           <%= if @ammo_group.count == 0, do: "Empty", else: @ammo_group.count %> | ||||
|         </span> | ||||
|  | ||||
|         <%= if @ammo_group.notes do %> | ||||
| @@ -42,6 +47,13 @@ defmodule CanneryWeb.Components.AmmoGroupCard do | ||||
|           <%= @ammo_group.inserted_at |> display_datetime() %> | ||||
|         </span> | ||||
|  | ||||
|         <%= if @ammo_group.count == 0 do %> | ||||
|           <span class="rounded-lg title text-lg"> | ||||
|             <%= gettext("Used up on:") %> | ||||
|             <%= @ammo_group |> Ammo.get_last_used_shot_group() |> Map.get(:date) |> display_date() %> | ||||
|           </span> | ||||
|         <% end %> | ||||
|  | ||||
|         <%= if @ammo_group.price_paid do %> | ||||
|           <span class="rounded-lg title text-lg"> | ||||
|             <%= gettext("Price paid:") %> | ||||
| @@ -50,6 +62,17 @@ defmodule CanneryWeb.Components.AmmoGroupCard do | ||||
|             ) %> | ||||
|           </span> | ||||
|         <% end %> | ||||
|  | ||||
|         <%= if @show_container and @ammo_group.container do %> | ||||
|           <span class="rounded-lg title text-lg"> | ||||
|             <%= gettext("Container:") %> | ||||
|  | ||||
|             <%= live_patch to: Routes.container_show_path(Endpoint, :show, @ammo_group.container), | ||||
|               class: "link" do %> | ||||
|               <%= @ammo_group.container.name %> | ||||
|             <% end %> | ||||
|           </span> | ||||
|         <% end %> | ||||
|       </div> | ||||
|  | ||||
|       <%= if assigns |> Map.has_key?(:inner_block) do %> | ||||
|   | ||||
| @@ -6,7 +6,7 @@ defmodule CanneryWeb.Components.TableComponent do | ||||
|     - `:columns`: An array of maps containing the following keys | ||||
|       - `:label`: A gettext'd or otherwise user-facing string label for the | ||||
|         column. Can be nil | ||||
|       - `:key`: A string key used for sorting | ||||
|       - `:key`: An atom key used for sorting | ||||
|       - `:class`: Extra classes to be applied to the column element, if desired. | ||||
|         Optional | ||||
|       - `:sortable`: If false, will prevent the user from sorting with it. | ||||
| @@ -28,13 +28,13 @@ defmodule CanneryWeb.Components.TableComponent do | ||||
|             required(:columns) => | ||||
|               list(%{ | ||||
|                 required(:label) => String.t() | nil, | ||||
|                 required(:key) => String.t() | nil, | ||||
|                 required(:key) => atom() | nil, | ||||
|                 optional(:class) => String.t(), | ||||
|                 optional(:sortable) => false | ||||
|               }), | ||||
|             required(:rows) => | ||||
|               list(%{ | ||||
|                 (key :: String.t()) => any() | {custom_sort_value :: String.t(), value :: any()} | ||||
|                 (key :: atom()) => any() | {custom_sort_value :: String.t(), value :: any()} | ||||
|               }), | ||||
|             optional(any()) => any() | ||||
|           }, | ||||
| @@ -56,20 +56,19 @@ defmodule CanneryWeb.Components.TableComponent do | ||||
|   def handle_event( | ||||
|         "sort_by", | ||||
|         %{"sort-key" => key}, | ||||
|         %{assigns: %{rows: rows, last_sort_key: key, sort_mode: sort_mode}} = socket | ||||
|         %{assigns: %{rows: rows, last_sort_key: last_sort_key, sort_mode: sort_mode}} = socket | ||||
|       ) do | ||||
|     sort_mode = if sort_mode == :asc, do: :desc, else: :asc | ||||
|     rows = rows |> sort_by_custom_sort_value_or_value(key, sort_mode) | ||||
|     {:noreply, socket |> assign(sort_mode: sort_mode, rows: rows)} | ||||
|   end | ||||
|     key = key |> String.to_existing_atom() | ||||
|  | ||||
|   def handle_event( | ||||
|         "sort_by", | ||||
|         %{"sort-key" => key}, | ||||
|         %{assigns: %{rows: rows}} = socket | ||||
|       ) do | ||||
|     rows = rows |> sort_by_custom_sort_value_or_value(key, :asc) | ||||
|     {:noreply, socket |> assign(last_sort_key: key, sort_mode: :asc, rows: rows)} | ||||
|     sort_mode = | ||||
|       case {key, sort_mode} do | ||||
|         {^last_sort_key, :asc} -> :desc | ||||
|         {^last_sort_key, :desc} -> :asc | ||||
|         {_new_sort_key, _last_sort_mode} -> :asc | ||||
|       end | ||||
|  | ||||
|     rows = rows |> sort_by_custom_sort_value_or_value(key, sort_mode) | ||||
|     {:noreply, socket |> assign(last_sort_key: key, sort_mode: sort_mode, rows: rows)} | ||||
|   end | ||||
|  | ||||
|   defp sort_by_custom_sort_value_or_value(rows, key, sort_mode) do | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| <div class="w-full overflow-x-auto border border-gray-600 rounded-lg shadow-lg bg-black"> | ||||
| <div id={@id} class="w-full overflow-x-auto border border-gray-600 rounded-lg shadow-lg bg-black"> | ||||
|   <table class="min-w-full table-auto text-center bg-white"> | ||||
|     <thead class="border-b border-primary-600"> | ||||
|       <tr> | ||||
|   | ||||
| @@ -9,7 +9,7 @@ defmodule CanneryWeb.AmmoGroupLive.Index do | ||||
|  | ||||
|   @impl true | ||||
|   def mount(_params, _session, socket) do | ||||
|     {:ok, socket |> display_ammo_groups()} | ||||
|     {:ok, socket |> assign(show_used: false) |> display_ammo_groups()} | ||||
|   end | ||||
|  | ||||
|   @impl true | ||||
| @@ -72,22 +72,39 @@ defmodule CanneryWeb.AmmoGroupLive.Index do | ||||
|     {:noreply, socket |> display_ammo_groups()} | ||||
|   end | ||||
|  | ||||
|   defp display_ammo_groups(%{assigns: %{current_user: current_user}} = socket) do | ||||
|     ammo_groups = Ammo.list_ammo_groups(current_user) |> Repo.preload([:ammo_type, :container]) | ||||
|   @impl true | ||||
|   def handle_event("toggle_show_used", _params, %{assigns: %{show_used: show_used}} = socket) do | ||||
|     {:noreply, socket |> assign(:show_used, !show_used) |> display_ammo_groups()} | ||||
|   end | ||||
|  | ||||
|   defp display_ammo_groups( | ||||
|          %{assigns: %{current_user: current_user, show_used: show_used}} = socket | ||||
|        ) do | ||||
|     ammo_groups = | ||||
|       Ammo.list_ammo_groups(current_user, show_used) |> Repo.preload([:ammo_type, :container]) | ||||
|  | ||||
|     ammo_types_count = Ammo.get_ammo_types_count!(current_user) | ||||
|     containers_count = Containers.get_containers_count!(current_user) | ||||
|  | ||||
|     columns = [ | ||||
|       %{label: gettext("Ammo type"), key: "ammo_type"}, | ||||
|       %{label: gettext("Count"), key: "count"}, | ||||
|       %{label: gettext("Price paid"), key: "price_paid"}, | ||||
|       %{label: gettext("% left"), key: "remaining"}, | ||||
|       %{label: gettext("Range"), key: "range"}, | ||||
|       %{label: gettext("Container"), key: "container"}, | ||||
|       %{label: gettext("Added on"), key: "added_on"}, | ||||
|       %{label: nil, key: "actions", sortable: false} | ||||
|       %{label: gettext("Ammo type"), key: :ammo_type}, | ||||
|       %{label: gettext("Count"), key: :count}, | ||||
|       %{label: gettext("Price paid"), key: :price_paid}, | ||||
|       %{label: gettext("% left"), key: :remaining}, | ||||
|       %{label: gettext("Range"), key: :range}, | ||||
|       %{label: gettext("Container"), key: :container}, | ||||
|       %{label: gettext("Added on"), key: :added_on} | ||||
|     ] | ||||
|  | ||||
|     columns = | ||||
|       if show_used do | ||||
|         columns ++ [%{label: gettext("Used up on"), key: :used_up_on}] | ||||
|       else | ||||
|         columns | ||||
|       end | ||||
|  | ||||
|     columns = columns ++ [%{label: nil, key: :actions, sortable: false}] | ||||
|  | ||||
|     rows = | ||||
|       ammo_groups | ||||
|       |> Enum.map(fn ammo_group -> ammo_group |> get_row_data_for_ammo_group(columns) end) | ||||
| @@ -110,8 +127,8 @@ defmodule CanneryWeb.AmmoGroupLive.Index do | ||||
|     |> Enum.into(%{}, fn %{key: key} -> {key, get_value_for_key(key, ammo_group)} end) | ||||
|   end | ||||
|  | ||||
|   @spec get_value_for_key(String.t(), AmmoGroup.t()) :: any() | ||||
|   defp get_value_for_key("ammo_type", %{ammo_type: ammo_type}) do | ||||
|   @spec get_value_for_key(atom(), AmmoGroup.t()) :: any() | ||||
|   defp get_value_for_key(:ammo_type, %{ammo_type: ammo_type}) do | ||||
|     {ammo_type.name, | ||||
|      live_patch(ammo_type.name, | ||||
|        to: Routes.ammo_type_show_path(Endpoint, :show, ammo_type), | ||||
| @@ -119,12 +136,12 @@ defmodule CanneryWeb.AmmoGroupLive.Index do | ||||
|      )} | ||||
|   end | ||||
|  | ||||
|   defp get_value_for_key("price_paid", %{price_paid: nil}), do: {"a", nil} | ||||
|   defp get_value_for_key(:price_paid, %{price_paid: nil}), do: {"a", nil} | ||||
|  | ||||
|   defp get_value_for_key("price_paid", %{price_paid: price_paid}), | ||||
|   defp get_value_for_key(:price_paid, %{price_paid: price_paid}), | ||||
|     do: gettext("$%{amount}", amount: price_paid |> :erlang.float_to_binary(decimals: 2)) | ||||
|  | ||||
|   defp get_value_for_key("added_on", %{inserted_at: inserted_at}) do | ||||
|   defp get_value_for_key(:added_on, %{inserted_at: inserted_at}) do | ||||
|     assigns = %{inserted_at: inserted_at} | ||||
|  | ||||
|     {inserted_at, | ||||
| @@ -133,15 +150,30 @@ defmodule CanneryWeb.AmmoGroupLive.Index do | ||||
|      """} | ||||
|   end | ||||
|  | ||||
|   defp get_value_for_key("range", %{staged: staged} = ammo_group) do | ||||
|   defp get_value_for_key(:used_up_on, ammo_group) do | ||||
|     last_shot_group_date = | ||||
|       case ammo_group |> Ammo.get_last_used_shot_group() do | ||||
|         %{date: last_shot_group_date} -> last_shot_group_date | ||||
|         _no_shot_groups -> nil | ||||
|       end | ||||
|  | ||||
|     assigns = %{last_shot_group_date: last_shot_group_date} | ||||
|  | ||||
|     {last_shot_group_date, | ||||
|      ~H""" | ||||
|      <%= @last_shot_group_date |> display_date() %> | ||||
|      """} | ||||
|   end | ||||
|  | ||||
|   defp get_value_for_key(:range, %{staged: staged} = ammo_group) do | ||||
|     assigns = %{ammo_group: ammo_group} | ||||
|  | ||||
|     {staged, | ||||
|      ~H""" | ||||
|      <div class="min-w-20 py-2 px-4 h-full flex flex-col justify-center items-center"> | ||||
|      <div class="min-w-20 py-2 px-4 h-full flex flew-wrap justify-center items-center"> | ||||
|        <button | ||||
|          type="button" | ||||
|          class="mx-2 my-1 btn btn-primary" | ||||
|          class="mx-2 my-1 text-sm btn btn-primary" | ||||
|          phx-click="toggle_staged" | ||||
|          phx-value-ammo_group_id={ammo_group.id} | ||||
|        > | ||||
| @@ -150,16 +182,16 @@ defmodule CanneryWeb.AmmoGroupLive.Index do | ||||
|  | ||||
|        <%= live_patch(dgettext("actions", "Record shots"), | ||||
|          to: Routes.ammo_group_index_path(Endpoint, :add_shot_group, ammo_group), | ||||
|          class: "mx-2 my-1 btn btn-primary" | ||||
|          class: "mx-2 my-1 text-sm btn btn-primary" | ||||
|        ) %> | ||||
|      </div> | ||||
|      """} | ||||
|   end | ||||
|  | ||||
|   defp get_value_for_key("remaining", ammo_group), | ||||
|   defp get_value_for_key(:remaining, ammo_group), | ||||
|     do: "#{ammo_group |> Ammo.get_percentage_remaining()}%" | ||||
|  | ||||
|   defp get_value_for_key("actions", ammo_group) do | ||||
|   defp get_value_for_key(:actions, ammo_group) do | ||||
|     assigns = %{ammo_group: ammo_group} | ||||
|  | ||||
|     ~H""" | ||||
| @@ -190,22 +222,28 @@ defmodule CanneryWeb.AmmoGroupLive.Index do | ||||
|     """ | ||||
|   end | ||||
|  | ||||
|   defp get_value_for_key("container", %{container: nil}), do: {nil, nil} | ||||
|   defp get_value_for_key(:container, %{container: nil}), do: {nil, nil} | ||||
|  | ||||
|   defp get_value_for_key("container", %{container: %{name: container_name}} = ammo_group) do | ||||
|   defp get_value_for_key(:container, %{container: %{name: container_name}} = ammo_group) do | ||||
|     assigns = %{ammo_group: ammo_group} | ||||
|  | ||||
|     {container_name, | ||||
|      ~H""" | ||||
|      <div class="min-w-20 py-2 px-4 h-full space-x-4 flex justify-center items-center"> | ||||
|        <%= live_patch(@ammo_group.container.name, | ||||
|      <div class="min-w-20 py-2 px-4 h-full flex flew-wrap justify-center items-center"> | ||||
|        <%= live_patch( | ||||
|          @ammo_group.container.name, | ||||
|          to: Routes.container_show_path(Endpoint, :show, @ammo_group.container), | ||||
|          class: "mx-2 my-1 link" | ||||
|        ) %> | ||||
|  | ||||
|        <%= live_patch( | ||||
|          gettext("Move ammo"), | ||||
|          to: Routes.ammo_group_index_path(Endpoint, :move, @ammo_group), | ||||
|          class: "btn btn-primary" | ||||
|          class: "mx-2 my-1 text-sm btn btn-primary" | ||||
|        ) %> | ||||
|      </div> | ||||
|      """} | ||||
|   end | ||||
|  | ||||
|   defp get_value_for_key(key, ammo_group), | ||||
|     do: ammo_group |> Map.get(key |> String.to_existing_atom()) | ||||
|   defp get_value_for_key(key, ammo_group), do: ammo_group |> Map.get(key) | ||||
| end | ||||
|   | ||||
| @@ -46,6 +46,14 @@ | ||||
|   <% end %> | ||||
|  | ||||
|   <%= unless @ammo_groups |> Enum.empty?() do %> | ||||
|     <div class="flex flex-col justify-center items-center"> | ||||
|       <.toggle_button action="toggle_show_used" value={@show_used}> | ||||
|         <span class="title text-lg text-primary-600"> | ||||
|           <%= gettext("Show used") %> | ||||
|         </span> | ||||
|       </.toggle_button> | ||||
|     </div> | ||||
|  | ||||
|     <.live_component | ||||
|       module={CanneryWeb.Components.TableComponent} | ||||
|       id="ammo_groups_index_table" | ||||
|   | ||||
| @@ -84,9 +84,9 @@ defmodule CanneryWeb.AmmoGroupLive.Show do | ||||
|     ammo_group = ammo_group |> Repo.preload([:container, :ammo_type, :shot_groups], force: true) | ||||
|  | ||||
|     columns = [ | ||||
|       %{label: gettext("Rounds shot"), key: "count"}, | ||||
|       %{label: gettext("Notes"), key: "notes"}, | ||||
|       %{label: gettext("Date"), key: "date"}, | ||||
|       %{label: gettext("Rounds shot"), key: :count}, | ||||
|       %{label: gettext("Notes"), key: :notes}, | ||||
|       %{label: gettext("Date"), key: :date}, | ||||
|       %{label: nil, key: "actions", sortable: false} | ||||
|     ] | ||||
|  | ||||
| @@ -110,10 +110,10 @@ defmodule CanneryWeb.AmmoGroupLive.Show do | ||||
|     |> Enum.into(%{}, fn %{key: key} -> | ||||
|       value = | ||||
|         case key do | ||||
|           "date" -> | ||||
|           :date -> | ||||
|             {date, date |> display_date()} | ||||
|  | ||||
|           "actions" -> | ||||
|           :actions -> | ||||
|             ~H""" | ||||
|             <div class="px-4 py-2 space-x-4 flex justify-center items-center"> | ||||
|               <%= live_patch to: Routes.ammo_group_show_path(Endpoint, :edit_shot_group, @ammo_group, shot_group), | ||||
| @@ -136,7 +136,7 @@ defmodule CanneryWeb.AmmoGroupLive.Show do | ||||
|             """ | ||||
|  | ||||
|           key -> | ||||
|             shot_group |> Map.get(key |> String.to_existing_atom()) | ||||
|             shot_group |> Map.get(key) | ||||
|         end | ||||
|  | ||||
|       {key, value} | ||||
|   | ||||
| @@ -48,29 +48,29 @@ defmodule CanneryWeb.AmmoTypeLive.Index do | ||||
|  | ||||
|     columns = | ||||
|       [ | ||||
|         %{label: gettext("Name"), key: "name", type: :string}, | ||||
|         %{label: gettext("Bullet type"), key: "bullet_type", type: :string}, | ||||
|         %{label: gettext("Bullet core"), key: "bullet_core", type: :string}, | ||||
|         %{label: gettext("Cartridge"), key: "cartridge", type: :string}, | ||||
|         %{label: gettext("Caliber"), key: "caliber", type: :string}, | ||||
|         %{label: gettext("Case material"), key: "case_material", type: :string}, | ||||
|         %{label: gettext("Jacket type"), key: "jacket_type", type: :string}, | ||||
|         %{label: gettext("Muzzle velocity"), key: "muzzle_velocity", type: :string}, | ||||
|         %{label: gettext("Powder type"), key: "powder_type", type: :string}, | ||||
|         %{label: gettext("Name"), key: :name, type: :name}, | ||||
|         %{label: gettext("Bullet type"), key: :bullet_type, type: :string}, | ||||
|         %{label: gettext("Bullet core"), key: :bullet_core, type: :string}, | ||||
|         %{label: gettext("Cartridge"), key: :cartridge, type: :string}, | ||||
|         %{label: gettext("Caliber"), key: :caliber, type: :string}, | ||||
|         %{label: gettext("Case material"), key: :case_material, type: :string}, | ||||
|         %{label: gettext("Jacket type"), key: :jacket_type, type: :string}, | ||||
|         %{label: gettext("Muzzle velocity"), key: :muzzle_velocity, type: :string}, | ||||
|         %{label: gettext("Powder type"), key: :powder_type, type: :string}, | ||||
|         %{ | ||||
|           label: gettext("Powder grains per charge"), | ||||
|           key: "powder_grains_per_charge", | ||||
|           key: :powder_grains_per_charge, | ||||
|           type: :string | ||||
|         }, | ||||
|         %{label: gettext("Grains"), key: "grains", type: :string}, | ||||
|         %{label: gettext("Pressure"), key: "pressure", type: :string}, | ||||
|         %{label: gettext("Primer type"), key: "primer_type", type: :string}, | ||||
|         %{label: gettext("Firing type"), key: "firing_type", type: :string}, | ||||
|         %{label: gettext("Tracer"), key: "tracer", type: :boolean}, | ||||
|         %{label: gettext("Incendiary"), key: "incendiary", type: :boolean}, | ||||
|         %{label: gettext("Blank"), key: "blank", type: :boolean}, | ||||
|         %{label: gettext("Corrosive"), key: "corrosive", type: :boolean}, | ||||
|         %{label: gettext("Manufacturer"), key: "manufacturer", type: :string}, | ||||
|         %{label: gettext("Grains"), key: :grains, type: :string}, | ||||
|         %{label: gettext("Pressure"), key: :pressure, type: :string}, | ||||
|         %{label: gettext("Primer type"), key: :primer_type, type: :string}, | ||||
|         %{label: gettext("Firing type"), key: :firing_type, type: :string}, | ||||
|         %{label: gettext("Tracer"), key: :tracer, type: :boolean}, | ||||
|         %{label: gettext("Incendiary"), key: :incendiary, type: :boolean}, | ||||
|         %{label: gettext("Blank"), key: :blank, type: :boolean}, | ||||
|         %{label: gettext("Corrosive"), key: :corrosive, type: :boolean}, | ||||
|         %{label: gettext("Manufacturer"), key: :manufacturer, type: :string}, | ||||
|         %{label: gettext("UPC"), key: "upc", type: :string} | ||||
|       ] | ||||
|       |> Enum.filter(fn %{key: key, type: type} -> | ||||
| @@ -83,8 +83,9 @@ defmodule CanneryWeb.AmmoTypeLive.Index do | ||||
|         end) | ||||
|       end) | ||||
|       |> Kernel.++([ | ||||
|         %{label: gettext("Total # of rounds"), key: "round_count", type: :round_count}, | ||||
|         %{label: gettext("Average Price paid"), key: "avg_price_paid", type: :avg_price_paid}, | ||||
|         %{label: gettext("Total # of rounds"), key: :round_count, type: :round_count}, | ||||
|         %{label: gettext("Total # of ammo"), key: :ammo_count, type: :ammo_count}, | ||||
|         %{label: gettext("Average Price paid"), key: :avg_price_paid, type: :avg_price_paid}, | ||||
|         %{label: nil, key: "actions", type: :actions, sortable: false} | ||||
|       ]) | ||||
|  | ||||
| @@ -103,11 +104,14 @@ defmodule CanneryWeb.AmmoTypeLive.Index do | ||||
|   end | ||||
|  | ||||
|   defp get_ammo_type_value(:boolean, key, ammo_type, _current_user), | ||||
|     do: ammo_type |> Map.get(key |> String.to_existing_atom()) |> humanize() | ||||
|     do: ammo_type |> Map.get(key) |> humanize() | ||||
|  | ||||
|   defp get_ammo_type_value(:round_count, _key, ammo_type, current_user), | ||||
|     do: ammo_type |> Ammo.get_round_count_for_ammo_type(current_user) | ||||
|  | ||||
|   defp get_ammo_type_value(:ammo_count, _key, ammo_type, current_user), | ||||
|     do: ammo_type |> Ammo.get_ammo_groups_count_for_type(current_user) | ||||
|  | ||||
|   defp get_ammo_type_value(:avg_price_paid, _key, ammo_type, current_user) do | ||||
|     case ammo_type |> Ammo.get_average_cost_for_ammo_type!(current_user) do | ||||
|       nil -> gettext("No cost information") | ||||
| @@ -115,6 +119,18 @@ defmodule CanneryWeb.AmmoTypeLive.Index do | ||||
|     end | ||||
|   end | ||||
|  | ||||
|   defp get_ammo_type_value(:name, _key, ammo_type, _current_user) do | ||||
|     assigns = %{ammo_type: ammo_type} | ||||
|  | ||||
|     ~H""" | ||||
|     <%= live_redirect to: Routes.ammo_type_show_path(Endpoint, :show, ammo_type), | ||||
|       class: "link", | ||||
|       data: [qa: "view-name-#{ammo_type.id}"] do %> | ||||
|       <%= ammo_type.name %> | ||||
|     <% end %> | ||||
|     """ | ||||
|   end | ||||
|  | ||||
|   defp get_ammo_type_value(:actions, _key, ammo_type, _current_user) do | ||||
|     assigns = %{ammo_type: ammo_type} | ||||
|  | ||||
| @@ -148,6 +164,5 @@ defmodule CanneryWeb.AmmoTypeLive.Index do | ||||
|  | ||||
|   defp get_ammo_type_value(nil, _key, _ammo_type, _current_user), do: nil | ||||
|  | ||||
|   defp get_ammo_type_value(_other, key, ammo_type, _current_user), | ||||
|     do: ammo_type |> Map.get(key |> String.to_existing_atom()) | ||||
|   defp get_ammo_type_value(_other, key, ammo_type, _current_user), do: ammo_type |> Map.get(key) | ||||
| end | ||||
|   | ||||
| @@ -9,22 +9,12 @@ defmodule CanneryWeb.AmmoTypeLive.Show do | ||||
|   alias CanneryWeb.Endpoint | ||||
|  | ||||
|   @impl true | ||||
|   def mount(_params, _session, socket), do: {:ok, socket} | ||||
|   def mount(_params, _session, socket), do: {:ok, socket |> assign(show_used: false)} | ||||
|  | ||||
|   @impl true | ||||
|   def handle_params(%{"id" => id}, _params, %{assigns: %{current_user: current_user}} = socket) do | ||||
|     ammo_type = Ammo.get_ammo_type!(id, current_user) | ||||
|  | ||||
|     socket = | ||||
|       socket | ||||
|       |> assign( | ||||
|         page_title: page_title(socket.assigns.live_action), | ||||
|         ammo_type: ammo_type, | ||||
|         ammo_groups: ammo_type |> Ammo.list_ammo_groups_for_type(current_user), | ||||
|         avg_cost_per_round: ammo_type |> Ammo.get_average_cost_for_ammo_type!(current_user) | ||||
|       ) | ||||
|  | ||||
|     {:noreply, socket} | ||||
|     {:noreply, socket |> display_ammo_type(ammo_type)} | ||||
|   end | ||||
|  | ||||
|   @impl true | ||||
| @@ -41,6 +31,34 @@ defmodule CanneryWeb.AmmoTypeLive.Show do | ||||
|     {:noreply, socket |> put_flash(:info, prompt) |> push_redirect(to: redirect_to)} | ||||
|   end | ||||
|  | ||||
|   @impl true | ||||
|   def handle_event("toggle_show_used", _params, %{assigns: %{show_used: show_used}} = socket) do | ||||
|     {:noreply, socket |> assign(:show_used, !show_used) |> display_ammo_type()} | ||||
|   end | ||||
|  | ||||
|   defp display_ammo_type( | ||||
|          %{ | ||||
|            assigns: %{ | ||||
|              live_action: live_action, | ||||
|              current_user: current_user, | ||||
|              show_used: show_used | ||||
|            } | ||||
|          } = socket, | ||||
|          ammo_type | ||||
|        ) do | ||||
|     socket | ||||
|     |> assign( | ||||
|       page_title: page_title(live_action), | ||||
|       ammo_type: ammo_type, | ||||
|       ammo_groups: ammo_type |> Ammo.list_ammo_groups_for_type(current_user, show_used), | ||||
|       avg_cost_per_round: ammo_type |> Ammo.get_average_cost_for_ammo_type!(current_user) | ||||
|     ) | ||||
|   end | ||||
|  | ||||
|   defp display_ammo_type(%{assigns: %{ammo_type: ammo_type}} = socket) do | ||||
|     socket |> display_ammo_type(ammo_type) | ||||
|   end | ||||
|  | ||||
|   defp page_title(:show), do: gettext("Show Ammo type") | ||||
|   defp page_title(:edit), do: gettext("Edit Ammo type") | ||||
| end | ||||
|   | ||||
| @@ -1,5 +1,4 @@ | ||||
| <div class="mx-auto px-4 sm:px-8 space-y-4 max-w-3xl | ||||
|   flex flex-col justify-center items-center"> | ||||
| <div class="space-y-4 flex flex-col justify-center items-center"> | ||||
|   <h1 class="title text-2xl title-primary-500"> | ||||
|     <%= @ammo_type.name %> | ||||
|   </h1> | ||||
| @@ -114,6 +113,14 @@ | ||||
|  | ||||
|   <hr class="hr" /> | ||||
|  | ||||
|   <div class="flex flex-col justify-center items-center"> | ||||
|     <.toggle_button action="toggle_show_used" value={@show_used}> | ||||
|       <span class="title text-lg text-primary-600"> | ||||
|         <%= gettext("Show used") %> | ||||
|       </span> | ||||
|     </.toggle_button> | ||||
|   </div> | ||||
|  | ||||
|   <div> | ||||
|     <%= if @ammo_groups |> Enum.empty?() do %> | ||||
|       <h2 class="mx-8 my-4 title text-lg text-primary-600"> | ||||
| @@ -123,7 +130,7 @@ | ||||
|     <% else %> | ||||
|       <div class="flex flex-wrap justify-center items-center"> | ||||
|         <%= for ammo_group <- @ammo_groups do %> | ||||
|           <.ammo_group_card ammo_group={ammo_group} /> | ||||
|           <.ammo_group_card ammo_group={ammo_group} show_container={true} /> | ||||
|         <% end %> | ||||
|       </div> | ||||
|     <% end %> | ||||
|   | ||||
| @@ -5,13 +5,13 @@ defmodule CanneryWeb.ContainerLive.Show do | ||||
|  | ||||
|   use CanneryWeb, :live_view | ||||
|   import CanneryWeb.Components.{AmmoGroupCard, TagCard} | ||||
|   alias Cannery.{Accounts.User, Containers, Containers.Container, Repo, Tags} | ||||
|   alias Cannery.{Accounts.User, Ammo, Containers, Containers.Container, Repo, Tags} | ||||
|   alias CanneryWeb.Endpoint | ||||
|   alias Ecto.Changeset | ||||
|   alias Phoenix.LiveView.Socket | ||||
|  | ||||
|   @impl true | ||||
|   def mount(_params, _session, socket), do: {:ok, socket} | ||||
|   def mount(_params, _session, socket), do: {:ok, socket |> assign(show_used: false)} | ||||
|  | ||||
|   @impl true | ||||
|   def handle_params( | ||||
| @@ -39,7 +39,7 @@ defmodule CanneryWeb.ContainerLive.Show do | ||||
|               container_name: container.name | ||||
|             ) | ||||
|  | ||||
|           socket |> put_flash(:info, prompt) |> render_container(container.id, current_user) | ||||
|           socket |> put_flash(:info, prompt) |> render_container() | ||||
|  | ||||
|         {:error, error_string} -> | ||||
|           socket |> put_flash(:error, error_string) | ||||
| @@ -82,12 +82,23 @@ defmodule CanneryWeb.ContainerLive.Show do | ||||
|     {:noreply, socket} | ||||
|   end | ||||
|  | ||||
|   @impl true | ||||
|   def handle_event("toggle_show_used", _params, %{assigns: %{show_used: show_used}} = socket) do | ||||
|     {:noreply, socket |> assign(:show_used, !show_used) |> render_container()} | ||||
|   end | ||||
|  | ||||
|   @spec render_container(Socket.t(), Container.id(), User.t()) :: Socket.t() | ||||
|   defp render_container(%{assigns: %{live_action: live_action}} = socket, id, current_user) do | ||||
|   defp render_container( | ||||
|          %{assigns: %{live_action: live_action, show_used: show_used}} = socket, | ||||
|          id, | ||||
|          current_user | ||||
|        ) do | ||||
|     %{name: container_name} = | ||||
|       container = | ||||
|       Containers.get_container!(id, current_user) | ||||
|       |> Repo.preload([:ammo_groups, :tags], force: true) | ||||
|       |> Repo.preload([:tags], force: true) | ||||
|  | ||||
|     ammo_groups = Ammo.list_ammo_groups_for_container(container, current_user, show_used) | ||||
|  | ||||
|     page_title = | ||||
|       case live_action do | ||||
| @@ -96,6 +107,13 @@ defmodule CanneryWeb.ContainerLive.Show do | ||||
|         :edit_tags -> gettext("Edit %{name} tags", name: container_name) | ||||
|       end | ||||
|  | ||||
|     socket |> assign(container: container, page_title: page_title) | ||||
|     socket |> assign(container: container, ammo_groups: ammo_groups, page_title: page_title) | ||||
|   end | ||||
|  | ||||
|   @spec render_container(Socket.t()) :: Socket.t() | ||||
|   defp render_container( | ||||
|          %{assigns: %{container: %{id: container_id}, current_user: current_user}} = socket | ||||
|        ) do | ||||
|     socket |> render_container(container_id, current_user) | ||||
|   end | ||||
| end | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| <div class="mx-auto space-y-4 max-w-3xl flex flex-col justify-center items-center"> | ||||
| <div class="space-y-4 flex flex-col justify-center items-center"> | ||||
|   <h1 class="title text-2xl title-primary-500"> | ||||
|     <%= @container.name %> | ||||
|   </h1> | ||||
| @@ -22,10 +22,10 @@ | ||||
|     </span> | ||||
|   <% end %> | ||||
|  | ||||
|   <%= unless @container.ammo_groups |> Enum.empty?() do %> | ||||
|   <%= unless @ammo_groups |> Enum.empty?() do %> | ||||
|     <span class="rounded-lg title text-lg"> | ||||
|       <%= gettext("Packs:") %> | ||||
|       <%= @container |> Containers.get_container_ammo_group_count!() %> | ||||
|       <%= Enum.count(@ammo_groups) %> | ||||
|     </span> | ||||
|  | ||||
|     <span class="rounded-lg title text-lg"> | ||||
| @@ -84,14 +84,22 @@ | ||||
|  | ||||
|   <hr class="mb-4 hr" /> | ||||
|  | ||||
|   <div class="flex flex-col justify-center items-center"> | ||||
|     <.toggle_button action="toggle_show_used" value={@show_used}> | ||||
|       <span class="title text-lg text-primary-600"> | ||||
|         <%= gettext("Show used") %> | ||||
|       </span> | ||||
|     </.toggle_button> | ||||
|   </div> | ||||
|  | ||||
|   <div> | ||||
|     <%= if @container.ammo_groups |> Enum.empty?() do %> | ||||
|     <%= if @ammo_groups |> Enum.empty?() do %> | ||||
|       <h2 class="mx-8 my-4 title text-lg text-primary-600"> | ||||
|         <%= gettext("No ammo in this container") %> | ||||
|       </h2> | ||||
|     <% else %> | ||||
|       <div class="flex flex-wrap justify-center items-center"> | ||||
|         <%= for ammo_group <- @container.ammo_groups do %> | ||||
|         <%= for ammo_group <- @ammo_groups do %> | ||||
|           <.ammo_group_card ammo_group={ammo_group} /> | ||||
|         <% end %> | ||||
|       </div> | ||||
|   | ||||
| @@ -77,10 +77,10 @@ defmodule CanneryWeb.RangeLive.Index do | ||||
|     ammo_groups = Ammo.list_staged_ammo_groups(current_user) | ||||
|  | ||||
|     columns = [ | ||||
|       %{label: gettext("Ammo"), key: "name"}, | ||||
|       %{label: gettext("Rounds shot"), key: "count"}, | ||||
|       %{label: gettext("Notes"), key: "notes"}, | ||||
|       %{label: gettext("Date"), key: "date"}, | ||||
|       %{label: gettext("Ammo"), key: :name}, | ||||
|       %{label: gettext("Rounds shot"), key: :count}, | ||||
|       %{label: gettext("Notes"), key: :notes}, | ||||
|       %{label: gettext("Date"), key: :date}, | ||||
|       %{label: nil, key: "actions", sortable: false} | ||||
|     ] | ||||
|  | ||||
| @@ -101,17 +101,17 @@ defmodule CanneryWeb.RangeLive.Index do | ||||
|     |> Enum.into(%{}, fn %{key: key} -> | ||||
|       value = | ||||
|         case key do | ||||
|           "name" -> | ||||
|           :name -> | ||||
|             {shot_group.ammo_group.ammo_type.name, | ||||
|              live_patch(shot_group.ammo_group.ammo_type.name, | ||||
|                to: Routes.ammo_group_show_path(Endpoint, :show, shot_group.ammo_group), | ||||
|                class: "link" | ||||
|              )} | ||||
|  | ||||
|           "date" -> | ||||
|           :date -> | ||||
|             date |> display_date() | ||||
|  | ||||
|           "actions" -> | ||||
|           :actions -> | ||||
|             ~H""" | ||||
|             <div class="px-4 py-2 space-x-4 flex justify-center items-center"> | ||||
|               <%= live_patch to: Routes.range_index_path(Endpoint, :edit, shot_group), | ||||
| @@ -134,7 +134,7 @@ defmodule CanneryWeb.RangeLive.Index do | ||||
|             """ | ||||
|  | ||||
|           key -> | ||||
|             shot_group |> Map.get(key |> String.to_existing_atom()) | ||||
|             shot_group |> Map.get(key) | ||||
|         end | ||||
|  | ||||
|       {key, value} | ||||
|   | ||||
| @@ -22,7 +22,7 @@ | ||||
|     </div> | ||||
|   </header> | ||||
|  | ||||
|   <div class="mx-4 sm:mx-8 md:mx-16"> | ||||
|   <div class="mx-4 sm:mx-8 md:mx-16 flex flex-col justify-center items-stretch"> | ||||
|     <%= @inner_content %> | ||||
|   </div> | ||||
| </main> | ||||
|   | ||||
| @@ -5,6 +5,7 @@ defmodule CanneryWeb.ViewHelpers do | ||||
|   :view` | ||||
|   """ | ||||
|  | ||||
|   import Phoenix.LiveView | ||||
|   import Phoenix.LiveView.Helpers | ||||
|  | ||||
|   @id_length 16 | ||||
| @@ -65,4 +66,43 @@ defmodule CanneryWeb.ViewHelpers do | ||||
|       if(Application.get_env(:cannery, CanneryWeb.ViewHelpers)[:shibao_mode], do: "q_q", else: "😔") | ||||
|  | ||||
|   def display_emoji(other_emoji), do: other_emoji | ||||
|  | ||||
|   @doc """ | ||||
|   A toggle button element that can be directed to a liveview or a | ||||
|   live_component's `handle_event/3`. | ||||
|  | ||||
|   ## Examples | ||||
|  | ||||
|   <.toggle_button action="my_liveview_action" value={@some_value}> | ||||
|     <span>Toggle me!</span> | ||||
|   </.toggle_button> | ||||
|   <.toggle_button action="my_live_component_action" target={@myself} value={@some_value}> | ||||
|     <span>Whatever you want</span> | ||||
|   </.toggle_button> | ||||
|   """ | ||||
|   def toggle_button(assigns) do | ||||
|     assigns = assigns |> assign_new(:id, fn -> assigns.action end) | ||||
|  | ||||
|     ~H""" | ||||
|     <label for={@id} class="inline-flex relative items-center cursor-pointer"> | ||||
|       <input | ||||
|         type="checkbox" | ||||
|         value={@value} | ||||
|         checked={@value} | ||||
|         id={@id} | ||||
|         class="sr-only peer" | ||||
|         { | ||||
|           if assigns |> Map.has_key?(:target), | ||||
|             do: %{"phx-click" => @action, "phx-value-value" => @value, "phx-target" => @target}, | ||||
|             else: %{"phx-click" => @action, "phx-value-value" => @value} | ||||
|         } | ||||
|       /> | ||||
|       <div class="w-11 h-6 bg-gray-200 rounded-full peer dark:bg-gray-700 peer-focus:ring-4 peer-focus:ring-teal-300 dark:peer-focus:ring-teal-800 peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-1 after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all dark:border-gray-600 peer-checked:bg-teal-600"> | ||||
|       </div> | ||||
|       <span class="ml-3 text-sm font-medium text-gray-900 dark:text-gray-300"> | ||||
|         <%= render_slot(@inner_block) %> | ||||
|       </span> | ||||
|     </label> | ||||
|     """ | ||||
|   end | ||||
| end | ||||
|   | ||||
| @@ -156,7 +156,7 @@ msgid "Why not get some ready to shoot?" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:151 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:183 | ||||
| #: lib/cannery_web/live/ammo_group_live/show.html.heex:91 | ||||
| #: lib/cannery_web/live/range_live/index.html.heex:36 | ||||
| msgid "Record shots" | ||||
|   | ||||
| @@ -169,7 +169,7 @@ msgid "Why not get some ready to shoot?" | ||||
| msgstr "Warum nicht einige für den Schießstand auswählen?" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:151 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:183 | ||||
| #: lib/cannery_web/live/ammo_group_live/show.html.heex:91 | ||||
| #: lib/cannery_web/live/range_live/index.html.heex:36 | ||||
| msgid "Record shots" | ||||
|   | ||||
| @@ -54,13 +54,13 @@ msgstr "Munition" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:21 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:81 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:90 | ||||
| msgid "Ammo type" | ||||
| msgstr "Munitionsarten" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:87 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:100 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:88 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:99 | ||||
| msgid "Average Price paid" | ||||
| msgstr "Durchschnittlicher Kaufpreis" | ||||
|  | ||||
| @@ -72,7 +72,7 @@ msgstr "Hintergrundfarbe" | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:140 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:71 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:53 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:52 | ||||
| msgid "Blank" | ||||
| msgstr "Knallpatrone" | ||||
|  | ||||
| @@ -84,42 +84,42 @@ msgstr "Messing" | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:44 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:53 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:39 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:38 | ||||
| msgid "Bullet core" | ||||
| msgstr "Projektilkern" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:37 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:52 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:38 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:37 | ||||
| msgid "Bullet type" | ||||
| msgstr "Patronenart" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:58 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:55 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:41 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:40 | ||||
| msgid "Caliber" | ||||
| msgstr "Kaliber" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:51 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:54 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:40 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:39 | ||||
| msgid "Cartridge" | ||||
| msgstr "Patrone" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:65 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:56 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:42 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:41 | ||||
| msgid "Case material" | ||||
| msgstr "Gehäusematerial" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/components/move_ammo_group_component.ex:67 | ||||
| #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:48 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:86 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:95 | ||||
| msgid "Container" | ||||
| msgstr "Behälter" | ||||
|  | ||||
| @@ -133,18 +133,18 @@ msgstr "Behälter" | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:144 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:72 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:54 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:53 | ||||
| msgid "Corrosive" | ||||
| msgstr "Korrosiv" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:27 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:82 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:91 | ||||
| msgid "Count" | ||||
| msgstr "Anzahl" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:29 | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:34 | ||||
| #: lib/cannery_web/live/ammo_group_live/show.html.heex:8 | ||||
| msgid "Count:" | ||||
| msgstr "Anzahl:" | ||||
| @@ -178,7 +178,7 @@ msgstr "Munitionsgruppe bearbeiten" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:23 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.ex:45 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.ex:63 | ||||
| msgid "Edit Ammo type" | ||||
| msgstr "Munitionstyp bearbeiten" | ||||
|  | ||||
| @@ -210,14 +210,14 @@ msgstr "VM" | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:103 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:65 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:47 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:46 | ||||
| msgid "Grains" | ||||
| msgstr "Körner" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:136 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:70 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:52 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:51 | ||||
| msgid "Incendiary" | ||||
| msgstr "Brandmunition" | ||||
|  | ||||
| @@ -268,7 +268,7 @@ msgstr "Magazin, Ladestreifen, Munitionskiste usw." | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:148 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:73 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:55 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:54 | ||||
| msgid "Manufacturer" | ||||
| msgstr "Hersteller" | ||||
|  | ||||
| @@ -322,7 +322,7 @@ msgid "No Ammo Types" | ||||
| msgstr "Keine Munitionsarten" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:120 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:127 | ||||
| msgid "No ammo for this type" | ||||
| msgstr "Keine Munition dieser Art" | ||||
|  | ||||
| @@ -352,7 +352,7 @@ msgid "Notes" | ||||
| msgstr "Bemerkungen" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:35 | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:40 | ||||
| #: lib/cannery_web/live/ammo_group_live/show.html.heex:24 | ||||
| msgid "Notes:" | ||||
| msgstr "Bemerkungen:" | ||||
| @@ -365,25 +365,25 @@ msgstr "Auf dem Bücherregal" | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:111 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:66 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:48 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:47 | ||||
| msgid "Pressure" | ||||
| msgstr "Druck" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:34 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:83 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:92 | ||||
| msgid "Price paid" | ||||
| msgstr "Kaufpreis" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:47 | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:59 | ||||
| msgid "Price paid:" | ||||
| msgstr "Kaufpreis:" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:118 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:67 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:49 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:48 | ||||
| msgid "Primer type" | ||||
| msgstr "Zündertyp" | ||||
|  | ||||
| @@ -416,7 +416,7 @@ msgid "Settings" | ||||
| msgstr "Einstellungen" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/show.ex:44 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.ex:62 | ||||
| msgid "Show Ammo type" | ||||
| msgstr "Zeige Munitionsarten" | ||||
|  | ||||
| @@ -460,7 +460,7 @@ msgstr "Die selbst-gehostete Website zur Verwaltung von Schusswaffen" | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:132 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:69 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:51 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:50 | ||||
| msgid "Tracer" | ||||
| msgstr "Leuchtspur" | ||||
|  | ||||
| @@ -508,7 +508,7 @@ msgstr "Keine Tags für diesen Behälter" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/components/topbar.ex:68 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:85 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:94 | ||||
| msgid "Range" | ||||
| msgstr "Schießplatz" | ||||
|  | ||||
| @@ -601,6 +601,7 @@ msgstr "Munitionsgruppe verschieben" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/components/move_ammo_group_component.ex:80 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:240 | ||||
| msgid "Move ammo" | ||||
| msgstr "Munition verschieben" | ||||
|  | ||||
| @@ -615,12 +616,12 @@ msgid "Shot log" | ||||
| msgstr "Schießkladde" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:48 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:125 | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:60 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:142 | ||||
| #: lib/cannery_web/live/ammo_group_live/show.html.heex:37 | ||||
| #: lib/cannery_web/live/ammo_group_live/show.html.heex:44 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:114 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:104 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:118 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:103 | ||||
| msgid "$%{amount}" | ||||
| msgstr "$%{amount}" | ||||
|  | ||||
| @@ -632,35 +633,35 @@ msgstr "Bimetall" | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:72 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:57 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:43 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:42 | ||||
| msgid "Jacket type" | ||||
| msgstr "Patronenhülse" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:79 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:58 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:44 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:43 | ||||
| msgid "Muzzle velocity" | ||||
| msgstr "Mündungsgeschwindigkeit" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:93 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:61 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:46 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:45 | ||||
| msgid "Powder grains per charge" | ||||
| msgstr "Pulverkörner pro Ladung" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:89 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:59 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:45 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:44 | ||||
| msgid "Powder type" | ||||
| msgstr "Pulverart" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:152 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:74 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:56 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:55 | ||||
| msgid "UPC" | ||||
| msgstr "UPC" | ||||
|  | ||||
| @@ -681,19 +682,19 @@ msgid "New password" | ||||
| msgstr "Neues Passwort" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:148 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:180 | ||||
| msgid "Stage" | ||||
| msgstr "Markiert" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:148 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:180 | ||||
| msgid "Unstage" | ||||
| msgstr "Demarkiert" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:125 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:68 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:50 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:49 | ||||
| msgid "Firing type" | ||||
| msgstr "Patronenhülsenform" | ||||
|  | ||||
| @@ -709,13 +710,13 @@ msgstr "Lädt..." | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/container_live/index.ex:27 | ||||
| #: lib/cannery_web/live/container_live/show.ex:95 | ||||
| #: lib/cannery_web/live/container_live/show.ex:106 | ||||
| msgid "Edit %{name}" | ||||
| msgstr "%{name} bearbeiten" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/container_live/index.ex:46 | ||||
| #: lib/cannery_web/live/container_live/show.ex:96 | ||||
| #: lib/cannery_web/live/container_live/show.ex:107 | ||||
| msgid "Edit %{name} tags" | ||||
| msgstr "Editiere %{name} Tags" | ||||
|  | ||||
| @@ -726,18 +727,18 @@ msgid "Rounds:" | ||||
| msgstr "Patronen:" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/container_live/show.ex:94 | ||||
| #: lib/cannery_web/live/container_live/show.ex:105 | ||||
| msgid "Show %{name}" | ||||
| msgstr "Zeige %{name}" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:113 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:110 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:117 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:109 | ||||
| msgid "No cost information" | ||||
| msgstr "Keine Preisinformationen" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:84 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:93 | ||||
| msgid "% left" | ||||
| msgstr "% verbleibend" | ||||
|  | ||||
| @@ -767,7 +768,7 @@ msgid "Rounds used" | ||||
| msgstr "Patronen verbraucht" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:75 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:74 | ||||
| msgid "Current # of rounds:" | ||||
| msgstr "Derzeitige # an Patronen:" | ||||
|  | ||||
| @@ -777,7 +778,7 @@ msgid "Total # of rounds" | ||||
| msgstr "Summe aller Patronen" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:83 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:82 | ||||
| msgid "Total rounds shot:" | ||||
| msgstr "Summe abgegebener Schüsse:" | ||||
|  | ||||
| @@ -823,14 +824,14 @@ msgid "Ammo types" | ||||
| msgstr "Munitionsart" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:87 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:96 | ||||
| msgid "Added on" | ||||
| msgstr "Hinzugefügt am" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:41 | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:46 | ||||
| #: lib/cannery_web/live/ammo_group_live/show.html.heex:30 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:91 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:90 | ||||
| msgid "Added on:" | ||||
| msgstr "Hinzugefügt am:" | ||||
|  | ||||
| @@ -899,7 +900,7 @@ msgid "Move Ammo" | ||||
| msgstr "Munition verschieben" | ||||
|  | ||||
| #, elixir-autogen, elixir-format, fuzzy | ||||
| #: lib/cannery_web/live/container_live/show.html.heex:90 | ||||
| #: lib/cannery_web/live/container_live/show.html.heex:98 | ||||
| msgid "No ammo in this container" | ||||
| msgstr "Keine Munitionsgruppe in diesem Behälter" | ||||
|  | ||||
| @@ -934,3 +935,30 @@ msgstr "" | ||||
| #: lib/cannery_web/live/invite_live/form_component.html.heex:28 | ||||
| msgid "Leave \"Uses left\" blank to make invite unlimited" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format, fuzzy | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:87 | ||||
| msgid "Total # of ammo" | ||||
| msgstr "Summe aller Patronen" | ||||
|  | ||||
| #, elixir-autogen, elixir-format, fuzzy | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:68 | ||||
| msgid "Container:" | ||||
| msgstr "Behälter" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/index.html.heex:52 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:119 | ||||
| #: lib/cannery_web/live/container_live/show.html.heex:90 | ||||
| msgid "Show used" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:101 | ||||
| msgid "Used up on" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:52 | ||||
| msgid "Used up on:" | ||||
| msgstr "" | ||||
|   | ||||
| @@ -188,7 +188,7 @@ msgstr "" | ||||
| "%{multiplier}" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery/ammo.ex:407 | ||||
| #: lib/cannery/ammo.ex:535 | ||||
| msgid "Invalid multiplier" | ||||
| msgstr "" | ||||
|  | ||||
|   | ||||
| @@ -33,7 +33,7 @@ msgstr "%{name} erfolgreich erstellt" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:41 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.ex:38 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.ex:28 | ||||
| #: lib/cannery_web/live/invite_live/index.ex:53 | ||||
| #: lib/cannery_web/live/invite_live/index.ex:133 | ||||
| #: lib/cannery_web/live/tag_live/index.ex:38 | ||||
| @@ -100,7 +100,7 @@ msgid "Are you sure you want to delete the invite for %{name}?" | ||||
| msgstr "Sind Sie sicher, dass sie die Einladung für %{name} löschen möchten?" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:184 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:216 | ||||
| #: lib/cannery_web/live/ammo_group_live/show.html.heex:71 | ||||
| msgid "Are you sure you want to delete this ammo?" | ||||
| msgstr "Sind Sie sicher, dass sie diese Munition löschen möchten?" | ||||
| @@ -293,7 +293,7 @@ msgstr[0] "Munitionsgruppe erfolgreich aktualisiert" | ||||
| msgstr[1] "Munitionsgruppe erfolgreich aktualisiert" | ||||
|  | ||||
| #, elixir-autogen, elixir-format, fuzzy | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:140 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:27 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:156 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:26 | ||||
| msgid "Are you sure you want to delete %{name}? This will delete all %{name} type ammo as well!" | ||||
| msgstr "Sind Sie sicher, dass sie %{name} löschen möchten?" | ||||
|   | ||||
| @@ -39,13 +39,13 @@ msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:21 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:81 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:90 | ||||
| msgid "Ammo type" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:87 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:100 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:88 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:99 | ||||
| msgid "Average Price paid" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -57,7 +57,7 @@ msgstr "" | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:140 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:71 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:53 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:52 | ||||
| msgid "Blank" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -69,42 +69,42 @@ msgstr "" | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:44 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:53 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:39 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:38 | ||||
| msgid "Bullet core" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:37 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:52 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:38 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:37 | ||||
| msgid "Bullet type" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:58 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:55 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:41 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:40 | ||||
| msgid "Caliber" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:51 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:54 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:40 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:39 | ||||
| msgid "Cartridge" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:65 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:56 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:42 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:41 | ||||
| msgid "Case material" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/components/move_ammo_group_component.ex:67 | ||||
| #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:48 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:86 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:95 | ||||
| msgid "Container" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -118,18 +118,18 @@ msgstr "" | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:144 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:72 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:54 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:53 | ||||
| msgid "Corrosive" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:27 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:82 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:91 | ||||
| msgid "Count" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:29 | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:34 | ||||
| #: lib/cannery_web/live/ammo_group_live/show.html.heex:8 | ||||
| msgid "Count:" | ||||
| msgstr "" | ||||
| @@ -163,7 +163,7 @@ msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:23 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.ex:45 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.ex:63 | ||||
| msgid "Edit Ammo type" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -195,14 +195,14 @@ msgstr "" | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:103 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:65 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:47 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:46 | ||||
| msgid "Grains" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:136 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:70 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:52 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:51 | ||||
| msgid "Incendiary" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -253,7 +253,7 @@ msgstr "" | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:148 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:73 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:55 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:54 | ||||
| msgid "Manufacturer" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -307,7 +307,7 @@ msgid "No Ammo Types" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:120 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:127 | ||||
| msgid "No ammo for this type" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -337,7 +337,7 @@ msgid "Notes" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:35 | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:40 | ||||
| #: lib/cannery_web/live/ammo_group_live/show.html.heex:24 | ||||
| msgid "Notes:" | ||||
| msgstr "" | ||||
| @@ -350,25 +350,25 @@ msgstr "" | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:111 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:66 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:48 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:47 | ||||
| msgid "Pressure" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:34 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:83 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:92 | ||||
| msgid "Price paid" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:47 | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:59 | ||||
| msgid "Price paid:" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:118 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:67 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:49 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:48 | ||||
| msgid "Primer type" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -399,7 +399,7 @@ msgid "Settings" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/show.ex:44 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.ex:62 | ||||
| msgid "Show Ammo type" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -443,7 +443,7 @@ msgstr "" | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:132 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:69 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:51 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:50 | ||||
| msgid "Tracer" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -491,7 +491,7 @@ msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/components/topbar.ex:68 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:85 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:94 | ||||
| msgid "Range" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -584,6 +584,7 @@ msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/components/move_ammo_group_component.ex:80 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:240 | ||||
| msgid "Move ammo" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -598,12 +599,12 @@ msgid "Shot log" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:48 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:125 | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:60 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:142 | ||||
| #: lib/cannery_web/live/ammo_group_live/show.html.heex:37 | ||||
| #: lib/cannery_web/live/ammo_group_live/show.html.heex:44 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:114 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:104 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:118 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:103 | ||||
| msgid "$%{amount}" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -615,35 +616,35 @@ msgstr "" | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:72 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:57 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:43 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:42 | ||||
| msgid "Jacket type" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:79 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:58 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:44 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:43 | ||||
| msgid "Muzzle velocity" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:93 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:61 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:46 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:45 | ||||
| msgid "Powder grains per charge" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:89 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:59 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:45 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:44 | ||||
| msgid "Powder type" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:152 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:74 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:56 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:55 | ||||
| msgid "UPC" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -664,19 +665,19 @@ msgid "New password" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:148 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:180 | ||||
| msgid "Stage" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:148 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:180 | ||||
| msgid "Unstage" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:125 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:68 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:50 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:49 | ||||
| msgid "Firing type" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -692,13 +693,13 @@ msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/container_live/index.ex:27 | ||||
| #: lib/cannery_web/live/container_live/show.ex:95 | ||||
| #: lib/cannery_web/live/container_live/show.ex:106 | ||||
| msgid "Edit %{name}" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/container_live/index.ex:46 | ||||
| #: lib/cannery_web/live/container_live/show.ex:96 | ||||
| #: lib/cannery_web/live/container_live/show.ex:107 | ||||
| msgid "Edit %{name} tags" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -709,18 +710,18 @@ msgid "Rounds:" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/container_live/show.ex:94 | ||||
| #: lib/cannery_web/live/container_live/show.ex:105 | ||||
| msgid "Show %{name}" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:113 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:110 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:117 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:109 | ||||
| msgid "No cost information" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:84 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:93 | ||||
| msgid "% left" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -750,7 +751,7 @@ msgid "Rounds used" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:75 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:74 | ||||
| msgid "Current # of rounds:" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -760,7 +761,7 @@ msgid "Total # of rounds" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:83 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:82 | ||||
| msgid "Total rounds shot:" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -806,14 +807,14 @@ msgid "Ammo types" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:87 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:96 | ||||
| msgid "Added on" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:41 | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:46 | ||||
| #: lib/cannery_web/live/ammo_group_live/show.html.heex:30 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:91 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:90 | ||||
| msgid "Added on:" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -882,7 +883,7 @@ msgid "Move Ammo" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/container_live/show.html.heex:90 | ||||
| #: lib/cannery_web/live/container_live/show.html.heex:98 | ||||
| msgid "No ammo in this container" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -917,3 +918,30 @@ msgstr "" | ||||
| #: lib/cannery_web/live/invite_live/form_component.html.heex:28 | ||||
| msgid "Leave \"Uses left\" blank to make invite unlimited" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:87 | ||||
| msgid "Total # of ammo" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:68 | ||||
| msgid "Container:" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/index.html.heex:52 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:119 | ||||
| #: lib/cannery_web/live/container_live/show.html.heex:90 | ||||
| msgid "Show used" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:101 | ||||
| msgid "Used up on" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:52 | ||||
| msgid "Used up on:" | ||||
| msgstr "" | ||||
|   | ||||
| @@ -157,7 +157,7 @@ msgid "Why not get some ready to shoot?" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:151 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:183 | ||||
| #: lib/cannery_web/live/ammo_group_live/show.html.heex:91 | ||||
| #: lib/cannery_web/live/range_live/index.html.heex:36 | ||||
| msgid "Record shots" | ||||
|   | ||||
| @@ -40,13 +40,13 @@ msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:21 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:81 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:90 | ||||
| msgid "Ammo type" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:87 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:100 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:88 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:99 | ||||
| msgid "Average Price paid" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -58,7 +58,7 @@ msgstr "" | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:140 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:71 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:53 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:52 | ||||
| msgid "Blank" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -70,42 +70,42 @@ msgstr "" | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:44 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:53 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:39 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:38 | ||||
| msgid "Bullet core" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:37 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:52 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:38 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:37 | ||||
| msgid "Bullet type" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:58 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:55 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:41 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:40 | ||||
| msgid "Caliber" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:51 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:54 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:40 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:39 | ||||
| msgid "Cartridge" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:65 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:56 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:42 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:41 | ||||
| msgid "Case material" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/components/move_ammo_group_component.ex:67 | ||||
| #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:48 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:86 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:95 | ||||
| msgid "Container" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -119,18 +119,18 @@ msgstr "" | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:144 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:72 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:54 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:53 | ||||
| msgid "Corrosive" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:27 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:82 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:91 | ||||
| msgid "Count" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:29 | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:34 | ||||
| #: lib/cannery_web/live/ammo_group_live/show.html.heex:8 | ||||
| msgid "Count:" | ||||
| msgstr "" | ||||
| @@ -164,7 +164,7 @@ msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:23 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.ex:45 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.ex:63 | ||||
| msgid "Edit Ammo type" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -196,14 +196,14 @@ msgstr "" | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:103 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:65 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:47 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:46 | ||||
| msgid "Grains" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:136 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:70 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:52 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:51 | ||||
| msgid "Incendiary" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -254,7 +254,7 @@ msgstr "" | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:148 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:73 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:55 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:54 | ||||
| msgid "Manufacturer" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -308,7 +308,7 @@ msgid "No Ammo Types" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:120 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:127 | ||||
| msgid "No ammo for this type" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -338,7 +338,7 @@ msgid "Notes" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:35 | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:40 | ||||
| #: lib/cannery_web/live/ammo_group_live/show.html.heex:24 | ||||
| msgid "Notes:" | ||||
| msgstr "" | ||||
| @@ -351,25 +351,25 @@ msgstr "" | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:111 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:66 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:48 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:47 | ||||
| msgid "Pressure" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:34 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:83 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:92 | ||||
| msgid "Price paid" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:47 | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:59 | ||||
| msgid "Price paid:" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:118 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:67 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:49 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:48 | ||||
| msgid "Primer type" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -400,7 +400,7 @@ msgid "Settings" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/show.ex:44 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.ex:62 | ||||
| msgid "Show Ammo type" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -444,7 +444,7 @@ msgstr "" | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:132 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:69 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:51 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:50 | ||||
| msgid "Tracer" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -492,7 +492,7 @@ msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/components/topbar.ex:68 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:85 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:94 | ||||
| msgid "Range" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -585,6 +585,7 @@ msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/components/move_ammo_group_component.ex:80 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:240 | ||||
| msgid "Move ammo" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -599,12 +600,12 @@ msgid "Shot log" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:48 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:125 | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:60 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:142 | ||||
| #: lib/cannery_web/live/ammo_group_live/show.html.heex:37 | ||||
| #: lib/cannery_web/live/ammo_group_live/show.html.heex:44 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:114 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:104 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:118 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:103 | ||||
| msgid "$%{amount}" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -616,35 +617,35 @@ msgstr "" | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:72 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:57 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:43 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:42 | ||||
| msgid "Jacket type" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:79 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:58 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:44 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:43 | ||||
| msgid "Muzzle velocity" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:93 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:61 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:46 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:45 | ||||
| msgid "Powder grains per charge" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:89 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:59 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:45 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:44 | ||||
| msgid "Powder type" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:152 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:74 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:56 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:55 | ||||
| msgid "UPC" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -665,19 +666,19 @@ msgid "New password" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:148 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:180 | ||||
| msgid "Stage" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:148 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:180 | ||||
| msgid "Unstage" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:125 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:68 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:50 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:49 | ||||
| msgid "Firing type" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -693,13 +694,13 @@ msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/container_live/index.ex:27 | ||||
| #: lib/cannery_web/live/container_live/show.ex:95 | ||||
| #: lib/cannery_web/live/container_live/show.ex:106 | ||||
| msgid "Edit %{name}" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/container_live/index.ex:46 | ||||
| #: lib/cannery_web/live/container_live/show.ex:96 | ||||
| #: lib/cannery_web/live/container_live/show.ex:107 | ||||
| msgid "Edit %{name} tags" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -710,18 +711,18 @@ msgid "Rounds:" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/container_live/show.ex:94 | ||||
| #: lib/cannery_web/live/container_live/show.ex:105 | ||||
| msgid "Show %{name}" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:113 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:110 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:117 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:109 | ||||
| msgid "No cost information" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:84 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:93 | ||||
| msgid "% left" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -751,7 +752,7 @@ msgid "Rounds used" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:75 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:74 | ||||
| msgid "Current # of rounds:" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -761,7 +762,7 @@ msgid "Total # of rounds" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:83 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:82 | ||||
| msgid "Total rounds shot:" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -807,14 +808,14 @@ msgid "Ammo types" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:87 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:96 | ||||
| msgid "Added on" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:41 | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:46 | ||||
| #: lib/cannery_web/live/ammo_group_live/show.html.heex:30 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:91 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:90 | ||||
| msgid "Added on:" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -883,7 +884,7 @@ msgid "Move Ammo" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format, fuzzy | ||||
| #: lib/cannery_web/live/container_live/show.html.heex:90 | ||||
| #: lib/cannery_web/live/container_live/show.html.heex:98 | ||||
| msgid "No ammo in this container" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -918,3 +919,30 @@ msgstr "" | ||||
| #: lib/cannery_web/live/invite_live/form_component.html.heex:28 | ||||
| msgid "Leave \"Uses left\" blank to make invite unlimited" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format, fuzzy | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:87 | ||||
| msgid "Total # of ammo" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format, fuzzy | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:68 | ||||
| msgid "Container:" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/index.html.heex:52 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:119 | ||||
| #: lib/cannery_web/live/container_live/show.html.heex:90 | ||||
| msgid "Show used" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:101 | ||||
| msgid "Used up on" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:52 | ||||
| msgid "Used up on:" | ||||
| msgstr "" | ||||
|   | ||||
| @@ -171,7 +171,7 @@ msgid "Invalid number of copies, must be between 1 and %{max}. Was %{multiplier} | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery/ammo.ex:407 | ||||
| #: lib/cannery/ammo.ex:535 | ||||
| msgid "Invalid multiplier" | ||||
| msgstr "" | ||||
|  | ||||
|   | ||||
| @@ -21,7 +21,7 @@ msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:41 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.ex:38 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.ex:28 | ||||
| #: lib/cannery_web/live/invite_live/index.ex:53 | ||||
| #: lib/cannery_web/live/invite_live/index.ex:133 | ||||
| #: lib/cannery_web/live/tag_live/index.ex:38 | ||||
| @@ -86,7 +86,7 @@ msgid "Are you sure you want to delete the invite for %{name}?" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:184 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:216 | ||||
| #: lib/cannery_web/live/ammo_group_live/show.html.heex:71 | ||||
| msgid "Are you sure you want to delete this ammo?" | ||||
| msgstr "" | ||||
| @@ -273,7 +273,7 @@ msgstr[0] "" | ||||
| msgstr[1] "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format, fuzzy | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:140 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:27 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:156 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:26 | ||||
| msgid "Are you sure you want to delete %{name}? This will delete all %{name} type ammo as well!" | ||||
| msgstr "" | ||||
|   | ||||
| @@ -170,7 +170,7 @@ msgid "Invalid number of copies, must be between 1 and %{max}. Was %{multiplier} | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery/ammo.ex:407 | ||||
| #: lib/cannery/ammo.ex:535 | ||||
| msgid "Invalid multiplier" | ||||
| msgstr "" | ||||
|  | ||||
|   | ||||
| @@ -169,7 +169,7 @@ msgid "Why not get some ready to shoot?" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:151 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:183 | ||||
| #: lib/cannery_web/live/ammo_group_live/show.html.heex:91 | ||||
| #: lib/cannery_web/live/range_live/index.html.heex:36 | ||||
| msgid "Record shots" | ||||
|   | ||||
| @@ -54,13 +54,13 @@ msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:21 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:81 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:90 | ||||
| msgid "Ammo type" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:87 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:100 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:88 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:99 | ||||
| msgid "Average Price paid" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -72,7 +72,7 @@ msgstr "" | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:140 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:71 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:53 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:52 | ||||
| msgid "Blank" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -84,42 +84,42 @@ msgstr "" | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:44 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:53 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:39 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:38 | ||||
| msgid "Bullet core" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:37 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:52 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:38 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:37 | ||||
| msgid "Bullet type" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:58 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:55 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:41 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:40 | ||||
| msgid "Caliber" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:51 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:54 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:40 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:39 | ||||
| msgid "Cartridge" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:65 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:56 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:42 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:41 | ||||
| msgid "Case material" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/components/move_ammo_group_component.ex:67 | ||||
| #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:48 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:86 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:95 | ||||
| msgid "Container" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -133,18 +133,18 @@ msgstr "" | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:144 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:72 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:54 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:53 | ||||
| msgid "Corrosive" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:27 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:82 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:91 | ||||
| msgid "Count" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:29 | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:34 | ||||
| #: lib/cannery_web/live/ammo_group_live/show.html.heex:8 | ||||
| msgid "Count:" | ||||
| msgstr "" | ||||
| @@ -178,7 +178,7 @@ msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:23 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.ex:45 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.ex:63 | ||||
| msgid "Edit Ammo type" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -210,14 +210,14 @@ msgstr "" | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:103 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:65 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:47 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:46 | ||||
| msgid "Grains" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:136 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:70 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:52 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:51 | ||||
| msgid "Incendiary" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -268,7 +268,7 @@ msgstr "" | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:148 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:73 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:55 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:54 | ||||
| msgid "Manufacturer" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -322,7 +322,7 @@ msgid "No Ammo Types" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:120 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:127 | ||||
| msgid "No ammo for this type" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -352,7 +352,7 @@ msgid "Notes" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:35 | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:40 | ||||
| #: lib/cannery_web/live/ammo_group_live/show.html.heex:24 | ||||
| msgid "Notes:" | ||||
| msgstr "" | ||||
| @@ -365,25 +365,25 @@ msgstr "" | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:111 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:66 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:48 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:47 | ||||
| msgid "Pressure" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:34 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:83 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:92 | ||||
| msgid "Price paid" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:47 | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:59 | ||||
| msgid "Price paid:" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:118 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:67 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:49 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:48 | ||||
| msgid "Primer type" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -414,7 +414,7 @@ msgid "Settings" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/show.ex:44 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.ex:62 | ||||
| msgid "Show Ammo type" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -458,7 +458,7 @@ msgstr "" | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:132 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:69 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:51 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:50 | ||||
| msgid "Tracer" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -506,7 +506,7 @@ msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/components/topbar.ex:68 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:85 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:94 | ||||
| msgid "Range" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -599,6 +599,7 @@ msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/components/move_ammo_group_component.ex:80 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:240 | ||||
| msgid "Move ammo" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -613,12 +614,12 @@ msgid "Shot log" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:48 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:125 | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:60 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:142 | ||||
| #: lib/cannery_web/live/ammo_group_live/show.html.heex:37 | ||||
| #: lib/cannery_web/live/ammo_group_live/show.html.heex:44 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:114 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:104 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:118 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:103 | ||||
| msgid "$%{amount}" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -630,35 +631,35 @@ msgstr "" | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:72 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:57 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:43 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:42 | ||||
| msgid "Jacket type" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:79 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:58 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:44 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:43 | ||||
| msgid "Muzzle velocity" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:93 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:61 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:46 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:45 | ||||
| msgid "Powder grains per charge" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:89 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:59 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:45 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:44 | ||||
| msgid "Powder type" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:152 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:74 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:56 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:55 | ||||
| msgid "UPC" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -679,19 +680,19 @@ msgid "New password" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:148 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:180 | ||||
| msgid "Stage" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:148 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:180 | ||||
| msgid "Unstage" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:125 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:68 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:50 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:49 | ||||
| msgid "Firing type" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -707,13 +708,13 @@ msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/container_live/index.ex:27 | ||||
| #: lib/cannery_web/live/container_live/show.ex:95 | ||||
| #: lib/cannery_web/live/container_live/show.ex:106 | ||||
| msgid "Edit %{name}" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/container_live/index.ex:46 | ||||
| #: lib/cannery_web/live/container_live/show.ex:96 | ||||
| #: lib/cannery_web/live/container_live/show.ex:107 | ||||
| msgid "Edit %{name} tags" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -724,18 +725,18 @@ msgid "Rounds:" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/container_live/show.ex:94 | ||||
| #: lib/cannery_web/live/container_live/show.ex:105 | ||||
| msgid "Show %{name}" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:113 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:110 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:117 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:109 | ||||
| msgid "No cost information" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:84 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:93 | ||||
| msgid "% left" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -765,7 +766,7 @@ msgid "Rounds used" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:75 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:74 | ||||
| msgid "Current # of rounds:" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -775,7 +776,7 @@ msgid "Total # of rounds" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:83 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:82 | ||||
| msgid "Total rounds shot:" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -821,14 +822,14 @@ msgid "Ammo types" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:87 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:96 | ||||
| msgid "Added on" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:41 | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:46 | ||||
| #: lib/cannery_web/live/ammo_group_live/show.html.heex:30 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:91 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:90 | ||||
| msgid "Added on:" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -897,7 +898,7 @@ msgid "Move Ammo" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format, fuzzy | ||||
| #: lib/cannery_web/live/container_live/show.html.heex:90 | ||||
| #: lib/cannery_web/live/container_live/show.html.heex:98 | ||||
| msgid "No ammo in this container" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -932,3 +933,30 @@ msgstr "" | ||||
| #: lib/cannery_web/live/invite_live/form_component.html.heex:28 | ||||
| msgid "Leave \"Uses left\" blank to make invite unlimited" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format, fuzzy | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:87 | ||||
| msgid "Total # of ammo" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format, fuzzy | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:68 | ||||
| msgid "Container:" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/index.html.heex:52 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:119 | ||||
| #: lib/cannery_web/live/container_live/show.html.heex:90 | ||||
| msgid "Show used" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:101 | ||||
| msgid "Used up on" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:52 | ||||
| msgid "Used up on:" | ||||
| msgstr "" | ||||
|   | ||||
| @@ -186,7 +186,7 @@ msgid "Invalid number of copies, must be between 1 and %{max}. Was %{multiplier} | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery/ammo.ex:407 | ||||
| #: lib/cannery/ammo.ex:535 | ||||
| msgid "Invalid multiplier" | ||||
| msgstr "" | ||||
|  | ||||
|   | ||||
| @@ -33,7 +33,7 @@ msgstr "%{name} creado exitosamente" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:41 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.ex:38 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.ex:28 | ||||
| #: lib/cannery_web/live/invite_live/index.ex:53 | ||||
| #: lib/cannery_web/live/invite_live/index.ex:133 | ||||
| #: lib/cannery_web/live/tag_live/index.ex:38 | ||||
| @@ -100,7 +100,7 @@ msgid "Are you sure you want to delete the invite for %{name}?" | ||||
| msgstr "Está seguro que quiere eliminar la invitación para %{name}?" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:184 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:216 | ||||
| #: lib/cannery_web/live/ammo_group_live/show.html.heex:71 | ||||
| msgid "Are you sure you want to delete this ammo?" | ||||
| msgstr "Está seguro que desea eliminar esta munición?" | ||||
| @@ -292,7 +292,7 @@ msgstr[0] "" | ||||
| msgstr[1] "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format, fuzzy | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:140 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:27 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:156 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:26 | ||||
| msgid "Are you sure you want to delete %{name}? This will delete all %{name} type ammo as well!" | ||||
| msgstr "" | ||||
|   | ||||
| @@ -169,7 +169,7 @@ msgid "Why not get some ready to shoot?" | ||||
| msgstr "Pourquoi pas en préparer pour tirer ?" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:151 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:183 | ||||
| #: lib/cannery_web/live/ammo_group_live/show.html.heex:91 | ||||
| #: lib/cannery_web/live/range_live/index.html.heex:36 | ||||
| msgid "Record shots" | ||||
|   | ||||
| @@ -54,13 +54,13 @@ msgstr "Munition" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:21 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:81 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:90 | ||||
| msgid "Ammo type" | ||||
| msgstr "Type de munition" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:87 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:100 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:88 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:99 | ||||
| msgid "Average Price paid" | ||||
| msgstr "Prix acheté moyen" | ||||
|  | ||||
| @@ -72,7 +72,7 @@ msgstr "Couleur de fond" | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:140 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:71 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:53 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:52 | ||||
| msgid "Blank" | ||||
| msgstr "Vide" | ||||
|  | ||||
| @@ -84,42 +84,42 @@ msgstr "Cuivre" | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:44 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:53 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:39 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:38 | ||||
| msgid "Bullet core" | ||||
| msgstr "Noyau de balle" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:37 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:52 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:38 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:37 | ||||
| msgid "Bullet type" | ||||
| msgstr "Type de balle" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:58 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:55 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:41 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:40 | ||||
| msgid "Caliber" | ||||
| msgstr "Calibre" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:51 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:54 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:40 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:39 | ||||
| msgid "Cartridge" | ||||
| msgstr "Cartouche" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:65 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:56 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:42 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:41 | ||||
| msgid "Case material" | ||||
| msgstr "Matériau de la caisse" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/components/move_ammo_group_component.ex:67 | ||||
| #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:48 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:86 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:95 | ||||
| msgid "Container" | ||||
| msgstr "Conteneur" | ||||
|  | ||||
| @@ -133,18 +133,18 @@ msgstr "Conteneurs" | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:144 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:72 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:54 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:53 | ||||
| msgid "Corrosive" | ||||
| msgstr "Corrosive" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:27 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:82 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:91 | ||||
| msgid "Count" | ||||
| msgstr "Quantité" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:29 | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:34 | ||||
| #: lib/cannery_web/live/ammo_group_live/show.html.heex:8 | ||||
| msgid "Count:" | ||||
| msgstr "Quantité :" | ||||
| @@ -178,7 +178,7 @@ msgstr "Éditer le groupe de munition" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:23 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.ex:45 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.ex:63 | ||||
| msgid "Edit Ammo type" | ||||
| msgstr "Éditer le type de munition" | ||||
|  | ||||
| @@ -210,14 +210,14 @@ msgstr "FMJ" | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:103 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:65 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:47 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:46 | ||||
| msgid "Grains" | ||||
| msgstr "Graines" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:136 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:70 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:52 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:51 | ||||
| msgid "Incendiary" | ||||
| msgstr "Incendiaire" | ||||
|  | ||||
| @@ -268,7 +268,7 @@ msgstr "Chargeur, lame-chargeur, boite de munition, etc." | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:148 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:73 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:55 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:54 | ||||
| msgid "Manufacturer" | ||||
| msgstr "Fabricant" | ||||
|  | ||||
| @@ -322,7 +322,7 @@ msgid "No Ammo Types" | ||||
| msgstr "Aucun type de munition" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:120 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:127 | ||||
| msgid "No ammo for this type" | ||||
| msgstr "Aucune munition pour ce type" | ||||
|  | ||||
| @@ -352,7 +352,7 @@ msgid "Notes" | ||||
| msgstr "Notes" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:35 | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:40 | ||||
| #: lib/cannery_web/live/ammo_group_live/show.html.heex:24 | ||||
| msgid "Notes:" | ||||
| msgstr "Notes :" | ||||
| @@ -365,25 +365,25 @@ msgstr "Sur l’étagère" | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:111 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:66 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:48 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:47 | ||||
| msgid "Pressure" | ||||
| msgstr "Pression" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:34 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:83 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:92 | ||||
| msgid "Price paid" | ||||
| msgstr "Prix payé" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:47 | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:59 | ||||
| msgid "Price paid:" | ||||
| msgstr "Prix payé :" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:118 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:67 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:49 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:48 | ||||
| msgid "Primer type" | ||||
| msgstr "Type d’amorce" | ||||
|  | ||||
| @@ -416,7 +416,7 @@ msgid "Settings" | ||||
| msgstr "Paramètres" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/show.ex:44 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.ex:62 | ||||
| msgid "Show Ammo type" | ||||
| msgstr "Montrer le type de munition" | ||||
|  | ||||
| @@ -462,7 +462,7 @@ msgstr "Le site web de suivi d’arme à feux auto-hébergé" | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:132 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:69 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:51 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:50 | ||||
| msgid "Tracer" | ||||
| msgstr "Traceuse" | ||||
|  | ||||
| @@ -510,7 +510,7 @@ msgstr "Aucun tag pour ce conteneur" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/components/topbar.ex:68 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:85 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:94 | ||||
| msgid "Range" | ||||
| msgstr "Portée" | ||||
|  | ||||
| @@ -603,6 +603,7 @@ msgstr "Déplacer le groupe de munition" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/components/move_ammo_group_component.ex:80 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:240 | ||||
| msgid "Move ammo" | ||||
| msgstr "Déplacer munition" | ||||
|  | ||||
| @@ -617,12 +618,12 @@ msgid "Shot log" | ||||
| msgstr "Évènements de tir" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:48 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:125 | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:60 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:142 | ||||
| #: lib/cannery_web/live/ammo_group_live/show.html.heex:37 | ||||
| #: lib/cannery_web/live/ammo_group_live/show.html.heex:44 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:114 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:104 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:118 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:103 | ||||
| msgid "$%{amount}" | ||||
| msgstr "%{amount} $" | ||||
|  | ||||
| @@ -634,35 +635,35 @@ msgstr "Bi-métal" | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:72 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:57 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:43 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:42 | ||||
| msgid "Jacket type" | ||||
| msgstr "Type de douille" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:79 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:58 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:44 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:43 | ||||
| msgid "Muzzle velocity" | ||||
| msgstr "Vélocité du canon" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:93 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:61 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:46 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:45 | ||||
| msgid "Powder grains per charge" | ||||
| msgstr "Graines de poudre par charge" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:89 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:59 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:45 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:44 | ||||
| msgid "Powder type" | ||||
| msgstr "Type de poudre" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:152 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:74 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:56 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:55 | ||||
| msgid "UPC" | ||||
| msgstr "UPC" | ||||
|  | ||||
| @@ -683,19 +684,19 @@ msgid "New password" | ||||
| msgstr "Nouveau mot de passe" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:148 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:180 | ||||
| msgid "Stage" | ||||
| msgstr "Sélectionné" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:148 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:180 | ||||
| msgid "Unstage" | ||||
| msgstr "Désélectionner" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:125 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:68 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:50 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:49 | ||||
| msgid "Firing type" | ||||
| msgstr "Type d’allumage" | ||||
|  | ||||
| @@ -711,13 +712,13 @@ msgstr "Chargement en cours…" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/container_live/index.ex:27 | ||||
| #: lib/cannery_web/live/container_live/show.ex:95 | ||||
| #: lib/cannery_web/live/container_live/show.ex:106 | ||||
| msgid "Edit %{name}" | ||||
| msgstr "Éditer %{name}" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/container_live/index.ex:46 | ||||
| #: lib/cannery_web/live/container_live/show.ex:96 | ||||
| #: lib/cannery_web/live/container_live/show.ex:107 | ||||
| msgid "Edit %{name} tags" | ||||
| msgstr "Éditer les tags de %{name}" | ||||
|  | ||||
| @@ -728,18 +729,18 @@ msgid "Rounds:" | ||||
| msgstr "Cartouches :" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/container_live/show.ex:94 | ||||
| #: lib/cannery_web/live/container_live/show.ex:105 | ||||
| msgid "Show %{name}" | ||||
| msgstr "Montrer %{name}" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:113 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:110 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:117 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:109 | ||||
| msgid "No cost information" | ||||
| msgstr "Aucune information de prix" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:84 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:93 | ||||
| msgid "% left" | ||||
| msgstr "% restante" | ||||
|  | ||||
| @@ -769,7 +770,7 @@ msgid "Rounds used" | ||||
| msgstr "Cartouches utilisées" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:75 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:74 | ||||
| msgid "Current # of rounds:" | ||||
| msgstr "Quantité actuelle de cartouches :" | ||||
|  | ||||
| @@ -779,7 +780,7 @@ msgid "Total # of rounds" | ||||
| msgstr "Quantité de cartouches" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:83 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:82 | ||||
| msgid "Total rounds shot:" | ||||
| msgstr "Nombre totale de cartouches tirées :" | ||||
|  | ||||
| @@ -825,14 +826,14 @@ msgid "Ammo types" | ||||
| msgstr "Types de munition" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:87 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:96 | ||||
| msgid "Added on" | ||||
| msgstr "Ajouté le" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:41 | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:46 | ||||
| #: lib/cannery_web/live/ammo_group_live/show.html.heex:30 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:91 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:90 | ||||
| msgid "Added on:" | ||||
| msgstr "Ajouté le :" | ||||
|  | ||||
| @@ -901,7 +902,7 @@ msgid "Move Ammo" | ||||
| msgstr "Déplacer munition" | ||||
|  | ||||
| #, elixir-autogen, elixir-format, fuzzy | ||||
| #: lib/cannery_web/live/container_live/show.html.heex:90 | ||||
| #: lib/cannery_web/live/container_live/show.html.heex:98 | ||||
| msgid "No ammo in this container" | ||||
| msgstr "Aucun groupe de munition pour ce conteneur" | ||||
|  | ||||
| @@ -936,3 +937,30 @@ msgstr "" | ||||
| #: lib/cannery_web/live/invite_live/form_component.html.heex:28 | ||||
| msgid "Leave \"Uses left\" blank to make invite unlimited" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format, fuzzy | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:87 | ||||
| msgid "Total # of ammo" | ||||
| msgstr "Quantité de cartouches" | ||||
|  | ||||
| #, elixir-autogen, elixir-format, fuzzy | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:68 | ||||
| msgid "Container:" | ||||
| msgstr "Conteneur" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/index.html.heex:52 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:119 | ||||
| #: lib/cannery_web/live/container_live/show.html.heex:90 | ||||
| msgid "Show used" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:101 | ||||
| msgid "Used up on" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/components/ammo_group_card.ex:52 | ||||
| msgid "Used up on:" | ||||
| msgstr "" | ||||
|   | ||||
| @@ -187,7 +187,7 @@ msgid "Invalid number of copies, must be between 1 and %{max}. Was %{multiplier} | ||||
| msgstr "Nombre de copies invalide, doit être 1 et %{max}. Été %{multiplier}" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery/ammo.ex:407 | ||||
| #: lib/cannery/ammo.ex:535 | ||||
| msgid "Invalid multiplier" | ||||
| msgstr "" | ||||
|  | ||||
|   | ||||
| @@ -33,7 +33,7 @@ msgstr "%{name} créé· avec succès" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:41 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.ex:38 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.ex:28 | ||||
| #: lib/cannery_web/live/invite_live/index.ex:53 | ||||
| #: lib/cannery_web/live/invite_live/index.ex:133 | ||||
| #: lib/cannery_web/live/tag_live/index.ex:38 | ||||
| @@ -101,7 +101,7 @@ msgid "Are you sure you want to delete the invite for %{name}?" | ||||
| msgstr "Êtes-vous certain·e de supprimer l’invitation pour %{name} ?" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:184 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:216 | ||||
| #: lib/cannery_web/live/ammo_group_live/show.html.heex:71 | ||||
| msgid "Are you sure you want to delete this ammo?" | ||||
| msgstr "Êtes-vous certain·e de supprimer cette munition ?" | ||||
| @@ -294,7 +294,7 @@ msgstr[0] "Groupe de munition mis à jour avec succès" | ||||
| msgstr[1] "Groupe de munition mis à jour avec succès" | ||||
|  | ||||
| #, elixir-autogen, elixir-format, fuzzy | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:140 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:27 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:156 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:26 | ||||
| msgid "Are you sure you want to delete %{name}? This will delete all %{name} type ammo as well!" | ||||
| msgstr "Êtes-vous certain·e de supprimer %{name} ?" | ||||
|   | ||||
| @@ -20,7 +20,7 @@ msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:41 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.ex:38 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.ex:28 | ||||
| #: lib/cannery_web/live/invite_live/index.ex:53 | ||||
| #: lib/cannery_web/live/invite_live/index.ex:133 | ||||
| #: lib/cannery_web/live/tag_live/index.ex:38 | ||||
| @@ -85,7 +85,7 @@ msgid "Are you sure you want to delete the invite for %{name}?" | ||||
| msgstr "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:184 | ||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:216 | ||||
| #: lib/cannery_web/live/ammo_group_live/show.html.heex:71 | ||||
| msgid "Are you sure you want to delete this ammo?" | ||||
| msgstr "" | ||||
| @@ -272,7 +272,7 @@ msgstr[0] "" | ||||
| msgstr[1] "" | ||||
|  | ||||
| #, elixir-autogen, elixir-format | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:140 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:27 | ||||
| #: lib/cannery_web/live/ammo_type_live/index.ex:156 | ||||
| #: lib/cannery_web/live/ammo_type_live/show.html.heex:26 | ||||
| msgid "Are you sure you want to delete %{name}? This will delete all %{name} type ammo as well!" | ||||
| msgstr "" | ||||
|   | ||||
		Reference in New Issue
	
	Block a user