add selectable ammo types
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
shibao 2023-03-23 22:07:25 -04:00
parent d9251c7e4c
commit 8c95536ffd
56 changed files with 4306 additions and 2077 deletions

View File

@ -1,5 +1,9 @@
# v0.9.0 # v0.9.0
- Add length limits to all string fields - Add length limits to all string fields
- Add selectable ammo types
- Improve onboarding experience slightly
- Remove show used view from a container since it doesn't really make that much
sense
# v0.8.6 # v0.8.6
- Fix duplicate entries showing up - Fix duplicate entries showing up

View File

@ -6,65 +6,92 @@ defmodule Cannery.ActivityLog do
import Ecto.Query, warn: false import Ecto.Query, warn: false
alias Cannery.Ammo.{AmmoGroup, AmmoType} alias Cannery.Ammo.{AmmoGroup, AmmoType}
alias Cannery.{Accounts.User, ActivityLog.ShotGroup, Repo} alias Cannery.{Accounts.User, ActivityLog.ShotGroup, Repo}
alias Ecto.Multi alias Ecto.{Multi, Queryable}
@doc """ @doc """
Returns the list of shot_groups. Returns the list of shot_groups.
## Examples ## Examples
iex> list_shot_groups(%User{id: 123}) iex> list_shot_groups(:all, %User{id: 123})
[%ShotGroup{}, ...] [%ShotGroup{}, ...]
iex> list_shot_groups("cool", %User{id: 123}) iex> list_shot_groups("cool", :all, %User{id: 123})
[%ShotGroup{notes: "My cool shot group"}, ...] [%ShotGroup{notes: "My cool shot group"}, ...]
iex> list_shot_groups("cool", :rifle, %User{id: 123})
[%ShotGroup{notes: "Shot some rifle rounds"}, ...]
""" """
@spec list_shot_groups(User.t()) :: [ShotGroup.t()] @spec list_shot_groups(AmmoType.type() | :all, User.t()) :: [ShotGroup.t()]
@spec list_shot_groups(search :: nil | String.t(), User.t()) :: [ShotGroup.t()] @spec list_shot_groups(search :: nil | String.t(), AmmoType.type() | :all, User.t()) ::
def list_shot_groups(search \\ nil, user) [ShotGroup.t()]
def list_shot_groups(search \\ nil, type, %{id: user_id}) do
from(sg in ShotGroup,
as: :sg,
left_join: ag in AmmoGroup,
as: :ag,
on: sg.ammo_group_id == ag.id,
left_join: at in AmmoType,
as: :at,
on: ag.ammo_type_id == at.id,
where: sg.user_id == ^user_id,
distinct: sg.id
)
|> list_shot_groups_search(search)
|> list_shot_groups_filter_type(type)
|> Repo.all()
end
def list_shot_groups(search, %{id: user_id}) when search |> is_nil() or search == "", @spec list_shot_groups_search(Queryable.t(), search :: String.t() | nil) ::
do: Repo.all(from sg in ShotGroup, where: sg.user_id == ^user_id) Queryable.t()
defp list_shot_groups_search(query, search) when search in ["", nil], do: query
def list_shot_groups(search, %{id: user_id}) when search |> is_binary() do defp list_shot_groups_search(query, search) when search |> is_binary() do
trimmed_search = String.trim(search) trimmed_search = String.trim(search)
Repo.all( query
from sg in ShotGroup, |> where(
left_join: ag in AmmoGroup, [sg: sg, ag: ag, at: at],
on: sg.ammo_group_id == ag.id, fragment(
left_join: at in AmmoType, "? @@ websearch_to_tsquery('english', ?)",
on: ag.ammo_type_id == at.id, sg.search,
where: sg.user_id == ^user_id, ^trimmed_search
where: ) or
fragment( fragment(
"? @@ websearch_to_tsquery('english', ?)", "? @@ websearch_to_tsquery('english', ?)",
sg.search, ag.search,
^trimmed_search ^trimmed_search
) or ) or
fragment( fragment(
"? @@ websearch_to_tsquery('english', ?)", "? @@ websearch_to_tsquery('english', ?)",
ag.search, at.search,
^trimmed_search ^trimmed_search
) or )
fragment(
"? @@ websearch_to_tsquery('english', ?)",
at.search,
^trimmed_search
),
order_by: {
:desc,
fragment(
"ts_rank_cd(?, websearch_to_tsquery('english', ?), 4)",
sg.search,
^trimmed_search
)
},
distinct: sg.id
) )
|> order_by([sg: sg], {
:desc,
fragment(
"ts_rank_cd(?, websearch_to_tsquery('english', ?), 4)",
sg.search,
^trimmed_search
)
})
end end
@spec list_shot_groups_filter_type(Queryable.t(), AmmoType.type() | :all) ::
Queryable.t()
defp list_shot_groups_filter_type(query, :rifle),
do: query |> where([at: at], at.type == :rifle)
defp list_shot_groups_filter_type(query, :pistol),
do: query |> where([at: at], at.type == :pistol)
defp list_shot_groups_filter_type(query, :shotgun),
do: query |> where([at: at], at.type == :shotgun)
defp list_shot_groups_filter_type(query, _all), do: query
@spec list_shot_groups_for_ammo_group(AmmoGroup.t(), User.t()) :: [ShotGroup.t()] @spec list_shot_groups_for_ammo_group(AmmoGroup.t(), User.t()) :: [ShotGroup.t()]
def list_shot_groups_for_ammo_group( def list_shot_groups_for_ammo_group(
%AmmoGroup{id: ammo_group_id, user_id: user_id}, %AmmoGroup{id: ammo_group_id, user_id: user_id},

View File

@ -9,7 +9,7 @@ defmodule Cannery.Ammo do
alias Cannery.Containers.{Container, ContainerTag, Tag} alias Cannery.Containers.{Container, ContainerTag, Tag}
alias Cannery.{ActivityLog, ActivityLog.ShotGroup} alias Cannery.{ActivityLog, ActivityLog.ShotGroup}
alias Cannery.Ammo.{AmmoGroup, AmmoType} alias Cannery.Ammo.{AmmoGroup, AmmoType}
alias Ecto.Changeset alias Ecto.{Changeset, Queryable}
@ammo_group_create_limit 10_000 @ammo_group_create_limit 10_000
@ammo_group_preloads [:ammo_type] @ammo_group_preloads [:ammo_type]
@ -20,50 +20,69 @@ defmodule Cannery.Ammo do
## Examples ## Examples
iex> list_ammo_types(%User{id: 123}) iex> list_ammo_types(%User{id: 123}, :all)
[%AmmoType{}, ...] [%AmmoType{}, ...]
iex> list_ammo_types("cool", %User{id: 123}) iex> list_ammo_types("cool", %User{id: 123}, :shotgun)
[%AmmoType{name: "My cool ammo type"}, ...] [%AmmoType{name: "My cool ammo type", type: :shotgun}, ...]
""" """
@spec list_ammo_types(User.t()) :: [AmmoType.t()] @spec list_ammo_types(User.t(), AmmoType.type() | :all) :: [AmmoType.t()]
@spec list_ammo_types(search :: nil | String.t(), User.t()) :: [AmmoType.t()] @spec list_ammo_types(search :: nil | String.t(), User.t(), AmmoType.type() | :all) ::
def list_ammo_types(search \\ nil, user) [AmmoType.t()]
def list_ammo_types(search \\ nil, user, type)
def list_ammo_types(search, %{id: user_id}) when search |> is_nil() or search == "" do def list_ammo_types(search, %{id: user_id}, type) do
Repo.all( from(at in AmmoType,
from at in AmmoType, as: :at,
where: at.user_id == ^user_id, where: at.user_id == ^user_id,
order_by: at.name, preload: ^@ammo_type_preloads
preload: ^@ammo_type_preloads
) )
|> list_ammo_types_filter_type(type)
|> list_ammo_types_filter_search(search)
|> Repo.all()
end end
def list_ammo_types(search, %{id: user_id}) when search |> is_binary() do @spec list_ammo_types_filter_search(Queryable.t(), search :: String.t() | nil) :: Queryable.t()
defp list_ammo_types_filter_search(query, search) when search in ["", nil],
do: query |> order_by([at: at], at.name)
defp list_ammo_types_filter_search(query, search) when search |> is_binary() do
trimmed_search = String.trim(search) trimmed_search = String.trim(search)
Repo.all( query
from at in AmmoType, |> where(
where: at.user_id == ^user_id, [at: at],
where: fragment(
fragment( "? @@ websearch_to_tsquery('english', ?)",
"? @@ websearch_to_tsquery('english', ?)", at.search,
at.search, ^trimmed_search
^trimmed_search )
), )
order_by: { |> order_by(
:desc, [at: at],
fragment( {
"ts_rank_cd(?, websearch_to_tsquery('english', ?), 4)", :desc,
at.search, fragment(
^trimmed_search "ts_rank_cd(?, websearch_to_tsquery('english', ?), 4)",
) at.search,
}, ^trimmed_search
preload: ^@ammo_type_preloads )
}
) )
end end
@spec list_ammo_types_filter_type(Queryable.t(), AmmoType.type() | :all) :: Queryable.t()
defp list_ammo_types_filter_type(query, :rifle), do: query |> where([at: at], at.type == :rifle)
defp list_ammo_types_filter_type(query, :pistol),
do: query |> where([at: at], at.type == :pistol)
defp list_ammo_types_filter_type(query, :shotgun),
do: query |> where([at: at], at.type == :shotgun)
defp list_ammo_types_filter_type(query, _all), do: query
@doc """ @doc """
Returns a count of ammo_types. Returns a count of ammo_types.
@ -80,7 +99,7 @@ defmodule Cannery.Ammo do
where: at.user_id == ^user_id, where: at.user_id == ^user_id,
select: count(at.id), select: count(at.id),
distinct: true distinct: true
) ) || 0
end end
@doc """ @doc """
@ -375,36 +394,31 @@ defmodule Cannery.Ammo do
""" """
@spec list_ammo_groups_for_type(AmmoType.t(), User.t()) :: [AmmoGroup.t()] @spec list_ammo_groups_for_type(AmmoType.t(), User.t()) :: [AmmoGroup.t()]
@spec list_ammo_groups_for_type(AmmoType.t(), User.t(), include_empty :: boolean()) :: @spec list_ammo_groups_for_type(AmmoType.t(), User.t(), show_used :: boolean()) ::
[AmmoGroup.t()] [AmmoGroup.t()]
def list_ammo_groups_for_type(ammo_type, user, include_empty \\ false) def list_ammo_groups_for_type(ammo_type, user, show_used \\ false)
def list_ammo_groups_for_type( def list_ammo_groups_for_type(
%AmmoType{id: ammo_type_id, user_id: user_id}, %AmmoType{id: ammo_type_id, user_id: user_id},
%User{id: user_id}, %User{id: user_id},
true = _include_empty show_used
) do ) do
Repo.all( from(ag in AmmoGroup,
from ag in AmmoGroup, as: :ag,
where: ag.ammo_type_id == ^ammo_type_id, where: ag.ammo_type_id == ^ammo_type_id,
where: ag.user_id == ^user_id, where: ag.user_id == ^user_id,
preload: ^@ammo_group_preloads preload: ^@ammo_group_preloads
) )
|> list_ammo_groups_for_type_show_used(show_used)
|> Repo.all()
end end
def list_ammo_groups_for_type( @spec list_ammo_groups_for_type_show_used(Queryable.t(), show_used :: boolean()) ::
%AmmoType{id: ammo_type_id, user_id: user_id}, Queryable.t()
%User{id: user_id}, def list_ammo_groups_for_type_show_used(query, false),
false = _include_empty do: query |> where([ag: ag], ag.count > 0)
) do
Repo.all( def list_ammo_groups_for_type_show_used(query, _true), do: query
from ag in AmmoGroup,
where: ag.ammo_type_id == ^ammo_type_id,
where: ag.user_id == ^user_id,
where: not (ag.count == 0),
preload: ^@ammo_group_preloads
)
end
@doc """ @doc """
Returns the list of ammo_groups for a user and container. Returns the list of ammo_groups for a user and container.
@ -413,50 +427,86 @@ defmodule Cannery.Ammo do
iex> list_ammo_groups_for_container( iex> list_ammo_groups_for_container(
...> %Container{id: 123, user_id: 456}, ...> %Container{id: 123, user_id: 456},
...> :rifle,
...> %User{id: 456} ...> %User{id: 456}
...> ) ...> )
[%AmmoGroup{}, ...] [%AmmoGroup{}, ...]
iex> list_ammo_groups_for_container( iex> list_ammo_groups_for_container(
...> %Container{id: 123, user_id: 456}, ...> %Container{id: 123, user_id: 456},
...> %User{id: 456}, ...> :all,
...> true ...> %User{id: 456}
...> ) ...> )
[%AmmoGroup{}, %AmmoGroup{}, ...] [%AmmoGroup{}, %AmmoGroup{}, ...]
""" """
@spec list_ammo_groups_for_container(Container.t(), User.t()) :: [AmmoGroup.t()] @spec list_ammo_groups_for_container(
@spec list_ammo_groups_for_container(Container.t(), User.t(), include_empty :: boolean()) :: Container.t(),
[AmmoGroup.t()] AmmoType.t() | :all,
def list_ammo_groups_for_container(container, user, include_empty \\ false) User.t()
) :: [AmmoGroup.t()]
def list_ammo_groups_for_container( def list_ammo_groups_for_container(
%Container{id: container_id, user_id: user_id}, %Container{id: container_id, user_id: user_id},
%User{id: user_id}, type,
true = _include_empty %User{id: user_id}
) do ) do
Repo.all( from(ag in AmmoGroup,
from ag in AmmoGroup, as: :ag,
where: ag.container_id == ^container_id, join: at in assoc(ag, :ammo_type),
where: ag.user_id == ^user_id, as: :at,
preload: ^@ammo_group_preloads where: ag.container_id == ^container_id,
where: ag.user_id == ^user_id,
where: ag.count > 0,
preload: ^@ammo_group_preloads
) )
|> list_ammo_groups_for_container_filter_type(type)
|> Repo.all()
end end
def list_ammo_groups_for_container( @spec list_ammo_groups_for_container_filter_type(Queryable.t(), AmmoType.type() | :all) ::
%Container{id: container_id, user_id: user_id}, Queryable.t()
%User{id: user_id}, defp list_ammo_groups_for_container_filter_type(query, :rifle),
false = _include_empty do: query |> where([at: at], at.type == :rifle)
) do
Repo.all( defp list_ammo_groups_for_container_filter_type(query, :pistol),
from ag in AmmoGroup, do: query |> where([at: at], at.type == :pistol)
where: ag.container_id == ^container_id,
where: ag.user_id == ^user_id, defp list_ammo_groups_for_container_filter_type(query, :shotgun),
where: not (ag.count == 0), do: query |> where([at: at], at.type == :shotgun)
preload: ^@ammo_group_preloads
defp list_ammo_groups_for_container_filter_type(query, _all), do: query
@doc """
Returns a count of ammo_groups.
## Examples
iex> get_ammo_groups_count!(%User{id: 123})
3
iex> get_ammo_groups_count!(%User{id: 123}, true)
4
"""
@spec get_ammo_groups_count!(User.t()) :: integer()
@spec get_ammo_groups_count!(User.t(), show_used :: boolean()) :: integer()
def get_ammo_groups_count!(%User{id: user_id}, show_used \\ false) do
from(ag in AmmoGroup,
as: :ag,
where: ag.user_id == ^user_id,
select: count(ag.id),
distinct: true
) )
|> get_ammo_groups_count_show_used(show_used)
|> Repo.one() || 0
end end
@spec get_ammo_groups_count_show_used(Queryable.t(), show_used :: boolean()) :: Queryable.t()
defp get_ammo_groups_count_show_used(query, false),
do: query |> where([ag: ag], ag.count > 0)
defp get_ammo_groups_count_show_used(query, _true), do: query
@doc """ @doc """
Returns the count of ammo_groups for an ammo type. Returns the count of ammo_groups for an ammo type.
@ -477,15 +527,15 @@ defmodule Cannery.Ammo do
""" """
@spec get_ammo_groups_count_for_type(AmmoType.t(), User.t()) :: non_neg_integer() @spec get_ammo_groups_count_for_type(AmmoType.t(), User.t()) :: non_neg_integer()
@spec get_ammo_groups_count_for_type(AmmoType.t(), User.t(), include_empty :: boolean()) :: @spec get_ammo_groups_count_for_type(AmmoType.t(), User.t(), show_used :: boolean()) ::
non_neg_integer() non_neg_integer()
def get_ammo_groups_count_for_type( def get_ammo_groups_count_for_type(
%AmmoType{id: ammo_type_id} = ammo_type, %AmmoType{id: ammo_type_id} = ammo_type,
user, user,
include_empty \\ false show_used \\ false
) do ) do
[ammo_type] [ammo_type]
|> get_ammo_groups_count_for_types(user, include_empty) |> get_ammo_groups_count_for_types(user, show_used)
|> Map.get(ammo_type_id, 0) |> Map.get(ammo_type_id, 0)
end end
@ -510,28 +560,31 @@ defmodule Cannery.Ammo do
""" """
@spec get_ammo_groups_count_for_types([AmmoType.t()], User.t()) :: @spec get_ammo_groups_count_for_types([AmmoType.t()], User.t()) ::
%{optional(AmmoType.id()) => non_neg_integer()} %{optional(AmmoType.id()) => non_neg_integer()}
@spec get_ammo_groups_count_for_types([AmmoType.t()], User.t(), include_empty :: boolean()) :: @spec get_ammo_groups_count_for_types([AmmoType.t()], User.t(), show_used :: boolean()) ::
%{optional(AmmoType.id()) => non_neg_integer()} %{optional(AmmoType.id()) => non_neg_integer()}
def get_ammo_groups_count_for_types(ammo_types, %User{id: user_id}, include_empty \\ false) do def get_ammo_groups_count_for_types(ammo_types, %User{id: user_id}, show_used \\ false) do
ammo_type_ids = ammo_type_ids =
ammo_types ammo_types
|> Enum.map(fn %AmmoType{id: ammo_type_id, user_id: ^user_id} -> ammo_type_id end) |> Enum.map(fn %AmmoType{id: ammo_type_id, user_id: ^user_id} -> ammo_type_id end)
from(ag in AmmoGroup, from(ag in AmmoGroup,
as: :ag,
where: ag.user_id == ^user_id, where: ag.user_id == ^user_id,
where: ag.ammo_type_id in ^ammo_type_ids, where: ag.ammo_type_id in ^ammo_type_ids,
group_by: ag.ammo_type_id, group_by: ag.ammo_type_id,
select: {ag.ammo_type_id, count(ag.id)} select: {ag.ammo_type_id, count(ag.id)}
) )
|> maybe_include_empty(include_empty) |> get_ammo_groups_count_for_types_maybe_show_used(show_used)
|> Repo.all() |> Repo.all()
|> Map.new() |> Map.new()
end end
defp maybe_include_empty(query, true), do: query @spec get_ammo_groups_count_for_types_maybe_show_used(Queryable.t(), show_used :: boolean()) ::
Queryable.t()
defp get_ammo_groups_count_for_types_maybe_show_used(query, true), do: query
defp maybe_include_empty(query, _false) do defp get_ammo_groups_count_for_types_maybe_show_used(query, _false) do
query |> where([ag], not (ag.count == 0)) query |> where([ag: ag], not (ag.count == 0))
end end
@doc """ @doc """
@ -628,7 +681,7 @@ defmodule Cannery.Ammo do
Repo.all( Repo.all(
from ag in AmmoGroup, from ag in AmmoGroup,
where: ag.container_id in ^container_ids, where: ag.container_id in ^container_ids,
where: ag.count != 0, where: ag.count > 0,
group_by: ag.container_id, group_by: ag.container_id,
select: {ag.container_id, count(ag.id)} select: {ag.container_id, count(ag.id)}
) )
@ -690,17 +743,20 @@ defmodule Cannery.Ammo do
iex> list_ammo_groups(%User{id: 123}) iex> list_ammo_groups(%User{id: 123})
[%AmmoGroup{}, ...] [%AmmoGroup{}, ...]
iex> list_ammo_groups("cool", true, %User{id: 123}) iex> list_ammo_groups("cool", %User{id: 123}, true)
[%AmmoGroup{notes: "My cool ammo group"}, ...] [%AmmoGroup{notes: "My cool ammo group"}, ...]
""" """
@spec list_ammo_groups(User.t()) :: [AmmoGroup.t()] @spec list_ammo_groups(search :: String.t() | nil, AmmoType.type() | :all, User.t()) ::
@spec list_ammo_groups(search :: nil | String.t(), User.t()) :: [AmmoGroup.t()]
@spec list_ammo_groups(search :: nil | String.t(), include_empty :: boolean(), User.t()) ::
[AmmoGroup.t()] [AmmoGroup.t()]
def list_ammo_groups(search \\ nil, include_empty \\ false, %{id: user_id}) do @spec list_ammo_groups(
from( search :: nil | String.t(),
ag in AmmoGroup, AmmoType.type() | :all,
User.t(),
show_used :: boolean()
) :: [AmmoGroup.t()]
def list_ammo_groups(search, type, %{id: user_id}, show_used \\ false) do
from(ag in AmmoGroup,
as: :ag, as: :ag,
join: at in assoc(ag, :ammo_type), join: at in assoc(ag, :ammo_type),
as: :at, as: :at,
@ -718,17 +774,32 @@ defmodule Cannery.Ammo do
distinct: ag.id, distinct: ag.id,
preload: ^@ammo_group_preloads preload: ^@ammo_group_preloads
) )
|> list_ammo_groups_include_empty(include_empty) |> list_ammo_groups_filter_on_type(type)
|> list_ammo_groups_show_used(show_used)
|> list_ammo_groups_search(search) |> list_ammo_groups_search(search)
|> Repo.all() |> Repo.all()
end end
defp list_ammo_groups_include_empty(query, true), do: query @spec list_ammo_groups_filter_on_type(Queryable.t(), AmmoType.type() | :all) :: Queryable.t()
defp list_ammo_groups_filter_on_type(query, :rifle),
do: query |> where([at: at], at.type == :rifle)
defp list_ammo_groups_include_empty(query, false) do defp list_ammo_groups_filter_on_type(query, :pistol),
query |> where([ag], not (ag.count == 0)) do: query |> where([at: at], at.type == :pistol)
defp list_ammo_groups_filter_on_type(query, :shotgun),
do: query |> where([at: at], at.type == :shotgun)
defp list_ammo_groups_filter_on_type(query, _all), do: query
@spec list_ammo_groups_show_used(Queryable.t(), show_used :: boolean()) :: Queryable.t()
defp list_ammo_groups_show_used(query, true), do: query
defp list_ammo_groups_show_used(query, _false) do
query |> where([ag: ag], not (ag.count == 0))
end end
@spec list_ammo_groups_show_used(Queryable.t(), search :: String.t() | nil) :: Queryable.t()
defp list_ammo_groups_search(query, nil), do: query defp list_ammo_groups_search(query, nil), do: query
defp list_ammo_groups_search(query, ""), do: query defp list_ammo_groups_search(query, ""), do: query

View File

@ -42,30 +42,47 @@ defmodule Cannery.Ammo.AmmoType do
field :name, :string field :name, :string
field :desc, :string field :desc, :string
field :type, Ecto.Enum, values: [:rifle, :shotgun, :pistol]
# common fields
# https://shootersreference.com/reloadingdata/bullet_abbreviations/ # https://shootersreference.com/reloadingdata/bullet_abbreviations/
field :bullet_type, :string field :bullet_type, :string
field :bullet_core, :string field :bullet_core, :string
field :cartridge, :string # also gauge for shotguns
field :caliber, :string field :caliber, :string
field :case_material, :string field :case_material, :string
field :jacket_type, :string
field :muzzle_velocity, :integer
field :powder_type, :string field :powder_type, :string
field :powder_grains_per_charge, :integer
field :grains, :integer field :grains, :integer
field :pressure, :string field :pressure, :string
field :primer_type, :string field :primer_type, :string
field :firing_type, :string field :firing_type, :string
field :manufacturer, :string
field :upc, :string
field :tracer, :boolean, default: false field :tracer, :boolean, default: false
field :incendiary, :boolean, default: false field :incendiary, :boolean, default: false
field :blank, :boolean, default: false field :blank, :boolean, default: false
field :corrosive, :boolean, default: false field :corrosive, :boolean, default: false
field :manufacturer, :string # rifle/pistol fields
field :upc, :string field :cartridge, :string
field :jacket_type, :string
field :powder_grains_per_charge, :integer
field :muzzle_velocity, :integer
# shotgun fields
field :wadding, :string
field :shot_type, :string
field :shot_material, :string
field :shot_size, :string
field :unfired_length, :string
field :brass_height, :string
field :chamber_size, :string
field :load_grains, :integer
field :shot_charge_weight, :string
field :dram_equivalent, :string
field :user_id, :binary_id field :user_id, :binary_id
has_many :ammo_groups, AmmoGroup has_many :ammo_groups, AmmoGroup
timestamps() timestamps()
@ -75,6 +92,7 @@ defmodule Cannery.Ammo.AmmoType do
id: id(), id: id(),
name: String.t(), name: String.t(),
desc: String.t() | nil, desc: String.t() | nil,
type: type(),
bullet_type: String.t() | nil, bullet_type: String.t() | nil,
bullet_core: String.t() | nil, bullet_core: String.t() | nil,
cartridge: String.t() | nil, cartridge: String.t() | nil,
@ -88,6 +106,16 @@ defmodule Cannery.Ammo.AmmoType do
pressure: String.t() | nil, pressure: String.t() | nil,
primer_type: String.t() | nil, primer_type: String.t() | nil,
firing_type: String.t() | nil, firing_type: String.t() | nil,
wadding: String.t() | nil,
shot_type: String.t() | nil,
shot_material: String.t() | nil,
shot_size: String.t() | nil,
unfired_length: String.t() | nil,
brass_height: String.t() | nil,
chamber_size: String.t() | nil,
load_grains: integer() | nil,
shot_charge_weight: String.t() | nil,
dram_equivalent: String.t() | nil,
tracer: boolean(), tracer: boolean(),
incendiary: boolean(), incendiary: boolean(),
blank: boolean(), blank: boolean(),
@ -102,12 +130,14 @@ defmodule Cannery.Ammo.AmmoType do
@type new_ammo_type :: %__MODULE__{} @type new_ammo_type :: %__MODULE__{}
@type id :: UUID.t() @type id :: UUID.t()
@type changeset :: Changeset.t(t() | new_ammo_type()) @type changeset :: Changeset.t(t() | new_ammo_type())
@type type :: :rifle | :shotgun | :pistol | nil
@spec changeset_fields() :: [atom()] @spec changeset_fields() :: [atom()]
defp changeset_fields, defp changeset_fields,
do: [ do: [
:name, :name,
:desc, :desc,
:type,
:bullet_type, :bullet_type,
:bullet_core, :bullet_core,
:cartridge, :cartridge,
@ -121,6 +151,16 @@ defmodule Cannery.Ammo.AmmoType do
:pressure, :pressure,
:primer_type, :primer_type,
:firing_type, :firing_type,
:wadding,
:shot_type,
:shot_material,
:shot_size,
:unfired_length,
:brass_height,
:chamber_size,
:load_grains,
:shot_charge_weight,
:dram_equivalent,
:tracer, :tracer,
:incendiary, :incendiary,
:blank, :blank,
@ -143,6 +183,15 @@ defmodule Cannery.Ammo.AmmoType do
:pressure, :pressure,
:primer_type, :primer_type,
:firing_type, :firing_type,
:wadding,
:shot_type,
:shot_material,
:shot_size,
:unfired_length,
:brass_height,
:chamber_size,
:shot_charge_weight,
:dram_equivalent,
:manufacturer, :manufacturer,
:upc :upc
] ]

View File

@ -5,6 +5,7 @@ defmodule CanneryWeb.Components.AmmoGroupTableComponent do
use CanneryWeb, :live_component use CanneryWeb, :live_component
alias Cannery.{Accounts.User, Ammo.AmmoGroup, ComparableDate} alias Cannery.{Accounts.User, Ammo.AmmoGroup, ComparableDate}
alias Cannery.{ActivityLog, Ammo, Containers} alias Cannery.{ActivityLog, Ammo, Containers}
alias CanneryWeb.Components.TableComponent
alias Ecto.UUID alias Ecto.UUID
alias Phoenix.LiveView.{Rendered, Socket} alias Phoenix.LiveView.{Rendered, Socket}
@ -54,59 +55,47 @@ defmodule CanneryWeb.Components.AmmoGroupTableComponent do
} = socket } = socket
) do ) do
columns = columns =
if actions == [] do []
[] |> TableComponent.maybe_compose_columns(
else %{label: gettext("Actions"), key: :actions, sortable: false},
[%{label: gettext("Actions"), key: :actions, sortable: false}] actions != []
end )
|> TableComponent.maybe_compose_columns(%{
columns = [ label: gettext("Last used on"),
%{label: gettext("Purchased on"), key: :purchased_on, type: ComparableDate}, key: :used_up_on,
%{label: gettext("Last used on"), key: :used_up_on, type: ComparableDate} | columns type: ComparableDate
] })
|> TableComponent.maybe_compose_columns(%{
columns = label: gettext("Purchased on"),
if container == [] do key: :purchased_on,
columns type: ComparableDate
else })
[%{label: gettext("Container"), key: :container} | columns] |> TableComponent.maybe_compose_columns(
end %{label: gettext("Container"), key: :container},
container != []
columns = )
if range == [] do |> TableComponent.maybe_compose_columns(
columns %{label: gettext("Range"), key: :range},
else range != []
[%{label: gettext("Range"), key: :range} | columns] )
end |> TableComponent.maybe_compose_columns(%{label: gettext("CPR"), key: :cpr})
|> TableComponent.maybe_compose_columns(%{label: gettext("Price paid"), key: :price_paid})
columns = [ |> TableComponent.maybe_compose_columns(
%{label: gettext("Price paid"), key: :price_paid}, %{label: gettext("% left"), key: :remaining},
%{label: gettext("CPR"), key: :cpr} show_used
| columns )
] |> TableComponent.maybe_compose_columns(
%{label: gettext("Original Count"), key: :original_count},
columns = show_used
if show_used do )
[ |> TableComponent.maybe_compose_columns(%{
%{label: gettext("Original Count"), key: :original_count}, label: if(show_used, do: gettext("Current Count"), else: gettext("Count")),
%{label: gettext("% left"), key: :remaining} key: :count
| columns })
] |> TableComponent.maybe_compose_columns(
else %{label: gettext("Ammo type"), key: :ammo_type},
columns ammo_type != []
end )
columns = [
%{label: if(show_used, do: gettext("Current Count"), else: gettext("Count")), key: :count}
| columns
]
columns =
if ammo_type == [] do
columns
else
[%{label: gettext("Ammo type"), key: :ammo_type} | columns]
end
containers = containers =
ammo_groups ammo_groups
@ -140,12 +129,7 @@ defmodule CanneryWeb.Components.AmmoGroupTableComponent do
def render(assigns) do def render(assigns) do
~H""" ~H"""
<div id={@id} class="w-full"> <div id={@id} class="w-full">
<.live_component <.live_component module={TableComponent} id={"table-#{@id}"} columns={@columns} rows={@rows} />
module={CanneryWeb.Components.TableComponent}
id={"table-#{@id}"}
columns={@columns}
rows={@rows}
/>
</div> </div>
""" """
end end

View File

@ -4,6 +4,7 @@ defmodule CanneryWeb.Components.AmmoTypeTableComponent do
""" """
use CanneryWeb, :live_component use CanneryWeb, :live_component
alias Cannery.{Accounts.User, ActivityLog, Ammo, Ammo.AmmoType} alias Cannery.{Accounts.User, ActivityLog, Ammo, Ammo.AmmoType}
alias CanneryWeb.Components.TableComponent
alias Ecto.UUID alias Ecto.UUID
alias Phoenix.LiveView.{Rendered, Socket} alias Phoenix.LiveView.{Rendered, Socket}
@ -12,6 +13,7 @@ defmodule CanneryWeb.Components.AmmoTypeTableComponent do
%{ %{
required(:id) => UUID.t(), required(:id) => UUID.t(),
required(:current_user) => User.t(), required(:current_user) => User.t(),
optional(:type) => AmmoType.type() | nil,
optional(:show_used) => boolean(), optional(:show_used) => boolean(),
optional(:ammo_types) => [AmmoType.t()], optional(:ammo_types) => [AmmoType.t()],
optional(:actions) => Rendered.t(), optional(:actions) => Rendered.t(),
@ -24,6 +26,7 @@ defmodule CanneryWeb.Components.AmmoTypeTableComponent do
socket socket
|> assign(assigns) |> assign(assigns)
|> assign_new(:show_used, fn -> false end) |> assign_new(:show_used, fn -> false end)
|> assign_new(:type, fn -> :all end)
|> assign_new(:actions, fn -> [] end) |> assign_new(:actions, fn -> [] end)
|> display_ammo_types() |> display_ammo_types()
@ -36,90 +39,118 @@ defmodule CanneryWeb.Components.AmmoTypeTableComponent do
ammo_types: ammo_types, ammo_types: ammo_types,
current_user: current_user, current_user: current_user,
show_used: show_used, show_used: show_used,
type: type,
actions: actions actions: actions
} }
} = socket } = socket
) do ) do
columns = filtered_columns =
[ [
%{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("Cartridge"), key: :cartridge, type: :string},
%{label: gettext("Caliber"), key: :caliber, type: :string}, %{
%{label: gettext("Case material"), key: :case_material, type: :string}, label: if(type == :shotgun, do: gettext("Gauge"), else: gettext("Caliber")),
key: :caliber,
type: :string
},
%{label: gettext("Unfired shell length"), key: :unfired_length, type: :string},
%{label: gettext("Brass height"), key: :brass_height, type: :string},
%{label: gettext("Chamber size"), key: :chamber_size, type: :string},
%{label: gettext("Chamber size"), key: :chamber_size, type: :string},
%{label: gettext("Grains"), key: :grains, type: :string},
%{label: gettext("Bullet type"), key: :bullet_type, type: :string},
%{
label: if(type == :shotgun, do: gettext("Slug core"), else: gettext("Bullet core")),
key: :bullet_core,
type: :string
},
%{label: gettext("Jacket type"), key: :jacket_type, type: :string}, %{label: gettext("Jacket type"), key: :jacket_type, type: :string},
%{label: gettext("Muzzle velocity"), key: :muzzle_velocity, type: :string}, %{label: gettext("Case material"), key: :case_material, type: :string},
%{label: gettext("Wadding"), key: :wadding, type: :string},
%{label: gettext("Shot type"), key: :shot_type, type: :string},
%{label: gettext("Shot material"), key: :shot_material, type: :string},
%{label: gettext("Shot size"), key: :shot_size, type: :string},
%{label: gettext("Load grains"), key: :load_grains, type: :string},
%{label: gettext("Shot charge weight"), key: :shot_charge_weight, type: :string},
%{label: gettext("Powder type"), key: :powder_type, type: :string}, %{label: gettext("Powder type"), key: :powder_type, type: :string},
%{ %{
label: gettext("Powder grains per charge"), label: gettext("Powder grains per charge"),
key: :powder_grains_per_charge, key: :powder_grains_per_charge,
type: :string type: :string
}, },
%{label: gettext("Grains"), key: :grains, type: :string},
%{label: gettext("Pressure"), key: :pressure, type: :string}, %{label: gettext("Pressure"), key: :pressure, type: :string},
%{label: gettext("Dram equivalent"), key: :dram_equivalent, type: :string},
%{label: gettext("Muzzle velocity"), key: :muzzle_velocity, type: :string},
%{label: gettext("Primer type"), key: :primer_type, type: :string}, %{label: gettext("Primer type"), key: :primer_type, type: :string},
%{label: gettext("Firing type"), key: :firing_type, type: :string}, %{label: gettext("Firing type"), key: :firing_type, type: :string},
%{label: gettext("Tracer"), key: :tracer, type: :boolean}, %{label: gettext("Tracer"), key: :tracer, type: :atom},
%{label: gettext("Incendiary"), key: :incendiary, type: :boolean}, %{label: gettext("Incendiary"), key: :incendiary, type: :atom},
%{label: gettext("Blank"), key: :blank, type: :boolean}, %{label: gettext("Blank"), key: :blank, type: :atom},
%{label: gettext("Corrosive"), key: :corrosive, type: :boolean}, %{label: gettext("Corrosive"), key: :corrosive, type: :atom},
%{label: gettext("Manufacturer"), key: :manufacturer, type: :string}, %{label: gettext("Manufacturer"), key: :manufacturer, type: :string}
%{label: gettext("UPC"), key: "upc", type: :string}
] ]
|> Enum.filter(fn %{key: key, type: type} -> |> Enum.filter(fn %{key: key, type: type} ->
# remove columns if all values match defaults # remove columns if all values match defaults
default_value = if type == :boolean, do: false, else: nil default_value = if type == :atom, do: false, else: nil
ammo_types ammo_types
|> Enum.any?(fn ammo_type -> |> Enum.any?(fn ammo_type -> Map.get(ammo_type, key, default_value) != default_value end)
not (ammo_type |> Map.get(key) == default_value)
end)
end) end)
|> Kernel.++([
%{label: gettext("Rounds"), key: :round_count, type: :round_count} columns =
]) [%{label: gettext("Actions"), key: "actions", type: :actions, sortable: false}]
|> Kernel.++( |> TableComponent.maybe_compose_columns(%{
if show_used do label: gettext("Average CPR"),
[ key: :avg_price_paid,
%{ type: :avg_price_paid
label: gettext("Used rounds"), })
key: :used_round_count, |> TableComponent.maybe_compose_columns(
type: :used_round_count %{
}, label: gettext("Total ever packs"),
%{ key: :historical_pack_count,
label: gettext("Total ever rounds"), type: :historical_pack_count
key: :historical_round_count, },
type: :historical_round_count show_used
}
]
else
[]
end
) )
|> Kernel.++([%{label: gettext("Packs"), key: :ammo_count, type: :ammo_count}]) |> TableComponent.maybe_compose_columns(
|> Kernel.++( %{
if show_used do label: gettext("Used packs"),
[ key: :used_pack_count,
%{ type: :used_pack_count
label: gettext("Used packs"), },
key: :used_pack_count, show_used
type: :used_pack_count
},
%{
label: gettext("Total ever packs"),
key: :historical_pack_count,
type: :historical_pack_count
}
]
else
[]
end
) )
|> Kernel.++([ |> TableComponent.maybe_compose_columns(%{
%{label: gettext("Average CPR"), key: :avg_price_paid, type: :avg_price_paid}, label: gettext("Packs"),
%{label: gettext("Actions"), key: "actions", type: :actions, sortable: false} key: :ammo_count,
]) type: :ammo_count
})
|> TableComponent.maybe_compose_columns(
%{
label: gettext("Total ever rounds"),
key: :historical_round_count,
type: :historical_round_count
},
show_used
)
|> TableComponent.maybe_compose_columns(
%{
label: gettext("Used rounds"),
key: :used_round_count,
type: :used_round_count
},
show_used
)
|> TableComponent.maybe_compose_columns(%{
label: gettext("Rounds"),
key: :round_count,
type: :round_count
})
|> TableComponent.maybe_compose_columns(filtered_columns)
|> TableComponent.maybe_compose_columns(
%{label: gettext("Type"), key: :type, type: :atom},
type in [:all, nil]
)
|> TableComponent.maybe_compose_columns(%{label: gettext("Name"), key: :name, type: :name})
round_counts = ammo_types |> Ammo.get_round_count_for_ammo_types(current_user) round_counts = ammo_types |> Ammo.get_round_count_for_ammo_types(current_user)
packs_count = ammo_types |> Ammo.get_ammo_groups_count_for_types(current_user) packs_count = ammo_types |> Ammo.get_ammo_groups_count_for_types(current_user)
@ -162,12 +193,7 @@ defmodule CanneryWeb.Components.AmmoTypeTableComponent do
def render(assigns) do def render(assigns) do
~H""" ~H"""
<div id={@id} class="w-full"> <div id={@id} class="w-full">
<.live_component <.live_component module={TableComponent} id={"table-#{@id}"} columns={@columns} rows={@rows} />
module={CanneryWeb.Components.TableComponent}
id={"table-#{@id}"}
columns={@columns}
rows={@rows}
/>
</div> </div>
""" """
end end
@ -179,7 +205,7 @@ defmodule CanneryWeb.Components.AmmoTypeTableComponent do
end) end)
end end
defp get_ammo_type_value(:boolean, key, ammo_type, _other_data), defp get_ammo_type_value(:atom, key, ammo_type, _other_data),
do: ammo_type |> Map.get(key) |> humanize() do: ammo_type |> Map.get(key) |> humanize()
defp get_ammo_type_value(:round_count, _key, %{id: ammo_type_id}, %{round_counts: round_counts}), defp get_ammo_type_value(:round_count, _key, %{id: ammo_type_id}, %{round_counts: round_counts}),

View File

@ -3,7 +3,7 @@ defmodule CanneryWeb.ExportController do
alias Cannery.{ActivityLog, Ammo, Containers} alias Cannery.{ActivityLog, Ammo, Containers}
def export(%{assigns: %{current_user: current_user}} = conn, %{"mode" => "json"}) do def export(%{assigns: %{current_user: current_user}} = conn, %{"mode" => "json"}) do
ammo_types = Ammo.list_ammo_types(current_user) ammo_types = Ammo.list_ammo_types(current_user, :all)
used_counts = ammo_types |> ActivityLog.get_used_count_for_ammo_types(current_user) used_counts = ammo_types |> ActivityLog.get_used_count_for_ammo_types(current_user)
round_counts = ammo_types |> Ammo.get_round_count_for_ammo_types(current_user) round_counts = ammo_types |> Ammo.get_round_count_for_ammo_types(current_user)
ammo_group_counts = ammo_types |> Ammo.get_ammo_groups_count_for_types(current_user) ammo_group_counts = ammo_types |> Ammo.get_ammo_groups_count_for_types(current_user)
@ -28,7 +28,7 @@ defmodule CanneryWeb.ExportController do
}) })
end) end)
ammo_groups = Ammo.list_ammo_groups(nil, true, current_user) ammo_groups = Ammo.list_ammo_groups(nil, :all, current_user, true)
used_counts = ammo_groups |> ActivityLog.get_used_counts(current_user) used_counts = ammo_groups |> ActivityLog.get_used_counts(current_user)
original_counts = ammo_groups |> Ammo.get_original_counts(current_user) original_counts = ammo_groups |> Ammo.get_original_counts(current_user)
cprs = ammo_groups |> Ammo.get_cprs(current_user) cprs = ammo_groups |> Ammo.get_cprs(current_user)
@ -48,7 +48,7 @@ defmodule CanneryWeb.ExportController do
}) })
end) end)
shot_groups = ActivityLog.list_shot_groups(current_user) shot_groups = ActivityLog.list_shot_groups(:all, current_user)
containers = containers =
Containers.list_containers(current_user) Containers.list_containers(current_user)

View File

@ -26,7 +26,7 @@ defmodule CanneryWeb.AmmoGroupLive.FormComponent do
socket = socket =
socket socket
|> assign(:ammo_group_create_limit, @ammo_group_create_limit) |> assign(:ammo_group_create_limit, @ammo_group_create_limit)
|> assign(:ammo_types, Ammo.list_ammo_types(current_user)) |> assign(:ammo_types, Ammo.list_ammo_types(current_user, :all))
|> assign_new(:containers, fn -> Containers.list_containers(current_user) end) |> assign_new(:containers, fn -> Containers.list_containers(current_user) end)
params = params =

View File

@ -8,11 +8,11 @@ defmodule CanneryWeb.AmmoGroupLive.Index do
@impl true @impl true
def mount(%{"search" => search}, _session, socket) do def mount(%{"search" => search}, _session, socket) do
{:ok, socket |> assign(show_used: false, search: search) |> display_ammo_groups()} {:ok, socket |> assign(type: :all, show_used: false, search: search) |> display_ammo_groups()}
end end
def mount(_params, _session, socket) do def mount(_params, _session, socket) do
{:ok, socket |> assign(show_used: false, search: nil) |> display_ammo_groups()} {:ok, socket |> assign(type: :all, show_used: false, search: nil) |> display_ammo_groups()}
end end
@impl true @impl true
@ -119,10 +119,36 @@ defmodule CanneryWeb.AmmoGroupLive.Index do
{:noreply, socket} {:noreply, socket}
end end
def handle_event("change_type", %{"ammo_type" => %{"type" => "rifle"}}, socket) do
{:noreply, socket |> assign(:type, :rifle) |> display_ammo_groups()}
end
def handle_event("change_type", %{"ammo_type" => %{"type" => "shotgun"}}, socket) do
{:noreply, socket |> assign(:type, :shotgun) |> display_ammo_groups()}
end
def handle_event("change_type", %{"ammo_type" => %{"type" => "pistol"}}, socket) do
{:noreply, socket |> assign(:type, :pistol) |> display_ammo_groups()}
end
def handle_event("change_type", %{"ammo_type" => %{"type" => _all}}, socket) do
{:noreply, socket |> assign(:type, :all) |> display_ammo_groups()}
end
defp display_ammo_groups( defp display_ammo_groups(
%{assigns: %{search: search, current_user: current_user, show_used: show_used}} = socket %{
assigns: %{
type: type,
search: search,
current_user: current_user,
show_used: show_used
}
} = socket
) do ) do
ammo_groups = Ammo.list_ammo_groups(search, show_used, current_user) # get total number of ammo groups to determine whether to display onboarding
# prompts
ammo_groups_count = Ammo.get_ammo_groups_count!(current_user, true)
ammo_groups = Ammo.list_ammo_groups(search, type, current_user, show_used)
ammo_types_count = Ammo.get_ammo_types_count!(current_user) ammo_types_count = Ammo.get_ammo_types_count!(current_user)
containers_count = Containers.get_containers_count!(current_user) containers_count = Containers.get_containers_count!(current_user)
@ -130,7 +156,8 @@ defmodule CanneryWeb.AmmoGroupLive.Index do
|> assign( |> assign(
ammo_groups: ammo_groups, ammo_groups: ammo_groups,
ammo_types_count: ammo_types_count, ammo_types_count: ammo_types_count,
containers_count: containers_count containers_count: containers_count,
ammo_groups_count: ammo_groups_count
) )
end end
end end

View File

@ -3,14 +3,6 @@
<%= gettext("Ammo") %> <%= gettext("Ammo") %>
</h1> </h1>
<h2
:if={@ammo_groups |> Enum.empty?() and @search |> is_nil()}
class="title text-xl text-primary-600"
>
<%= gettext("No Ammo") %>
<%= display_emoji("😔") %>
</h2>
<%= cond do %> <%= cond do %>
<% @containers_count == 0 -> %> <% @containers_count == 0 -> %>
<div class="flex justify-center items-center"> <div class="flex justify-center items-center">
@ -32,7 +24,12 @@
<%= dgettext("actions", "add an ammo type first") %> <%= dgettext("actions", "add an ammo type first") %>
</.link> </.link>
</div> </div>
<% @ammo_groups |> Enum.empty?() and @search |> is_nil() -> %> <% @ammo_groups_count == 0 -> %>
<h2 class="title text-xl text-primary-600">
<%= gettext("No ammo") %>
<%= display_emoji("😔") %>
</h2>
<.link patch={Routes.ammo_group_index_path(Endpoint, :new)} class="btn btn-primary"> <.link patch={Routes.ammo_group_index_path(Endpoint, :new)} class="btn btn-primary">
<%= dgettext("actions", "Add your first box!") %> <%= dgettext("actions", "Add your first box!") %>
</.link> </.link>
@ -40,144 +37,168 @@
<.link patch={Routes.ammo_group_index_path(Endpoint, :new)} class="btn btn-primary"> <.link patch={Routes.ammo_group_index_path(Endpoint, :new)} class="btn btn-primary">
<%= dgettext("actions", "Add Ammo") %> <%= dgettext("actions", "Add Ammo") %>
</.link> </.link>
<% end %>
<div class="w-full flex flex-col sm:flex-row justify-center items-center space-y-4 sm:space-y-0 sm:space-x-4 max-w-xl"> <div class="w-full flex flex-col sm:flex-row justify-center items-center space-y-4 sm:space-y-0 sm:space-x-4 max-w-2xl">
<.form <.form
:let={f} :let={f}
for={%{}} for={%{}}
as={:search} as={:ammo_type}
phx-change="search" phx-change="change_type"
phx-submit="search" phx-submit="change_type"
class="grow self-stretch flex flex-col items-stretch" class="flex items-center"
> >
<%= text_input(f, :search_term, <%= label(f, :type, gettext("Type"), class: "title text-primary-600 text-lg text-center") %>
class: "input input-primary",
value: @search,
role: "search",
phx_debounce: 300,
placeholder: gettext("Search ammo")
) %>
</.form>
<.toggle_button action="toggle_show_used" value={@show_used}> <%= select(
<span class="title text-lg text-primary-600"> f,
<%= gettext("Show used") %> :type,
</span> [
</.toggle_button> {gettext("All"), :all},
</div> {gettext("Rifle"), :rifle},
{gettext("Shotgun"), :shotgun},
{gettext("Pistol"), :pistol}
],
class: "mx-2 my-1 min-w-md input input-primary",
value: @type
) %>
</.form>
<%= if @ammo_groups |> Enum.empty?() do %> <.form
<h2 class="title text-xl text-primary-600"> :let={f}
<%= gettext("No Ammo") %> for={%{}}
<%= display_emoji("😔") %> as={:search}
</h2> phx-change="search"
<% else %> phx-submit="search"
<.live_component class="grow flex items-center"
module={CanneryWeb.Components.AmmoGroupTableComponent} >
id="ammo-group-index-table" <%= text_input(f, :search_term,
ammo_groups={@ammo_groups} class: "grow input input-primary",
current_user={@current_user} value: @search,
show_used={@show_used} role: "search",
> phx_debounce: 300,
<:ammo_type :let={%{name: ammo_type_name} = ammo_type}> placeholder: gettext("Search ammo")
<.link navigate={Routes.ammo_type_show_path(Endpoint, :show, ammo_type)} class="link"> ) %>
<%= ammo_type_name %> </.form>
</.link>
</:ammo_type>
<:range :let={ammo_group}>
<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 text-sm btn btn-primary"
phx-click="toggle_staged"
phx-value-ammo_group_id={ammo_group.id}
>
<%= if ammo_group.staged,
do: dgettext("actions", "Unstage"),
else: dgettext("actions", "Stage") %>
</button>
<.link <.toggle_button action="toggle_show_used" value={@show_used}>
patch={Routes.ammo_group_index_path(Endpoint, :add_shot_group, ammo_group)} <span class="title text-lg text-primary-600">
class="mx-2 my-1 text-sm btn btn-primary" <%= gettext("Show used") %>
> </span>
<%= dgettext("actions", "Record shots") %> </.toggle_button>
</.link> </div>
</div>
</:range>
<:container :let={{ammo_group, %{name: container_name} = container}}>
<div class="min-w-20 py-2 px-4 h-full flex flew-wrap justify-center items-center">
<.link
navigate={Routes.container_show_path(Endpoint, :show, container)}
class="mx-2 my-1 link"
>
<%= container_name %>
</.link>
<.link <%= if @ammo_groups |> Enum.empty?() do %>
patch={Routes.ammo_group_index_path(Endpoint, :move, ammo_group)} <h2 class="title text-xl text-primary-600">
class="mx-2 my-1 text-sm btn btn-primary" <%= gettext("No Ammo") %>
> <%= display_emoji("😔") %>
<%= dgettext("actions", "Move ammo") %> </h2>
</.link> <% else %>
</div> <.live_component
</:container> module={CanneryWeb.Components.AmmoGroupTableComponent}
<:actions :let={%{count: ammo_group_count} = ammo_group}> id="ammo-group-index-table"
<div class="py-2 px-4 h-full space-x-4 flex justify-center items-center"> ammo_groups={@ammo_groups}
<.link current_user={@current_user}
navigate={Routes.ammo_group_show_path(Endpoint, :show, ammo_group)} show_used={@show_used}
class="text-primary-600 link" >
aria-label={ <:ammo_type :let={%{name: ammo_type_name} = ammo_type}>
dgettext("actions", "View ammo group of %{ammo_group_count} bullets", <.link navigate={Routes.ammo_type_show_path(Endpoint, :show, ammo_type)} class="link">
ammo_group_count: ammo_group_count <%= ammo_type_name %>
) </.link>
} </:ammo_type>
> <:range :let={ammo_group}>
<i class="fa-fw fa-lg fas fa-eye"></i> <div class="min-w-20 py-2 px-4 h-full flex flew-wrap justify-center items-center">
</.link> <button
type="button"
class="mx-2 my-1 text-sm btn btn-primary"
phx-click="toggle_staged"
phx-value-ammo_group_id={ammo_group.id}
>
<%= if ammo_group.staged,
do: dgettext("actions", "Unstage"),
else: dgettext("actions", "Stage") %>
</button>
<.link <.link
patch={Routes.ammo_group_index_path(Endpoint, :edit, ammo_group)} patch={Routes.ammo_group_index_path(Endpoint, :add_shot_group, ammo_group)}
class="text-primary-600 link" class="mx-2 my-1 text-sm btn btn-primary"
aria-label={ >
dgettext("actions", "Edit ammo group of %{ammo_group_count} bullets", <%= dgettext("actions", "Record shots") %>
ammo_group_count: ammo_group_count </.link>
) </div>
} </:range>
> <:container :let={{ammo_group, %{name: container_name} = container}}>
<i class="fa-fw fa-lg fas fa-edit"></i> <div class="min-w-20 py-2 px-4 h-full flex flew-wrap justify-center items-center">
</.link> <.link
navigate={Routes.container_show_path(Endpoint, :show, container)}
class="mx-2 my-1 link"
>
<%= container_name %>
</.link>
<.link <.link
patch={Routes.ammo_group_index_path(Endpoint, :clone, ammo_group)} patch={Routes.ammo_group_index_path(Endpoint, :move, ammo_group)}
class="text-primary-600 link" class="mx-2 my-1 text-sm btn btn-primary"
aria-label={ >
dgettext("actions", "Clone ammo group of %{ammo_group_count} bullets", <%= dgettext("actions", "Move ammo") %>
ammo_group_count: ammo_group_count </.link>
) </div>
} </:container>
> <:actions :let={%{count: ammo_group_count} = ammo_group}>
<i class="fa-fw fa-lg fas fa-copy"></i> <div class="py-2 px-4 h-full space-x-4 flex justify-center items-center">
</.link> <.link
navigate={Routes.ammo_group_show_path(Endpoint, :show, ammo_group)}
class="text-primary-600 link"
aria-label={
dgettext("actions", "View ammo group of %{ammo_group_count} bullets",
ammo_group_count: ammo_group_count
)
}
>
<i class="fa-fw fa-lg fas fa-eye"></i>
</.link>
<.link <.link
href="#" patch={Routes.ammo_group_index_path(Endpoint, :edit, ammo_group)}
class="text-primary-600 link" class="text-primary-600 link"
phx-click="delete" aria-label={
phx-value-id={ammo_group.id} dgettext("actions", "Edit ammo group of %{ammo_group_count} bullets",
data-confirm={dgettext("prompts", "Are you sure you want to delete this ammo?")} ammo_group_count: ammo_group_count
aria-label={ )
dgettext("actions", "Delete ammo group of %{ammo_group_count} bullets", }
ammo_group_count: ammo_group_count >
) <i class="fa-fw fa-lg fas fa-edit"></i>
} </.link>
>
<i class="fa-fw fa-lg fas fa-trash"></i> <.link
</.link> patch={Routes.ammo_group_index_path(Endpoint, :clone, ammo_group)}
</div> class="text-primary-600 link"
</:actions> aria-label={
</.live_component> dgettext("actions", "Clone ammo group of %{ammo_group_count} bullets",
ammo_group_count: ammo_group_count
)
}
>
<i class="fa-fw fa-lg fas fa-copy"></i>
</.link>
<.link
href="#"
class="text-primary-600 link"
phx-click="delete"
phx-value-id={ammo_group.id}
data-confirm={dgettext("prompts", "Are you sure you want to delete this ammo?")}
aria-label={
dgettext("actions", "Delete ammo group of %{ammo_group_count} bullets",
ammo_group_count: ammo_group_count
)
}
>
<i class="fa-fw fa-lg fas fa-trash"></i>
</.link>
</div>
</:actions>
</.live_component>
<% end %>
<% end %> <% end %>
</div> </div>

View File

@ -15,9 +15,19 @@
:if={@changeset.action && not @changeset.valid?()} :if={@changeset.action && not @changeset.valid?()}
class="invalid-feedback col-span-3 text-center" class="invalid-feedback col-span-3 text-center"
> >
<%= changeset_errors(@changeset) %> <%= dgettext("errors", "Oops, something went wrong! Please check the errors below.") %>
</div> </div>
<%= label(f, :type, gettext("Type"), class: "title text-lg text-primary-600") %>
<%= select(
f,
:type,
[{gettext("Rifle"), :rifle}, {gettext("Shotgun"), :shotgun}, {gettext("Pistol"), :pistol}],
class: "text-center col-span-2 input input-primary",
maxlength: 255
) %>
<%= error_tag(f, :type, "col-span-3 text-center") %>
<%= label(f, :name, gettext("Name"), class: "title text-lg text-primary-600") %> <%= label(f, :name, gettext("Name"), class: "title text-lg text-primary-600") %>
<%= text_input(f, :name, <%= text_input(f, :name,
class: "text-center col-span-2 input input-primary", class: "text-center col-span-2 input input-primary",
@ -34,37 +44,31 @@
) %> ) %>
<%= error_tag(f, :desc, "col-span-3 text-center") %> <%= error_tag(f, :desc, "col-span-3 text-center") %>
<.link <h2 class="text-center title text-lg text-primary-600 col-span-3">
href="https://shootersreference.com/reloadingdata/bullet_abbreviations/" <%= gettext("Dimensions") %>
class="col-span-3 text-center link title text-md text-primary-600" </h2>
>
<%= gettext("Example bullet type abbreviations") %>
</.link>
<%= label(f, :bullet_type, gettext("Bullet type"), class: "title text-lg text-primary-600") %>
<%= text_input(f, :bullet_type,
class: "text-center col-span-2 input input-primary",
maxlength: 255,
placeholder: gettext("FMJ")
) %>
<%= error_tag(f, :bullet_type, "col-span-3 text-center") %>
<%= label(f, :bullet_core, gettext("Bullet core"), class: "title text-lg text-primary-600") %> <%= if Changeset.get_field(@changeset, :type) in [:rifle, :pistol] do %>
<%= text_input(f, :bullet_core, <%= label(f, :cartridge, gettext("Cartridge"), class: "title text-lg text-primary-600") %>
class: "text-center col-span-2 input input-primary", <%= text_input(f, :cartridge,
maxlength: 255, class: "text-center col-span-2 input input-primary",
placeholder: gettext("Steel") maxlength: 255,
) %> placeholder: gettext("5.56x46mm NATO")
<%= error_tag(f, :bullet_core, "col-span-3 text-center") %> ) %>
<%= error_tag(f, :cartridge, "col-span-3 text-center") %>
<% else %>
<%= hidden_input(f, :cartridge, value: nil) %>
<% end %>
<%= label(f, :cartridge, gettext("Cartridge"), class: "title text-lg text-primary-600") %> <%= label(
<%= text_input(f, :cartridge, f,
class: "text-center col-span-2 input input-primary", :caliber,
maxlength: 255, if(Changeset.get_field(@changeset, :type) == :shotgun,
placeholder: gettext("5.56x46mm NATO") do: gettext("Gauge"),
else: gettext("Caliber")
),
class: "title text-lg text-primary-600"
) %> ) %>
<%= error_tag(f, :cartridge, "col-span-3 text-center") %>
<%= label(f, :caliber, gettext("Caliber"), class: "title text-lg text-primary-600") %>
<%= text_input(f, :caliber, <%= text_input(f, :caliber,
class: "text-center col-span-2 input input-primary", class: "text-center col-span-2 input input-primary",
maxlength: 255, maxlength: 255,
@ -72,48 +76,38 @@
) %> ) %>
<%= error_tag(f, :caliber, "col-span-3 text-center") %> <%= error_tag(f, :caliber, "col-span-3 text-center") %>
<%= label(f, :case_material, gettext("Case material"), class: "title text-lg text-primary-600") %> <%= if Changeset.get_field(@changeset, :type) == :shotgun do %>
<%= text_input(f, :case_material, <%= label(f, :unfired_length, gettext("Unfired shell length"),
class: "text-center col-span-2 input input-primary", class: "title text-lg text-primary-600"
maxlength: 255, ) %>
placeholder: gettext("Brass") <%= text_input(f, :unfired_length,
) %> class: "text-center col-span-2 input input-primary",
<%= error_tag(f, :case_material, "col-span-3 text-center") %> maxlength: 255
) %>
<%= error_tag(f, :unfired_length, "col-span-3 text-center") %>
<%= label(f, :jacket_type, gettext("Jacket type"), class: "title text-lg text-primary-600") %> <%= label(f, :brass_height, gettext("Brass height"), class: "title text-lg text-primary-600") %>
<%= text_input(f, :jacket_type, <%= text_input(f, :brass_height,
class: "text-center col-span-2 input input-primary", class: "text-center col-span-2 input input-primary",
maxlength: 255, maxlength: 255
placeholder: gettext("Bimetal") ) %>
) %> <%= error_tag(f, :brass_height, "col-span-3 text-center") %>
<%= error_tag(f, :case_material, "col-span-3 text-center") %>
<%= label(f, :muzzle_velocity, gettext("Muzzle velocity"), <%= label(f, :chamber_size, gettext("Chamber size"), class: "title text-lg text-primary-600") %>
class: "title text-lg text-primary-600" <%= text_input(f, :chamber_size,
) %> class: "text-center col-span-2 input input-primary",
<%= number_input(f, :muzzle_velocity, maxlength: 255
step: "1", ) %>
class: "text-center col-span-2 input input-primary", <%= error_tag(f, :chamber_size, "col-span-3 text-center") %>
min: 1 <% else %>
) %> <%= hidden_input(f, :unfired_length, value: nil) %>
<%= error_tag(f, :muzzle_velocity, "col-span-3 text-center") %> <%= hidden_input(f, :brass_height, value: nil) %>
<%= hidden_input(f, :chamber_size, value: nil) %>
<% end %>
<%= label(f, :powder_type, gettext("Powder type"), class: "title text-lg text-primary-600") %> <h2 class="text-center title text-lg text-primary-600 col-span-3">
<%= text_input(f, :powder_type, <%= gettext("Projectile") %>
class: "text-center col-span-2 input input-primary", </h2>
maxlength: 255
) %>
<%= error_tag(f, :powder_type, "col-span-3 text-center") %>
<%= label(f, :powder_grains_per_charge, gettext("Powder grains per charge"),
class: "title text-lg text-primary-600"
) %>
<%= number_input(f, :powder_grains_per_charge,
step: "1",
class: "text-center col-span-2 input input-primary",
min: 1
) %>
<%= error_tag(f, :powder_grains_per_charge, "col-span-3 text-center") %>
<%= label(f, :grains, gettext("Grains"), class: "title text-lg text-primary-600") %> <%= label(f, :grains, gettext("Grains"), class: "title text-lg text-primary-600") %>
<%= number_input(f, :grains, <%= number_input(f, :grains,
@ -123,6 +117,143 @@
) %> ) %>
<%= error_tag(f, :grains, "col-span-3 text-center") %> <%= error_tag(f, :grains, "col-span-3 text-center") %>
<%= label f, :bullet_type, class: "flex title text-lg text-primary-600 space-x-2" do %>
<p><%= gettext("Bullet type") %></p>
<.link
href="https://shootersreference.com/reloadingdata/bullet_abbreviations/"
class="link"
target="_blank"
rel="noopener noreferrer"
>
<i class="fas fa-md fa-external-link-alt"></i>
</.link>
<% end %>
<%= text_input(f, :bullet_type,
class: "text-center col-span-2 input input-primary",
maxlength: 255,
placeholder: gettext("FMJ")
) %>
<%= error_tag(f, :bullet_type, "col-span-3 text-center") %>
<%= label(
f,
:bullet_core,
if(Changeset.get_field(@changeset, :type) == :shotgun,
do: gettext("Slug core"),
else: gettext("Bullet core")
),
class: "title text-lg text-primary-600"
) %>
<%= text_input(f, :bullet_core,
class: "text-center col-span-2 input input-primary",
maxlength: 255,
placeholder: gettext("Steel")
) %>
<%= error_tag(f, :bullet_core, "col-span-3 text-center") %>
<%= if Changeset.get_field(@changeset, :type) in [:rifle, :pistol] do %>
<%= label(f, :jacket_type, gettext("Jacket type"), class: "title text-lg text-primary-600") %>
<%= text_input(f, :jacket_type,
class: "text-center col-span-2 input input-primary",
maxlength: 255,
placeholder: gettext("Bimetal")
) %>
<%= error_tag(f, :jacket_type, "col-span-3 text-center") %>
<% else %>
<%= hidden_input(f, :jacket_type, value: nil) %>
<% end %>
<%= label(f, :case_material, gettext("Case material"), class: "title text-lg text-primary-600") %>
<%= text_input(f, :case_material,
class: "text-center col-span-2 input input-primary",
maxlength: 255,
placeholder: gettext("Brass")
) %>
<%= error_tag(f, :case_material, "col-span-3 text-center") %>
<%= if Changeset.get_field(@changeset, :type) == :shotgun do %>
<%= label(f, :wadding, gettext("Wadding"), class: "title text-lg text-primary-600") %>
<%= text_input(f, :wadding,
class: "text-center col-span-2 input input-primary",
maxlength: 255
) %>
<%= error_tag(f, :wadding, "col-span-3 text-center") %>
<%= label(f, :shot_type, gettext("Shot type"), class: "title text-lg text-primary-600") %>
<%= text_input(f, :shot_type,
class: "text-center col-span-2 input input-primary",
maxlength: 255,
placeholder: gettext("Target, bird, buck, etc")
) %>
<%= error_tag(f, :shot_type, "col-span-3 text-center") %>
<%= label(f, :shot_material, gettext("Shot material"),
class: "title text-lg text-primary-600"
) %>
<%= text_input(f, :shot_material,
class: "text-center col-span-2 input input-primary",
maxlength: 255
) %>
<%= error_tag(f, :shot_material, "col-span-3 text-center") %>
<%= label(f, :shot_size, gettext("Shot size"), class: "title text-lg text-primary-600") %>
<%= text_input(f, :shot_size,
class: "text-center col-span-2 input input-primary",
maxlength: 255
) %>
<%= error_tag(f, :shot_size, "col-span-3 text-center") %>
<%= label(f, :load_grains, gettext("Load grains"), class: "title text-lg text-primary-600") %>
<%= number_input(f, :load_grains,
step: "1",
class: "text-center col-span-2 input input-primary",
min: 1
) %>
<%= error_tag(f, :load_grains, "col-span-3 text-center") %>
<%= label(f, :shot_charge_weight, gettext("Shot charge weight"),
class: "title text-lg text-primary-600"
) %>
<%= text_input(f, :shot_charge_weight,
class: "text-center col-span-2 input input-primary",
maxlength: 255
) %>
<%= error_tag(f, :shot_charge_weight, "col-span-3 text-center") %>
<% else %>
<%= hidden_input(f, :wadding, value: nil) %>
<%= hidden_input(f, :shot_type, value: nil) %>
<%= hidden_input(f, :shot_material, value: nil) %>
<%= hidden_input(f, :shot_size, value: nil) %>
<%= hidden_input(f, :load_grains, value: nil) %>
<%= hidden_input(f, :shot_charge_weight, value: nil) %>
<% end %>
<h2 class="text-center title text-lg text-primary-600 col-span-3">
<%= gettext("Powder") %>
</h2>
<%= label(f, :powder_type, gettext("Powder type"), class: "title text-lg text-primary-600") %>
<%= text_input(f, :powder_type,
class: "text-center col-span-2 input input-primary",
maxlength: 255
) %>
<%= error_tag(f, :powder_type, "col-span-3 text-center") %>
<%= if Changeset.get_field(@changeset, :type) in [:rifle, :pistol] do %>
<%= label(f, :powder_grains_per_charge, gettext("Powder grains per charge"),
class: "title text-lg text-primary-600"
) %>
<%= number_input(f, :powder_grains_per_charge,
step: "1",
class: "text-center col-span-2 input input-primary",
min: 1
) %>
<%= error_tag(f, :powder_grains_per_charge, "col-span-3 text-center") %>
<% else %>
<%= hidden_input(f, :powder_grains_per_charge, value: nil) %>
<% end %>
<%= label(f, :pressure, gettext("Pressure"), class: "title text-lg text-primary-600") %> <%= label(f, :pressure, gettext("Pressure"), class: "title text-lg text-primary-600") %>
<%= text_input(f, :pressure, <%= text_input(f, :pressure,
class: "text-center col-span-2 input input-primary", class: "text-center col-span-2 input input-primary",
@ -131,6 +262,37 @@
) %> ) %>
<%= error_tag(f, :pressure, "col-span-3 text-center") %> <%= error_tag(f, :pressure, "col-span-3 text-center") %>
<%= if Changeset.get_field(@changeset, :type) == :shotgun do %>
<%= label(f, :dram_equivalent, gettext("Dram equivalent"),
class: "title text-lg text-primary-600"
) %>
<%= text_input(f, :dram_equivalent,
class: "text-center col-span-2 input input-primary",
maxlength: 255
) %>
<%= error_tag(f, :dram_equivalent, "col-span-3 text-center") %>
<% else %>
<%= hidden_input(f, :dram_equivalent, value: nil) %>
<% end %>
<%= if Changeset.get_field(@changeset, :type) in [:rifle, :pistol] do %>
<%= label(f, :muzzle_velocity, gettext("Muzzle velocity"),
class: "title text-lg text-primary-600"
) %>
<%= number_input(f, :muzzle_velocity,
step: "1",
class: "text-center col-span-2 input input-primary",
min: 1
) %>
<%= error_tag(f, :muzzle_velocity, "col-span-3 text-center") %>
<% else %>
<%= hidden_input(f, :muzzle_velocity, value: nil) %>
<% end %>
<h2 class="text-center title text-lg text-primary-600 col-span-3">
<%= gettext("Primer") %>
</h2>
<%= label(f, :primer_type, gettext("Primer type"), class: "title text-lg text-primary-600") %> <%= label(f, :primer_type, gettext("Primer type"), class: "title text-lg text-primary-600") %>
<%= text_input(f, :primer_type, <%= text_input(f, :primer_type,
class: "text-center col-span-2 input input-primary", class: "text-center col-span-2 input input-primary",
@ -147,6 +309,10 @@
) %> ) %>
<%= error_tag(f, :firing_type, "col-span-3 text-center") %> <%= error_tag(f, :firing_type, "col-span-3 text-center") %>
<h2 class="text-center title text-lg text-primary-600 col-span-3">
<%= gettext("Attributes") %>
</h2>
<%= label(f, :tracer, gettext("Tracer"), class: "title text-lg text-primary-600") %> <%= label(f, :tracer, gettext("Tracer"), class: "title text-lg text-primary-600") %>
<%= checkbox(f, :tracer, class: "text-center col-span-2 checkbox") %> <%= checkbox(f, :tracer, class: "text-center col-span-2 checkbox") %>
<%= error_tag(f, :tracer, "col-span-3 text-center") %> <%= error_tag(f, :tracer, "col-span-3 text-center") %>
@ -163,6 +329,10 @@
<%= checkbox(f, :corrosive, class: "text-center col-span-2 checkbox") %> <%= checkbox(f, :corrosive, class: "text-center col-span-2 checkbox") %>
<%= error_tag(f, :corrosive, "col-span-3 text-center") %> <%= error_tag(f, :corrosive, "col-span-3 text-center") %>
<h2 class="text-center title text-lg text-primary-600 col-span-3">
<%= gettext("Manufacturer") %>
</h2>
<%= label(f, :manufacturer, gettext("Manufacturer"), class: "title text-lg text-primary-600") %> <%= label(f, :manufacturer, gettext("Manufacturer"), class: "title text-lg text-primary-600") %>
<%= text_input(f, :manufacturer, <%= text_input(f, :manufacturer,
class: "text-center col-span-2 input input-primary", class: "text-center col-span-2 input input-primary",

View File

@ -8,11 +8,11 @@ defmodule CanneryWeb.AmmoTypeLive.Index do
@impl true @impl true
def mount(%{"search" => search}, _session, socket) do def mount(%{"search" => search}, _session, socket) do
{:ok, socket |> assign(show_used: false, search: search) |> list_ammo_types()} {:ok, socket |> assign(type: :all, show_used: false, search: search) |> list_ammo_types()}
end end
def mount(_params, _session, socket) do def mount(_params, _session, socket) do
{:ok, socket |> assign(show_used: false, search: nil) |> list_ammo_types()} {:ok, socket |> assign(type: :all, show_used: false, search: nil) |> list_ammo_types()}
end end
@impl true @impl true
@ -86,7 +86,29 @@ defmodule CanneryWeb.AmmoTypeLive.Index do
{:noreply, socket |> push_patch(to: search_path)} {:noreply, socket |> push_patch(to: search_path)}
end end
defp list_ammo_types(%{assigns: %{search: search, current_user: current_user}} = socket) do def handle_event("change_type", %{"ammo_type" => %{"type" => "rifle"}}, socket) do
socket |> assign(ammo_types: Ammo.list_ammo_types(search, current_user)) {:noreply, socket |> assign(:type, :rifle) |> list_ammo_types()}
end
def handle_event("change_type", %{"ammo_type" => %{"type" => "shotgun"}}, socket) do
{:noreply, socket |> assign(:type, :shotgun) |> list_ammo_types()}
end
def handle_event("change_type", %{"ammo_type" => %{"type" => "pistol"}}, socket) do
{:noreply, socket |> assign(:type, :pistol) |> list_ammo_types()}
end
def handle_event("change_type", %{"ammo_type" => %{"type" => _all}}, socket) do
{:noreply, socket |> assign(:type, :all) |> list_ammo_types()}
end
defp list_ammo_types(
%{assigns: %{type: type, search: search, current_user: current_user}} = socket
) do
socket
|> assign(
ammo_types: Ammo.list_ammo_types(search, current_user, type),
ammo_types_count: Ammo.get_ammo_types_count!(current_user)
)
end end
end end

View File

@ -3,7 +3,7 @@
<%= gettext("Catalog") %> <%= gettext("Catalog") %>
</h1> </h1>
<%= if @ammo_types |> Enum.empty?() and @search |> is_nil() do %> <%= if @ammo_types_count == 0 do %>
<h2 class="title text-xl text-primary-600"> <h2 class="title text-xl text-primary-600">
<%= gettext("No Ammo types") %> <%= gettext("No Ammo types") %>
<%= display_emoji("😔") %> <%= display_emoji("😔") %>
@ -17,17 +17,41 @@
<%= dgettext("actions", "New Ammo type") %> <%= dgettext("actions", "New Ammo type") %>
</.link> </.link>
<div class="w-full flex flex-col sm:flex-row justify-center items-center space-y-4 sm:space-y-0 sm:space-x-4 max-w-xl"> <div class="w-full flex flex-col sm:flex-row justify-center items-center space-y-4 sm:space-y-0 sm:space-x-4 max-w-2xl">
<.form
:let={f}
for={%{}}
as={:ammo_type}
phx-change="change_type"
phx-submit="change_type"
class="flex items-center"
>
<%= label(f, :type, gettext("Type"), class: "title text-primary-600 text-lg text-center") %>
<%= select(
f,
:type,
[
{gettext("All"), :all},
{gettext("Rifle"), :rifle},
{gettext("Shotgun"), :shotgun},
{gettext("Pistol"), :pistol}
],
class: "mx-2 my-1 min-w-md input input-primary",
value: @type
) %>
</.form>
<.form <.form
:let={f} :let={f}
for={%{}} for={%{}}
as={:search} as={:search}
phx-change="search" phx-change="search"
phx-submit="search" phx-submit="search"
class="grow self-stretch flex flex-col items-stretch" class="grow flex items-center"
> >
<%= text_input(f, :search_term, <%= text_input(f, :search_term,
class: "input input-primary", class: "grow input input-primary",
value: @search, value: @search,
role: "search", role: "search",
phx_debounce: 300, phx_debounce: 300,
@ -55,6 +79,7 @@
ammo_types={@ammo_types} ammo_types={@ammo_types}
current_user={@current_user} current_user={@current_user}
show_used={@show_used} show_used={@show_used}
type={@type}
> >
<:actions :let={ammo_type}> <:actions :let={ammo_type}>
<div class="px-4 py-2 space-x-4 flex justify-center items-center"> <div class="px-4 py-2 space-x-4 flex justify-center items-center">

View File

@ -7,28 +7,6 @@ defmodule CanneryWeb.AmmoTypeLive.Show do
alias Cannery.{ActivityLog, Ammo, Ammo.AmmoType, Containers} alias Cannery.{ActivityLog, Ammo, Ammo.AmmoType, Containers}
alias CanneryWeb.Endpoint alias CanneryWeb.Endpoint
@fields_list [
%{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, 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}
]
@impl true @impl true
def mount(_params, _session, socket), def mount(_params, _session, socket),
do: {:ok, socket |> assign(show_used: false, view_table: true)} do: {:ok, socket |> assign(show_used: false, view_table: true)}
@ -65,8 +43,8 @@ defmodule CanneryWeb.AmmoTypeLive.Show do
socket, socket,
%AmmoType{name: ammo_type_name} = ammo_type %AmmoType{name: ammo_type_name} = ammo_type
) do ) do
fields_to_display = custom_fields? =
@fields_list fields_to_display(ammo_type)
|> Enum.any?(fn %{key: field, type: type} -> |> Enum.any?(fn %{key: field, type: type} ->
default_value = default_value =
case type do case type do
@ -125,8 +103,8 @@ defmodule CanneryWeb.AmmoTypeLive.Show do
packs_count: ammo_type |> Ammo.get_ammo_groups_count_for_type(current_user), packs_count: ammo_type |> Ammo.get_ammo_groups_count_for_type(current_user),
used_packs_count: used_packs_count, used_packs_count: used_packs_count,
historical_packs_count: historical_packs_count, historical_packs_count: historical_packs_count,
fields_list: @fields_list, fields_to_display: fields_to_display(ammo_type),
fields_to_display: fields_to_display custom_fields?: custom_fields?
) )
end end
@ -138,6 +116,48 @@ defmodule CanneryWeb.AmmoTypeLive.Show do
socket |> display_ammo_type(ammo_type) socket |> display_ammo_type(ammo_type)
end end
defp fields_to_display(%AmmoType{type: type}) do
[
%{label: gettext("Cartridge:"), key: :cartridge, type: :string},
%{
label: if(type == :shotgun, do: gettext("Gauge:"), else: gettext("Caliber:")),
key: :caliber,
type: :string
},
%{label: gettext("Unfired length:"), key: :unfired_length, type: :string},
%{label: gettext("Brass height:"), key: :brass_height, type: :string},
%{label: gettext("Chamber size:"), key: :chamber_size, type: :string},
%{label: gettext("Grains:"), key: :grains, type: :string},
%{label: gettext("Bullet type:"), key: :bullet_type, type: :string},
%{label: gettext("Bullet core:"), key: :bullet_core, type: :string},
%{label: gettext("Jacket type:"), key: :jacket_type, type: :string},
%{label: gettext("Case material:"), key: :case_material, type: :string},
%{label: gettext("Wadding:"), key: :wadding, type: :string},
%{label: gettext("Shot type:"), key: :shot_type, type: :string},
%{label: gettext("Shot material:"), key: :shot_material, type: :string},
%{label: gettext("Shot size:"), key: :shot_size, type: :string},
%{label: gettext("Load grains:"), key: :load_grains, type: :string},
%{label: gettext("Shot charge weight:"), key: :shot_charge_weight, type: :string},
%{label: gettext("Powder type:"), key: :powder_type, type: :string},
%{
label: gettext("Powder grains per charge:"),
key: :powder_grains_per_charge,
type: :string
},
%{label: gettext("Pressure:"), key: :pressure, type: :string},
%{label: gettext("Dram equivalent:"), key: :dram_equivalent, type: :string},
%{label: gettext("Muzzle velocity:"), key: :muzzle_velocity, 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}
]
end
@spec display_currency(float()) :: String.t() @spec display_currency(float()) :: String.t()
defp display_currency(float), do: :erlang.float_to_binary(float, decimals: 2) defp display_currency(float), do: :erlang.float_to_binary(float, decimals: 2)
end end

View File

@ -42,9 +42,26 @@
<hr class="hr" /> <hr class="hr" />
<%= if @fields_to_display do %> <%= if @ammo_type.type || @custom_fields? do %>
<div class="grid sm:grid-cols-2 gap-4 text-center justify-center items-center"> <div class="grid sm:grid-cols-2 gap-4 text-center justify-center items-center">
<%= for %{label: label, key: key, type: type} <- @fields_list do %> <h3 class="title text-lg">
<%= gettext("Type") %>
</h3>
<span class="text-primary-600">
<%= case @ammo_type.type do %>
<% :shotgun -> %>
<%= gettext("Shotgun") %>
<% :rifle -> %>
<%= gettext("Rifle") %>
<% :pistol -> %>
<%= gettext("Pistol") %>
<% _ -> %>
<%= gettext("None specified") %>
<% end %>
</span>
<%= for %{label: label, key: key, type: type} <- @fields_to_display do %>
<%= if @ammo_type |> Map.get(key) do %> <%= if @ammo_type |> Map.get(key) do %>
<h3 class="title text-lg"> <h3 class="title text-lg">
<%= label %> <%= label %>

View File

@ -17,17 +17,17 @@
<%= dgettext("actions", "New Container") %> <%= dgettext("actions", "New Container") %>
</.link> </.link>
<div class="w-full flex flex-col sm:flex-row justify-center items-center space-y-4 sm:space-y-0 sm:space-x-4 max-w-xl"> <div class="w-full flex flex-col sm:flex-row justify-center items-center space-y-4 sm:space-y-0 sm:space-x-4 max-w-2xl">
<.form <.form
:let={f} :let={f}
for={%{}} for={%{}}
as={:search} as={:search}
phx-change="search" phx-change="search"
phx-submit="search" phx-submit="search"
class="grow self-stretch flex flex-col items-stretch" class="grow flex items-center"
> >
<%= text_input(f, :search_term, <%= text_input(f, :search_term,
class: "input input-primary", class: "grow input input-primary",
value: @search, value: @search,
role: "search", role: "search",
phx_debounce: 300, phx_debounce: 300,
@ -41,80 +41,22 @@
</span> </span>
</.toggle_button> </.toggle_button>
</div> </div>
<% end %>
<%= if @containers |> Enum.empty?() do %> <%= if @containers |> Enum.empty?() do %>
<h2 class="title text-xl text-primary-600"> <h2 class="title text-xl text-primary-600">
<%= gettext("No containers") %> <%= gettext("No containers") %>
<%= display_emoji("😔") %> <%= display_emoji("😔") %>
</h2> </h2>
<% else %>
<%= if @view_table do %>
<.live_component
module={CanneryWeb.Components.ContainerTableComponent}
id="containers_index_table"
action={@live_action}
containers={@containers}
current_user={@current_user}
>
<:tag_actions :let={container}>
<div class="mx-4 my-2">
<.link
patch={Routes.container_index_path(Endpoint, :edit_tags, container)}
class="text-primary-600 link"
aria-label={
dgettext("actions", "Tag %{container_name}", container_name: container.name)
}
>
<i class="fa-fw fa-lg fas fa-tags"></i>
</.link>
</div>
</:tag_actions>
<:actions :let={container}>
<.link
patch={Routes.container_index_path(Endpoint, :edit, container)}
class="text-primary-600 link"
aria-label={
dgettext("actions", "Edit %{container_name}", container_name: container.name)
}
>
<i class="fa-fw fa-lg fas fa-edit"></i>
</.link>
<.link
patch={Routes.container_index_path(Endpoint, :clone, container)}
class="text-primary-600 link"
aria-label={
dgettext("actions", "Clone %{container_name}", container_name: container.name)
}
>
<i class="fa-fw fa-lg fas fa-copy"></i>
</.link>
<.link
href="#"
class="text-primary-600 link"
phx-click="delete"
phx-value-id={container.id}
data-confirm={
dgettext("prompts", "Are you sure you want to delete %{name}?", name: container.name)
}
aria-label={
dgettext("actions", "Delete %{container_name}", container_name: container.name)
}
>
<i class="fa-fw fa-lg fas fa-trash"></i>
</.link>
</:actions>
</.live_component>
<% else %> <% else %>
<div class="w-full flex flex-row flex-wrap justify-center items-stretch"> <%= if @view_table do %>
<.container_card <.live_component
:for={container <- @containers} module={CanneryWeb.Components.ContainerTableComponent}
container={container} id="containers_index_table"
action={@live_action}
containers={@containers}
current_user={@current_user} current_user={@current_user}
> >
<:tag_actions> <:tag_actions :let={container}>
<div class="mx-4 my-2"> <div class="mx-4 my-2">
<.link <.link
patch={Routes.container_index_path(Endpoint, :edit_tags, container)} patch={Routes.container_index_path(Endpoint, :edit_tags, container)}
@ -127,42 +69,104 @@
</.link> </.link>
</div> </div>
</:tag_actions> </:tag_actions>
<.link <:actions :let={container}>
patch={Routes.container_index_path(Endpoint, :edit, container)} <.link
class="text-primary-600 link" patch={Routes.container_index_path(Endpoint, :edit, container)}
aria-label={ class="text-primary-600 link"
dgettext("actions", "Edit %{container_name}", container_name: container.name) aria-label={
} dgettext("actions", "Edit %{container_name}", container_name: container.name)
> }
<i class="fa-fw fa-lg fas fa-edit"></i> >
</.link> <i class="fa-fw fa-lg fas fa-edit"></i>
</.link>
<.link <.link
patch={Routes.container_index_path(Endpoint, :clone, container)} patch={Routes.container_index_path(Endpoint, :clone, container)}
class="text-primary-600 link" class="text-primary-600 link"
aria-label={ aria-label={
dgettext("actions", "Clone %{container_name}", container_name: container.name) dgettext("actions", "Clone %{container_name}", container_name: container.name)
} }
> >
<i class="fa-fw fa-lg fas fa-copy"></i> <i class="fa-fw fa-lg fas fa-copy"></i>
</.link> </.link>
<.link <.link
href="#" href="#"
class="text-primary-600 link" class="text-primary-600 link"
phx-click="delete" phx-click="delete"
phx-value-id={container.id} phx-value-id={container.id}
data-confirm={ data-confirm={
dgettext("prompts", "Are you sure you want to delete %{name}?", name: container.name) dgettext("prompts", "Are you sure you want to delete %{name}?",
} name: container.name
aria-label={ )
dgettext("actions", "Delete %{container_name}", container_name: container.name) }
} aria-label={
dgettext("actions", "Delete %{container_name}", container_name: container.name)
}
>
<i class="fa-fw fa-lg fas fa-trash"></i>
</.link>
</:actions>
</.live_component>
<% else %>
<div class="w-full flex flex-row flex-wrap justify-center items-stretch">
<.container_card
:for={container <- @containers}
container={container}
current_user={@current_user}
> >
<i class="fa-fw fa-lg fas fa-trash"></i> <:tag_actions>
</.link> <div class="mx-4 my-2">
</.container_card> <.link
</div> patch={Routes.container_index_path(Endpoint, :edit_tags, container)}
class="text-primary-600 link"
aria-label={
dgettext("actions", "Tag %{container_name}", container_name: container.name)
}
>
<i class="fa-fw fa-lg fas fa-tags"></i>
</.link>
</div>
</:tag_actions>
<.link
patch={Routes.container_index_path(Endpoint, :edit, container)}
class="text-primary-600 link"
aria-label={
dgettext("actions", "Edit %{container_name}", container_name: container.name)
}
>
<i class="fa-fw fa-lg fas fa-edit"></i>
</.link>
<.link
patch={Routes.container_index_path(Endpoint, :clone, container)}
class="text-primary-600 link"
aria-label={
dgettext("actions", "Clone %{container_name}", container_name: container.name)
}
>
<i class="fa-fw fa-lg fas fa-copy"></i>
</.link>
<.link
href="#"
class="text-primary-600 link"
phx-click="delete"
phx-value-id={container.id}
data-confirm={
dgettext("prompts", "Are you sure you want to delete %{name}?",
name: container.name
)
}
aria-label={
dgettext("actions", "Delete %{container_name}", container_name: container.name)
}
>
<i class="fa-fw fa-lg fas fa-trash"></i>
</.link>
</.container_card>
</div>
<% end %>
<% end %> <% end %>
<% end %> <% end %>
</div> </div>

View File

@ -11,7 +11,7 @@ defmodule CanneryWeb.ContainerLive.Show do
@impl true @impl true
def mount(_params, _session, socket), def mount(_params, _session, socket),
do: {:ok, socket |> assign(show_used: false, view_table: true)} do: {:ok, socket |> assign(type: :all, view_table: true)}
@impl true @impl true
def handle_params(%{"id" => id}, _session, %{assigns: %{current_user: current_user}} = socket) do def handle_params(%{"id" => id}, _session, %{assigns: %{current_user: current_user}} = socket) do
@ -82,22 +82,34 @@ defmodule CanneryWeb.ContainerLive.Show do
{:noreply, socket} {:noreply, socket}
end end
def handle_event("toggle_show_used", _params, %{assigns: %{show_used: show_used}} = socket) do
{:noreply, socket |> assign(:show_used, !show_used) |> render_container()}
end
def handle_event("toggle_table", _params, %{assigns: %{view_table: view_table}} = socket) do def handle_event("toggle_table", _params, %{assigns: %{view_table: view_table}} = socket) do
{:noreply, socket |> assign(:view_table, !view_table) |> render_container()} {:noreply, socket |> assign(:view_table, !view_table) |> render_container()}
end end
def handle_event("change_type", %{"ammo_type" => %{"type" => "rifle"}}, socket) do
{:noreply, socket |> assign(:type, :rifle) |> render_container()}
end
def handle_event("change_type", %{"ammo_type" => %{"type" => "shotgun"}}, socket) do
{:noreply, socket |> assign(:type, :shotgun) |> render_container()}
end
def handle_event("change_type", %{"ammo_type" => %{"type" => "pistol"}}, socket) do
{:noreply, socket |> assign(:type, :pistol) |> render_container()}
end
def handle_event("change_type", %{"ammo_type" => %{"type" => _all}}, socket) do
{:noreply, socket |> assign(:type, :all) |> render_container()}
end
@spec render_container(Socket.t(), Container.id(), User.t()) :: Socket.t() @spec render_container(Socket.t(), Container.id(), User.t()) :: Socket.t()
defp render_container( defp render_container(
%{assigns: %{live_action: live_action, show_used: show_used}} = socket, %{assigns: %{type: type, live_action: live_action}} = socket,
id, id,
current_user current_user
) do ) do
%{name: container_name} = container = Containers.get_container!(id, current_user) %{name: container_name} = container = Containers.get_container!(id, current_user)
ammo_groups = Ammo.list_ammo_groups_for_container(container, current_user, show_used) ammo_groups = Ammo.list_ammo_groups_for_container(container, type, current_user)
original_counts = ammo_groups |> Ammo.get_original_counts(current_user) original_counts = ammo_groups |> Ammo.get_original_counts(current_user)
cprs = ammo_groups |> Ammo.get_cprs(current_user) cprs = ammo_groups |> Ammo.get_cprs(current_user)
last_used_dates = ammo_groups |> ActivityLog.get_last_used_dates(current_user) last_used_dates = ammo_groups |> ActivityLog.get_last_used_dates(current_user)
@ -113,6 +125,7 @@ defmodule CanneryWeb.ContainerLive.Show do
|> assign( |> assign(
container: container, container: container,
round_count: Ammo.get_round_count_for_container!(container, current_user), round_count: Ammo.get_round_count_for_container!(container, current_user),
ammo_groups_count: Ammo.get_ammo_groups_count_for_container!(container, current_user),
ammo_groups: ammo_groups, ammo_groups: ammo_groups,
original_counts: original_counts, original_counts: original_counts,
cprs: cprs, cprs: cprs,

View File

@ -18,22 +18,15 @@
<%= @container.location %> <%= @container.location %>
</span> </span>
<%= unless @ammo_groups |> Enum.empty?() do %> <span class="rounded-lg title text-lg">
<span class="rounded-lg title text-lg"> <%= gettext("Packs:") %>
<%= gettext("Packs:") %> <%= @ammo_groups_count %>
<%= @ammo_groups |> Enum.reject(fn %{count: count} -> count in [0, nil] end) |> Enum.count() %> </span>
</span>
<span :if={@show_used} class="rounded-lg title text-lg"> <span class="rounded-lg title text-lg">
<%= gettext("Total packs:") %> <%= gettext("Rounds:") %>
<%= Enum.count(@ammo_groups) %> <%= @round_count %>
</span> </span>
<span class="rounded-lg title text-lg">
<%= gettext("Rounds:") %>
<%= @round_count %>
</span>
<% end %>
<div class="flex space-x-4 justify-center items-center text-primary-600"> <div class="flex space-x-4 justify-center items-center text-primary-600">
<.link <.link
@ -93,11 +86,29 @@
<hr class="mb-4 hr" /> <hr class="mb-4 hr" />
<div class="flex justify-center items-center space-x-4"> <div class="flex justify-center items-center space-x-4">
<.toggle_button action="toggle_show_used" value={@show_used}> <.form
<span class="title text-lg text-primary-600"> :let={f}
<%= gettext("Show used") %> for={%{}}
</span> as={:ammo_type}
</.toggle_button> phx-change="change_type"
phx-submit="change_type"
class="flex items-center"
>
<%= label(f, :type, gettext("Type"), class: "title text-primary-600 text-lg text-center") %>
<%= select(
f,
:type,
[
{gettext("All"), :all},
{gettext("Rifle"), :rifle},
{gettext("Shotgun"), :shotgun},
{gettext("Pistol"), :pistol}
],
class: "mx-2 my-1 min-w-md input input-primary",
value: @type
) %>
</.form>
<.toggle_button action="toggle_table" value={@view_table}> <.toggle_button action="toggle_table" value={@view_table}>
<span class="title text-lg text-primary-600"> <span class="title text-lg text-primary-600">
@ -118,7 +129,7 @@
id="ammo-type-show-table" id="ammo-type-show-table"
ammo_groups={@ammo_groups} ammo_groups={@ammo_groups}
current_user={@current_user} current_user={@current_user}
show_used={@show_used} show_used={false}
> >
<:ammo_type :let={%{name: ammo_type_name} = ammo_type}> <:ammo_type :let={%{name: ammo_type_name} = ammo_type}>
<.link navigate={Routes.ammo_type_show_path(Endpoint, :show, ammo_type)} class="link"> <.link navigate={Routes.ammo_type_show_path(Endpoint, :show, ammo_type)} class="link">

View File

@ -10,11 +10,11 @@ defmodule CanneryWeb.RangeLive.Index do
@impl true @impl true
def mount(%{"search" => search}, _session, socket) do def mount(%{"search" => search}, _session, socket) do
{:ok, socket |> assign(search: search) |> display_shot_groups()} {:ok, socket |> assign(type: :all, search: search) |> display_shot_groups()}
end end
def mount(_params, _session, socket) do def mount(_params, _session, socket) do
{:ok, socket |> assign(search: nil) |> display_shot_groups()} {:ok, socket |> assign(type: :all, search: nil) |> display_shot_groups()}
end end
@impl true @impl true
@ -102,9 +102,27 @@ defmodule CanneryWeb.RangeLive.Index do
{:noreply, socket |> push_patch(to: Routes.range_index_path(Endpoint, :search, search_term))} {:noreply, socket |> push_patch(to: Routes.range_index_path(Endpoint, :search, search_term))}
end end
def handle_event("change_type", %{"ammo_type" => %{"type" => "rifle"}}, socket) do
{:noreply, socket |> assign(:type, :rifle) |> display_shot_groups()}
end
def handle_event("change_type", %{"ammo_type" => %{"type" => "shotgun"}}, socket) do
{:noreply, socket |> assign(:type, :shotgun) |> display_shot_groups()}
end
def handle_event("change_type", %{"ammo_type" => %{"type" => "pistol"}}, socket) do
{:noreply, socket |> assign(:type, :pistol) |> display_shot_groups()}
end
def handle_event("change_type", %{"ammo_type" => %{"type" => _all}}, socket) do
{:noreply, socket |> assign(:type, :all) |> display_shot_groups()}
end
@spec display_shot_groups(Socket.t()) :: Socket.t() @spec display_shot_groups(Socket.t()) :: Socket.t()
defp display_shot_groups(%{assigns: %{search: search, current_user: current_user}} = socket) do defp display_shot_groups(
shot_groups = ActivityLog.list_shot_groups(search, current_user) %{assigns: %{type: type, search: search, current_user: current_user}} = socket
) do
shot_groups = ActivityLog.list_shot_groups(search, type, current_user)
ammo_groups = Ammo.list_staged_ammo_groups(current_user) ammo_groups = Ammo.list_staged_ammo_groups(current_user)
chart_data = shot_groups |> get_chart_data_for_shot_group() chart_data = shot_groups |> get_chart_data_for_shot_group()
original_counts = ammo_groups |> Ammo.get_original_counts(current_user) original_counts = ammo_groups |> Ammo.get_original_counts(current_user)

View File

@ -74,17 +74,41 @@
<%= dgettext("errors", "Your browser does not support the canvas element.") %> <%= dgettext("errors", "Your browser does not support the canvas element.") %>
</canvas> </canvas>
<div class="w-full flex flex-col sm:flex-row justify-center items-center space-y-4 sm:space-y-0 sm:space-x-4 max-w-xl"> <div class="w-full flex flex-col sm:flex-row justify-center items-center space-y-4 sm:space-y-0 sm:space-x-4 max-w-2xl">
<.form
:let={f}
for={%{}}
as={:ammo_type}
phx-change="change_type"
phx-submit="change_type"
class="flex items-center"
>
<%= label(f, :type, gettext("Type"), class: "title text-primary-600 text-lg text-center") %>
<%= select(
f,
:type,
[
{gettext("All"), :all},
{gettext("Rifle"), :rifle},
{gettext("Shotgun"), :shotgun},
{gettext("Pistol"), :pistol}
],
class: "mx-2 my-1 min-w-md input input-primary",
value: @type
) %>
</.form>
<.form <.form
:let={f} :let={f}
for={%{}} for={%{}}
as={:search} as={:search}
phx-change="search" phx-change="search"
phx-submit="search" phx-submit="search"
class="grow self-stretch flex flex-col items-stretch" class="grow flex items-center"
> >
<%= text_input(f, :search_term, <%= text_input(f, :search_term,
class: "input input-primary", class: "grow input input-primary",
value: @search, value: @search,
role: "search", role: "search",
phx_debounce: 300, phx_debounce: 300,

View File

@ -18,57 +18,57 @@
<.link patch={Routes.tag_index_path(Endpoint, :new)} class="btn btn-primary"> <.link patch={Routes.tag_index_path(Endpoint, :new)} class="btn btn-primary">
<%= dgettext("actions", "New Tag") %> <%= dgettext("actions", "New Tag") %>
</.link> </.link>
<% end %>
<div class="w-full flex flex-col sm:flex-row justify-center items-center space-y-4 sm:space-y-0 sm:space-x-4 max-w-xl"> <div class="w-full flex flex-col sm:flex-row justify-center items-center space-y-4 sm:space-y-0 sm:space-x-4 max-w-2xl">
<.form <.form
:let={f} :let={f}
for={%{}} for={%{}}
as={:search} as={:search}
phx-change="search" phx-change="search"
phx-submit="search" phx-submit="search"
class="grow self-stretch flex flex-col items-stretch" class="grow flex items-center"
> >
<%= text_input(f, :search_term, <%= text_input(f, :search_term,
class: "input input-primary", class: "grow input input-primary",
value: @search, value: @search,
role: "search", role: "search",
phx_debounce: 300, phx_debounce: 300,
placeholder: gettext("Search tags") placeholder: gettext("Search tags")
) %> ) %>
</.form> </.form>
</div>
<%= if @tags |> Enum.empty?() do %>
<h2 class="title text-xl text-primary-600">
<%= gettext("No tags") %>
<%= display_emoji("😔") %>
</h2>
<% else %>
<div class="flex flex-row flex-wrap justify-center items-stretch">
<.tag_card :for={tag <- @tags} tag={tag}>
<.link
patch={Routes.tag_index_path(Endpoint, :edit, tag)}
class="text-primary-600 link"
aria-label={dgettext("actions", "Edit %{tag_name}", tag_name: tag.name)}
>
<i class="fa-fw fa-lg fas fa-edit"></i>
</.link>
<.link
href="#"
class="text-primary-600 link"
phx-click="delete"
phx-value-id={tag.id}
data-confirm={
dgettext("prompts", "Are you sure you want to delete %{name}?", name: tag.name)
}
aria-label={dgettext("actions", "Delete %{tag_name}", tag_name: tag.name)}
>
<i class="fa-fw fa-lg fas fa-trash"></i>
</.link>
</.tag_card>
</div> </div>
<%= if @tags |> Enum.empty?() do %>
<h2 class="title text-xl text-primary-600">
<%= gettext("No tags") %>
<%= display_emoji("😔") %>
</h2>
<% else %>
<div class="flex flex-row flex-wrap justify-center items-stretch">
<.tag_card :for={tag <- @tags} tag={tag}>
<.link
patch={Routes.tag_index_path(Endpoint, :edit, tag)}
class="text-primary-600 link"
aria-label={dgettext("actions", "Edit %{tag_name}", tag_name: tag.name)}
>
<i class="fa-fw fa-lg fas fa-edit"></i>
</.link>
<.link
href="#"
class="text-primary-600 link"
phx-click="delete"
phx-value-id={tag.id}
data-confirm={
dgettext("prompts", "Are you sure you want to delete %{name}?", name: tag.name)
}
aria-label={dgettext("actions", "Delete %{tag_name}", tag_name: tag.name)}
>
<i class="fa-fw fa-lg fas fa-trash"></i>
</.link>
</.tag_card>
</div>
<% end %>
<% end %> <% end %>
</div> </div>

View File

@ -12,12 +12,12 @@ msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.ex:54 #: lib/cannery_web/live/ammo_group_live/index.ex:54
#: lib/cannery_web/live/ammo_group_live/index.ex:62 #: lib/cannery_web/live/ammo_group_live/index.ex:62
#: lib/cannery_web/live/ammo_group_live/index.html.heex:41 #: lib/cannery_web/live/ammo_group_live/index.html.heex:38
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Add Ammo" msgid "Add Ammo"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:37 #: lib/cannery_web/live/ammo_group_live/index.html.heex:34
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Add your first box!" msgid "Add your first box!"
msgstr "" msgstr ""
@ -122,7 +122,7 @@ msgstr ""
#: lib/cannery_web/components/add_shot_group_component.html.heex:57 #: lib/cannery_web/components/add_shot_group_component.html.heex:57
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:84 #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:84
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:180 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:350
#: lib/cannery_web/live/container_live/form_component.html.heex:57 #: lib/cannery_web/live/container_live/form_component.html.heex:57
#: lib/cannery_web/live/invite_live/form_component.html.heex:35 #: lib/cannery_web/live/invite_live/form_component.html.heex:35
#: lib/cannery_web/live/range_live/form_component.html.heex:45 #: lib/cannery_web/live/range_live/form_component.html.heex:45
@ -136,7 +136,7 @@ msgstr ""
msgid "Send instructions to reset password" msgid "Send instructions to reset password"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:75 #: lib/cannery_web/live/container_live/show.html.heex:68
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Why not add one?" msgid "Why not add one?"
msgstr "" msgstr ""
@ -156,7 +156,7 @@ msgstr ""
msgid "Why not get some ready to shoot?" msgid "Why not get some ready to shoot?"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:105 #: lib/cannery_web/live/ammo_group_live/index.html.heex:125
#: lib/cannery_web/live/ammo_group_live/show.html.heex:103 #: lib/cannery_web/live/ammo_group_live/show.html.heex:103
#: lib/cannery_web/live/range_live/index.html.heex:45 #: lib/cannery_web/live/range_live/index.html.heex:45
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -178,7 +178,7 @@ msgstr ""
msgid "Copy to clipboard" msgid "Copy to clipboard"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:22 #: lib/cannery_web/live/ammo_group_live/index.html.heex:14
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "add a container first" msgid "add a container first"
msgstr "" msgstr ""
@ -203,13 +203,13 @@ msgstr ""
msgid "View in Catalog" msgid "View in Catalog"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:32 #: lib/cannery_web/live/ammo_group_live/index.html.heex:24
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "add an ammo type first" msgid "add an ammo type first"
msgstr "" msgstr ""
#: lib/cannery_web/components/move_ammo_group_component.ex:80 #: lib/cannery_web/components/move_ammo_group_component.ex:80
#: lib/cannery_web/live/ammo_group_live/index.html.heex:122 #: lib/cannery_web/live/ammo_group_live/index.html.heex:142
#: lib/cannery_web/live/ammo_group_live/show.html.heex:96 #: lib/cannery_web/live/ammo_group_live/show.html.heex:96
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Move ammo" msgid "Move ammo"
@ -237,13 +237,13 @@ msgstr ""
msgid "Export Data as JSON" msgid "Export Data as JSON"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:85 #: lib/cannery_web/live/ammo_type_live/index.html.heex:110
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Clone %{ammo_type_name}" msgid "Clone %{ammo_type_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:88 #: lib/cannery_web/live/container_live/index.html.heex:87
#: lib/cannery_web/live/container_live/index.html.heex:144 #: lib/cannery_web/live/container_live/index.html.heex:145
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Clone %{container_name}" msgid "Clone %{container_name}"
msgstr "" msgstr ""
@ -253,20 +253,20 @@ msgstr ""
msgid "Copy invite link for %{invite_name}" msgid "Copy invite link for %{invite_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:104 #: lib/cannery_web/live/ammo_type_live/index.html.heex:129
#: lib/cannery_web/live/ammo_type_live/show.html.heex:36 #: lib/cannery_web/live/ammo_type_live/show.html.heex:36
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Delete %{ammo_type_name}" msgid "Delete %{ammo_type_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:103 #: lib/cannery_web/live/container_live/index.html.heex:104
#: lib/cannery_web/live/container_live/index.html.heex:159 #: lib/cannery_web/live/container_live/index.html.heex:162
#: lib/cannery_web/live/container_live/show.html.heex:55 #: lib/cannery_web/live/container_live/show.html.heex:48
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Delete %{container_name}" msgid "Delete %{container_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/tag_live/index.html.heex:66 #: lib/cannery_web/live/tag_live/index.html.heex:65
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Delete %{tag_name}" msgid "Delete %{tag_name}"
msgstr "" msgstr ""
@ -277,30 +277,30 @@ msgid "Delete invite for %{invite_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:161 #: lib/cannery_web/live/ammo_group_live/show.ex:161
#: lib/cannery_web/live/range_live/index.html.heex:131 #: lib/cannery_web/live/range_live/index.html.heex:155
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Delete shot record of %{shot_group_count} shots" msgid "Delete shot record of %{shot_group_count} shots"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:75 #: lib/cannery_web/live/ammo_type_live/index.html.heex:100
#: lib/cannery_web/live/ammo_type_live/show.html.heex:19 #: lib/cannery_web/live/ammo_type_live/show.html.heex:19
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit %{ammo_type_name}" msgid "Edit %{ammo_type_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:78 #: lib/cannery_web/live/container_live/index.html.heex:77
#: lib/cannery_web/live/container_live/index.html.heex:134 #: lib/cannery_web/live/container_live/index.html.heex:135
#: lib/cannery_web/live/container_live/show.html.heex:42 #: lib/cannery_web/live/container_live/show.html.heex:35
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit %{container_name}" msgid "Edit %{container_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/tag_live/index.html.heex:53 #: lib/cannery_web/live/tag_live/index.html.heex:52
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit %{tag_name}" msgid "Edit %{tag_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:144 #: lib/cannery_web/live/ammo_group_live/index.html.heex:164
#: lib/cannery_web/live/ammo_group_live/show.html.heex:62 #: lib/cannery_web/live/ammo_group_live/show.html.heex:62
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit ammo group of %{ammo_group_count} bullets" msgid "Edit ammo group of %{ammo_group_count} bullets"
@ -316,45 +316,45 @@ msgstr ""
msgid "Edit shot group of %{shot_group_count} shots" msgid "Edit shot group of %{shot_group_count} shots"
msgstr "" msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:114 #: lib/cannery_web/live/range_live/index.html.heex:138
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit shot record of %{shot_group_count} shots" msgid "Edit shot record of %{shot_group_count} shots"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:98 #: lib/cannery_web/live/ammo_group_live/index.html.heex:118
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Stage" msgid "Stage"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:66 #: lib/cannery_web/live/container_live/index.html.heex:65
#: lib/cannery_web/live/container_live/index.html.heex:123 #: lib/cannery_web/live/container_live/index.html.heex:124
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Tag %{container_name}" msgid "Tag %{container_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:97 #: lib/cannery_web/live/ammo_group_live/index.html.heex:117
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Unstage" msgid "Unstage"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:65 #: lib/cannery_web/live/ammo_type_live/index.html.heex:90
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "View %{ammo_type_name}" msgid "View %{ammo_type_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:156 #: lib/cannery_web/live/ammo_group_live/index.html.heex:176
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Clone ammo group of %{ammo_group_count} bullets" msgid "Clone ammo group of %{ammo_group_count} bullets"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:171 #: lib/cannery_web/live/ammo_group_live/index.html.heex:191
#: lib/cannery_web/live/ammo_group_live/show.html.heex:76 #: lib/cannery_web/live/ammo_group_live/show.html.heex:76
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Delete ammo group of %{ammo_group_count} bullets" msgid "Delete ammo group of %{ammo_group_count} bullets"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:132 #: lib/cannery_web/live/ammo_group_live/index.html.heex:152
#: lib/cannery_web/live/ammo_type_live/show.html.heex:189 #: lib/cannery_web/live/ammo_type_live/show.html.heex:206
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "View ammo group of %{ammo_group_count} bullets" msgid "View ammo group of %{ammo_group_count} bullets"
msgstr "" msgstr ""

View File

@ -25,12 +25,12 @@ msgstr ""
## effect: edit them in PO (.po) files instead. ## effect: edit them in PO (.po) files instead.
#: lib/cannery_web/live/ammo_group_live/index.ex:54 #: lib/cannery_web/live/ammo_group_live/index.ex:54
#: lib/cannery_web/live/ammo_group_live/index.ex:62 #: lib/cannery_web/live/ammo_group_live/index.ex:62
#: lib/cannery_web/live/ammo_group_live/index.html.heex:41 #: lib/cannery_web/live/ammo_group_live/index.html.heex:38
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Add Ammo" msgid "Add Ammo"
msgstr "Munition hinzufügen" msgstr "Munition hinzufügen"
#: lib/cannery_web/live/ammo_group_live/index.html.heex:37 #: lib/cannery_web/live/ammo_group_live/index.html.heex:34
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Add your first box!" msgid "Add your first box!"
msgstr "Fügen Sie ihre erste Box hinzu!" msgstr "Fügen Sie ihre erste Box hinzu!"
@ -135,7 +135,7 @@ msgstr "Passwort zurücksetzen"
#: lib/cannery_web/components/add_shot_group_component.html.heex:57 #: lib/cannery_web/components/add_shot_group_component.html.heex:57
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:84 #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:84
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:180 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:350
#: lib/cannery_web/live/container_live/form_component.html.heex:57 #: lib/cannery_web/live/container_live/form_component.html.heex:57
#: lib/cannery_web/live/invite_live/form_component.html.heex:35 #: lib/cannery_web/live/invite_live/form_component.html.heex:35
#: lib/cannery_web/live/range_live/form_component.html.heex:45 #: lib/cannery_web/live/range_live/form_component.html.heex:45
@ -149,7 +149,7 @@ msgstr "Speichern"
msgid "Send instructions to reset password" msgid "Send instructions to reset password"
msgstr "Anleitung zum Passwort zurücksetzen zusenden" msgstr "Anleitung zum Passwort zurücksetzen zusenden"
#: lib/cannery_web/live/container_live/show.html.heex:75 #: lib/cannery_web/live/container_live/show.html.heex:68
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Why not add one?" msgid "Why not add one?"
msgstr "Warum fügen Sie keine hinzu?" msgstr "Warum fügen Sie keine hinzu?"
@ -169,7 +169,7 @@ msgstr "Munition markieren"
msgid "Why not get some ready to shoot?" msgid "Why not get some ready to shoot?"
msgstr "Warum nicht einige für den Schießstand auswählen?" msgstr "Warum nicht einige für den Schießstand auswählen?"
#: lib/cannery_web/live/ammo_group_live/index.html.heex:105 #: lib/cannery_web/live/ammo_group_live/index.html.heex:125
#: lib/cannery_web/live/ammo_group_live/show.html.heex:103 #: lib/cannery_web/live/ammo_group_live/show.html.heex:103
#: lib/cannery_web/live/range_live/index.html.heex:45 #: lib/cannery_web/live/range_live/index.html.heex:45
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -191,7 +191,7 @@ msgstr "Markieren"
msgid "Copy to clipboard" msgid "Copy to clipboard"
msgstr "In die Zwischenablage kopieren" msgstr "In die Zwischenablage kopieren"
#: lib/cannery_web/live/ammo_group_live/index.html.heex:22 #: lib/cannery_web/live/ammo_group_live/index.html.heex:14
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "add a container first" msgid "add a container first"
msgstr "Zuerst einen Behälter hinzufügen" msgstr "Zuerst einen Behälter hinzufügen"
@ -216,13 +216,13 @@ msgstr "Sprache wechseln"
msgid "View in Catalog" msgid "View in Catalog"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:32 #: lib/cannery_web/live/ammo_group_live/index.html.heex:24
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "add an ammo type first" msgid "add an ammo type first"
msgstr "" msgstr ""
#: lib/cannery_web/components/move_ammo_group_component.ex:80 #: lib/cannery_web/components/move_ammo_group_component.ex:80
#: lib/cannery_web/live/ammo_group_live/index.html.heex:122 #: lib/cannery_web/live/ammo_group_live/index.html.heex:142
#: lib/cannery_web/live/ammo_group_live/show.html.heex:96 #: lib/cannery_web/live/ammo_group_live/show.html.heex:96
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Move ammo" msgid "Move ammo"
@ -250,13 +250,13 @@ msgstr ""
msgid "Export Data as JSON" msgid "Export Data as JSON"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:85 #: lib/cannery_web/live/ammo_type_live/index.html.heex:110
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Clone %{ammo_type_name}" msgid "Clone %{ammo_type_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:88 #: lib/cannery_web/live/container_live/index.html.heex:87
#: lib/cannery_web/live/container_live/index.html.heex:144 #: lib/cannery_web/live/container_live/index.html.heex:145
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Clone %{container_name}" msgid "Clone %{container_name}"
msgstr "" msgstr ""
@ -266,20 +266,20 @@ msgstr ""
msgid "Copy invite link for %{invite_name}" msgid "Copy invite link for %{invite_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:104 #: lib/cannery_web/live/ammo_type_live/index.html.heex:129
#: lib/cannery_web/live/ammo_type_live/show.html.heex:36 #: lib/cannery_web/live/ammo_type_live/show.html.heex:36
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Delete %{ammo_type_name}" msgid "Delete %{ammo_type_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:103 #: lib/cannery_web/live/container_live/index.html.heex:104
#: lib/cannery_web/live/container_live/index.html.heex:159 #: lib/cannery_web/live/container_live/index.html.heex:162
#: lib/cannery_web/live/container_live/show.html.heex:55 #: lib/cannery_web/live/container_live/show.html.heex:48
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Delete %{container_name}" msgid "Delete %{container_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/tag_live/index.html.heex:66 #: lib/cannery_web/live/tag_live/index.html.heex:65
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Delete %{tag_name}" msgid "Delete %{tag_name}"
msgstr "" msgstr ""
@ -290,30 +290,30 @@ msgid "Delete invite for %{invite_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:161 #: lib/cannery_web/live/ammo_group_live/show.ex:161
#: lib/cannery_web/live/range_live/index.html.heex:131 #: lib/cannery_web/live/range_live/index.html.heex:155
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Delete shot record of %{shot_group_count} shots" msgid "Delete shot record of %{shot_group_count} shots"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:75 #: lib/cannery_web/live/ammo_type_live/index.html.heex:100
#: lib/cannery_web/live/ammo_type_live/show.html.heex:19 #: lib/cannery_web/live/ammo_type_live/show.html.heex:19
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit %{ammo_type_name}" msgid "Edit %{ammo_type_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:78 #: lib/cannery_web/live/container_live/index.html.heex:77
#: lib/cannery_web/live/container_live/index.html.heex:134 #: lib/cannery_web/live/container_live/index.html.heex:135
#: lib/cannery_web/live/container_live/show.html.heex:42 #: lib/cannery_web/live/container_live/show.html.heex:35
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit %{container_name}" msgid "Edit %{container_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/tag_live/index.html.heex:53 #: lib/cannery_web/live/tag_live/index.html.heex:52
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit %{tag_name}" msgid "Edit %{tag_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:144 #: lib/cannery_web/live/ammo_group_live/index.html.heex:164
#: lib/cannery_web/live/ammo_group_live/show.html.heex:62 #: lib/cannery_web/live/ammo_group_live/show.html.heex:62
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit ammo group of %{ammo_group_count} bullets" msgid "Edit ammo group of %{ammo_group_count} bullets"
@ -329,45 +329,45 @@ msgstr ""
msgid "Edit shot group of %{shot_group_count} shots" msgid "Edit shot group of %{shot_group_count} shots"
msgstr "" msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:114 #: lib/cannery_web/live/range_live/index.html.heex:138
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit shot record of %{shot_group_count} shots" msgid "Edit shot record of %{shot_group_count} shots"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:98 #: lib/cannery_web/live/ammo_group_live/index.html.heex:118
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Stage" msgid "Stage"
msgstr "Munition markieren" msgstr "Munition markieren"
#: lib/cannery_web/live/container_live/index.html.heex:66 #: lib/cannery_web/live/container_live/index.html.heex:65
#: lib/cannery_web/live/container_live/index.html.heex:123 #: lib/cannery_web/live/container_live/index.html.heex:124
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Tag %{container_name}" msgid "Tag %{container_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:97 #: lib/cannery_web/live/ammo_group_live/index.html.heex:117
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Unstage" msgid "Unstage"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:65 #: lib/cannery_web/live/ammo_type_live/index.html.heex:90
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "View %{ammo_type_name}" msgid "View %{ammo_type_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:156 #: lib/cannery_web/live/ammo_group_live/index.html.heex:176
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Clone ammo group of %{ammo_group_count} bullets" msgid "Clone ammo group of %{ammo_group_count} bullets"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:171 #: lib/cannery_web/live/ammo_group_live/index.html.heex:191
#: lib/cannery_web/live/ammo_group_live/show.html.heex:76 #: lib/cannery_web/live/ammo_group_live/show.html.heex:76
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Delete ammo group of %{ammo_group_count} bullets" msgid "Delete ammo group of %{ammo_group_count} bullets"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:132 #: lib/cannery_web/live/ammo_group_live/index.html.heex:152
#: lib/cannery_web/live/ammo_type_live/show.html.heex:189 #: lib/cannery_web/live/ammo_type_live/show.html.heex:206
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "View ammo group of %{ammo_group_count} bullets" msgid "View ammo group of %{ammo_group_count} bullets"
msgstr "" msgstr ""

View File

@ -38,7 +38,7 @@ msgstr "Admins:"
msgid "Ammo" msgid "Ammo"
msgstr "Munition" msgstr "Munition"
#: lib/cannery_web/components/ammo_group_table_component.ex:108 #: lib/cannery_web/components/ammo_group_table_component.ex:96
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:22 #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:22
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Ammo type" msgid "Ammo type"
@ -49,48 +49,48 @@ msgstr "Munitionsarten"
msgid "Background color" msgid "Background color"
msgstr "Hintergrundfarbe" msgstr "Hintergrundfarbe"
#: lib/cannery_web/components/ammo_type_table_component.ex:65 #: lib/cannery_web/components/ammo_type_table_component.ex:87
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:158 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:324
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Blank" msgid "Blank"
msgstr "Knallpatrone" msgstr "Knallpatrone"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:79 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:171
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Brass" msgid "Brass"
msgstr "Messing" msgstr "Messing"
#: lib/cannery_web/components/ammo_type_table_component.ex:47 #: lib/cannery_web/components/ammo_type_table_component.ex:62
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:51 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:144
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Bullet core" msgid "Bullet core"
msgstr "Projektilkern" msgstr "Projektilkern"
#: lib/cannery_web/components/ammo_type_table_component.ex:46 #: lib/cannery_web/components/ammo_type_table_component.ex:60
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:43 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:121
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Bullet type" msgid "Bullet type"
msgstr "Patronenart" msgstr "Patronenart"
#: lib/cannery_web/components/ammo_type_table_component.ex:49 #: lib/cannery_web/components/ammo_type_table_component.ex:51
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:67 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:68
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Caliber" msgid "Caliber"
msgstr "Kaliber" msgstr "Kaliber"
#: lib/cannery_web/components/ammo_type_table_component.ex:48 #: lib/cannery_web/components/ammo_type_table_component.ex:49
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:59 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:52
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Cartridge" msgid "Cartridge"
msgstr "Patrone" msgstr "Patrone"
#: lib/cannery_web/components/ammo_type_table_component.ex:50 #: lib/cannery_web/components/ammo_type_table_component.ex:67
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:75 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:167
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Case material" msgid "Case material"
msgstr "Gehäusematerial" msgstr "Gehäusematerial"
#: lib/cannery_web/components/ammo_group_table_component.ex:72 #: lib/cannery_web/components/ammo_group_table_component.ex:74
#: lib/cannery_web/components/move_ammo_group_component.ex:67 #: lib/cannery_web/components/move_ammo_group_component.ex:67
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:59 #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:59
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -105,13 +105,13 @@ msgstr "Behälter"
msgid "Containers" msgid "Containers"
msgstr "Behälter" msgstr "Behälter"
#: lib/cannery_web/components/ammo_type_table_component.ex:66 #: lib/cannery_web/components/ammo_type_table_component.ex:88
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:162 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:328
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Corrosive" msgid "Corrosive"
msgstr "Korrosiv" msgstr "Korrosiv"
#: lib/cannery_web/components/ammo_group_table_component.ex:100 #: lib/cannery_web/components/ammo_group_table_component.ex:92
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:28 #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:28
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Count" msgid "Count"
@ -124,7 +124,7 @@ msgid "Count:"
msgstr "Anzahl:" msgstr "Anzahl:"
#: lib/cannery_web/components/container_table_component.ex:46 #: lib/cannery_web/components/container_table_component.ex:46
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:28 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:38
#: lib/cannery_web/live/container_live/form_component.html.heex:29 #: lib/cannery_web/live/container_live/form_component.html.heex:29
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Description" msgid "Description"
@ -151,24 +151,19 @@ msgstr "Einladung bearbeiten"
msgid "Edit Tag" msgid "Edit Tag"
msgstr "Tag bearbeiten" msgstr "Tag bearbeiten"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:41 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:135
#, elixir-autogen, elixir-format
msgid "Example bullet type abbreviations"
msgstr "Beispiel Munitionstyp Abkürzungen"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:47
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "FMJ" msgid "FMJ"
msgstr "VM" msgstr "VM"
#: lib/cannery_web/components/ammo_type_table_component.ex:59 #: lib/cannery_web/components/ammo_type_table_component.ex:59
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:118 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:112
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Grains" msgid "Grains"
msgstr "Körner" msgstr "Körner"
#: lib/cannery_web/components/ammo_type_table_component.ex:64 #: lib/cannery_web/components/ammo_type_table_component.ex:86
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:154 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:320
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Incendiary" msgid "Incendiary"
msgstr "Brandmunition" msgstr "Brandmunition"
@ -218,8 +213,9 @@ msgstr "Standort:"
msgid "Magazine, Clip, Ammo Box, etc" msgid "Magazine, Clip, Ammo Box, etc"
msgstr "Magazin, Ladestreifen, Munitionskiste usw." msgstr "Magazin, Ladestreifen, Munitionskiste usw."
#: lib/cannery_web/components/ammo_type_table_component.ex:67 #: lib/cannery_web/components/ammo_type_table_component.ex:89
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:166 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:333
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:336
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Manufacturer" msgid "Manufacturer"
msgstr "Hersteller" msgstr "Hersteller"
@ -234,9 +230,9 @@ msgstr "Metallene Munitionskiste mit Anime-Girl-Sticker"
msgid "My cool ammo can" msgid "My cool ammo can"
msgstr "Meine coole Munitionskiste" msgstr "Meine coole Munitionskiste"
#: lib/cannery_web/components/ammo_type_table_component.ex:45 #: lib/cannery_web/components/ammo_type_table_component.ex:153
#: lib/cannery_web/components/container_table_component.ex:45 #: lib/cannery_web/components/container_table_component.ex:45
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:21 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:31
#: lib/cannery_web/live/container_live/form_component.html.heex:21 #: lib/cannery_web/live/container_live/form_component.html.heex:21
#: lib/cannery_web/live/invite_live/form_component.html.heex:21 #: lib/cannery_web/live/invite_live/form_component.html.heex:21
#: lib/cannery_web/live/tag_live/form_component.html.heex:21 #: lib/cannery_web/live/tag_live/form_component.html.heex:21
@ -266,19 +262,18 @@ msgstr "Neue Einladung"
msgid "New Tag" msgid "New Tag"
msgstr "Neuer Tag" msgstr "Neuer Tag"
#: lib/cannery_web/live/ammo_group_live/index.html.heex:10 #: lib/cannery_web/live/ammo_group_live/index.html.heex:92
#: lib/cannery_web/live/ammo_group_live/index.html.heex:72
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No Ammo" msgid "No Ammo"
msgstr "Keine Munition" msgstr "Keine Munition"
#: lib/cannery_web/live/ammo_type_live/show.html.heex:163 #: lib/cannery_web/live/ammo_type_live/show.html.heex:180
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No ammo for this type" msgid "No ammo for this type"
msgstr "Keine Munition dieser Art" msgstr "Keine Munition dieser Art"
#: lib/cannery_web/live/container_live/index.html.heex:8 #: lib/cannery_web/live/container_live/index.html.heex:8
#: lib/cannery_web/live/container_live/index.html.heex:48 #: lib/cannery_web/live/container_live/index.html.heex:47
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No containers" msgid "No containers"
msgstr "Kein Behälter" msgstr "Kein Behälter"
@ -290,7 +285,7 @@ msgstr "Keine Einladung"
#: lib/cannery_web/live/container_live/edit_tags_component.html.heex:29 #: lib/cannery_web/live/container_live/edit_tags_component.html.heex:29
#: lib/cannery_web/live/tag_live/index.html.heex:10 #: lib/cannery_web/live/tag_live/index.html.heex:10
#: lib/cannery_web/live/tag_live/index.html.heex:44 #: lib/cannery_web/live/tag_live/index.html.heex:43
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No tags" msgid "No tags"
msgstr "Keine Tags" msgstr "Keine Tags"
@ -315,13 +310,13 @@ msgstr "Bemerkungen:"
msgid "On the bookshelf" msgid "On the bookshelf"
msgstr "Auf dem Bücherregal" msgstr "Auf dem Bücherregal"
#: lib/cannery_web/components/ammo_type_table_component.ex:60 #: lib/cannery_web/components/ammo_type_table_component.ex:80
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:126 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:257
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Pressure" msgid "Pressure"
msgstr "Druck" msgstr "Druck"
#: lib/cannery_web/components/ammo_group_table_component.ex:83 #: lib/cannery_web/components/ammo_group_table_component.ex:82
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:35 #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:35
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Price paid" msgid "Price paid"
@ -332,8 +327,8 @@ msgstr "Kaufpreis"
msgid "Price paid:" msgid "Price paid:"
msgstr "Kaufpreis:" msgstr "Kaufpreis:"
#: lib/cannery_web/components/ammo_type_table_component.ex:61 #: lib/cannery_web/components/ammo_type_table_component.ex:83
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:134 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:296
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Primer type" msgid "Primer type"
msgstr "Zündertyp" msgstr "Zündertyp"
@ -366,7 +361,7 @@ msgstr "Einstellungen"
msgid "Simple:" msgid "Simple:"
msgstr "Einfach:" msgstr "Einfach:"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:55 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:151
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Steel" msgid "Steel"
msgstr "Stahl" msgstr "Stahl"
@ -400,15 +395,22 @@ msgstr "Textfarbe"
msgid "The self-hosted firearm tracker website" msgid "The self-hosted firearm tracker website"
msgstr "Die selbst-gehostete Website zur Verwaltung von Schusswaffen" msgstr "Die selbst-gehostete Website zur Verwaltung von Schusswaffen"
#: lib/cannery_web/components/ammo_type_table_component.ex:63 #: lib/cannery_web/components/ammo_type_table_component.ex:85
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:150 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:316
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Tracer" msgid "Tracer"
msgstr "Leuchtspur" msgstr "Leuchtspur"
#: lib/cannery_web/components/ammo_type_table_component.ex:150
#: lib/cannery_web/components/container_table_component.ex:48 #: lib/cannery_web/components/container_table_component.ex:48
#: lib/cannery_web/components/move_ammo_group_component.ex:68 #: lib/cannery_web/components/move_ammo_group_component.ex:68
#: lib/cannery_web/live/ammo_group_live/index.html.heex:50
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:21
#: lib/cannery_web/live/ammo_type_live/index.html.heex:29
#: lib/cannery_web/live/ammo_type_live/show.html.heex:48
#: lib/cannery_web/live/container_live/form_component.html.heex:39 #: lib/cannery_web/live/container_live/form_component.html.heex:39
#: lib/cannery_web/live/container_live/show.html.heex:97
#: lib/cannery_web/live/range_live/index.html.heex:86
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Type" msgid "Type"
msgstr "Art" msgstr "Art"
@ -434,12 +436,12 @@ msgstr "Verbleibende Nutzung"
msgid "Your data stays with you, period" msgid "Your data stays with you, period"
msgstr "Ihre Daten bleiben bei Ihnen, Punkt" msgstr "Ihre Daten bleiben bei Ihnen, Punkt"
#: lib/cannery_web/live/container_live/show.html.heex:67 #: lib/cannery_web/live/container_live/show.html.heex:60
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No tags for this container" msgid "No tags for this container"
msgstr "Keine Tags für diesen Behälter" msgstr "Keine Tags für diesen Behälter"
#: lib/cannery_web/components/ammo_group_table_component.ex:79 #: lib/cannery_web/components/ammo_group_table_component.ex:78
#: lib/cannery_web/components/core_components/topbar.html.heex:66 #: lib/cannery_web/components/core_components/topbar.html.heex:66
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Range" msgid "Range"
@ -486,7 +488,7 @@ msgid "New Shot Records"
msgstr "Neue Schießkladde" msgstr "Neue Schießkladde"
#: lib/cannery_web/live/range_live/index.html.heex:55 #: lib/cannery_web/live/range_live/index.html.heex:55
#: lib/cannery_web/live/range_live/index.html.heex:98 #: lib/cannery_web/live/range_live/index.html.heex:122
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No shots recorded" msgid "No shots recorded"
msgstr "Keine Schüsse dokumentiert" msgstr "Keine Schüsse dokumentiert"
@ -525,49 +527,48 @@ msgstr "Kein weiterer Behälter"
msgid "Shot log" msgid "Shot log"
msgstr "Schießkladde" msgstr "Schießkladde"
#: lib/cannery_web/components/ammo_group_table_component.ex:180 #: lib/cannery_web/components/ammo_group_table_component.ex:164
#: lib/cannery_web/components/ammo_group_table_component.ex:263 #: lib/cannery_web/components/ammo_group_table_component.ex:247
#: lib/cannery_web/components/ammo_type_table_component.ex:235 #: lib/cannery_web/components/ammo_type_table_component.ex:261
#: lib/cannery_web/components/core_components/ammo_group_card.html.heex:45 #: lib/cannery_web/components/core_components/ammo_group_card.html.heex:45
#: lib/cannery_web/components/core_components/ammo_group_card.html.heex:50 #: lib/cannery_web/components/core_components/ammo_group_card.html.heex:50
#: lib/cannery_web/live/ammo_group_live/show.html.heex:37 #: lib/cannery_web/live/ammo_group_live/show.html.heex:37
#: lib/cannery_web/live/ammo_group_live/show.html.heex:42 #: lib/cannery_web/live/ammo_group_live/show.html.heex:42
#: lib/cannery_web/live/ammo_type_live/show.html.heex:135 #: lib/cannery_web/live/ammo_type_live/show.html.heex:152
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "$%{amount}" msgid "$%{amount}"
msgstr "$%{amount}" msgstr "$%{amount}"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:87 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:160
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Bimetal" msgid "Bimetal"
msgstr "Bimetall" msgstr "Bimetall"
#: lib/cannery_web/components/ammo_type_table_component.ex:51 #: lib/cannery_web/components/ammo_type_table_component.ex:66
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:83 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:156
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Jacket type" msgid "Jacket type"
msgstr "Patronenhülse" msgstr "Patronenhülse"
#: lib/cannery_web/components/ammo_type_table_component.ex:52 #: lib/cannery_web/components/ammo_type_table_component.ex:82
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:91 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:279
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Muzzle velocity" msgid "Muzzle velocity"
msgstr "Mündungsgeschwindigkeit" msgstr "Mündungsgeschwindigkeit"
#: lib/cannery_web/components/ammo_type_table_component.ex:55 #: lib/cannery_web/components/ammo_type_table_component.ex:76
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:108 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:244
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Powder grains per charge" msgid "Powder grains per charge"
msgstr "Pulverkörner pro Ladung" msgstr "Pulverkörner pro Ladung"
#: lib/cannery_web/components/ammo_type_table_component.ex:53 #: lib/cannery_web/components/ammo_type_table_component.ex:74
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:101 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:236
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Powder type" msgid "Powder type"
msgstr "Pulverart" msgstr "Pulverart"
#: lib/cannery_web/components/ammo_type_table_component.ex:68 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:343
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:173
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "UPC" msgid "UPC"
msgstr "UPC" msgstr "UPC"
@ -590,8 +591,8 @@ msgstr "Derzeitiges Passwort"
msgid "New password" msgid "New password"
msgstr "Neues Passwort" msgstr "Neues Passwort"
#: lib/cannery_web/components/ammo_type_table_component.ex:62 #: lib/cannery_web/components/ammo_type_table_component.ex:84
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:142 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:304
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Firing type" msgid "Firing type"
msgstr "Patronenhülsenform" msgstr "Patronenhülsenform"
@ -602,33 +603,33 @@ msgid "Reconnecting..."
msgstr "Neu verbinden..." msgstr "Neu verbinden..."
#: lib/cannery_web/live/container_live/index.ex:28 #: lib/cannery_web/live/container_live/index.ex:28
#: lib/cannery_web/live/container_live/show.ex:108 #: lib/cannery_web/live/container_live/show.ex:120
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit %{name}" msgid "Edit %{name}"
msgstr "%{name} bearbeiten" msgstr "%{name} bearbeiten"
#: lib/cannery_web/live/container_live/index.ex:63 #: lib/cannery_web/live/container_live/index.ex:63
#: lib/cannery_web/live/container_live/show.ex:109 #: lib/cannery_web/live/container_live/show.ex:121
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit %{name} tags" msgid "Edit %{name} tags"
msgstr "Editiere %{name} Tags" msgstr "Editiere %{name} Tags"
#: lib/cannery_web/components/core_components/container_card.html.heex:37 #: lib/cannery_web/components/core_components/container_card.html.heex:37
#: lib/cannery_web/live/ammo_type_live/show.html.heex:70 #: lib/cannery_web/live/ammo_type_live/show.html.heex:87
#: lib/cannery_web/live/container_live/show.html.heex:33 #: lib/cannery_web/live/container_live/show.html.heex:27
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Rounds:" msgid "Rounds:"
msgstr "Patronen:" msgstr "Patronen:"
#: lib/cannery_web/components/ammo_group_table_component.ex:177 #: lib/cannery_web/components/ammo_group_table_component.ex:161
#: lib/cannery_web/components/ammo_group_table_component.ex:259 #: lib/cannery_web/components/ammo_group_table_component.ex:243
#: lib/cannery_web/components/ammo_type_table_component.ex:234 #: lib/cannery_web/components/ammo_type_table_component.ex:260
#: lib/cannery_web/live/ammo_type_live/show.html.heex:139 #: lib/cannery_web/live/ammo_type_live/show.html.heex:156
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No cost information" msgid "No cost information"
msgstr "Keine Preisinformationen" msgstr "Keine Preisinformationen"
#: lib/cannery_web/components/ammo_group_table_component.ex:92 #: lib/cannery_web/components/ammo_group_table_component.ex:84
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "% left" msgid "% left"
msgstr "% verbleibend" msgstr "% verbleibend"
@ -694,7 +695,7 @@ msgstr "Schüsse dokumentieren"
msgid "Copies" msgid "Copies"
msgstr "Kopien" msgstr "Kopien"
#: lib/cannery_web/live/ammo_type_live/show.html.heex:122 #: lib/cannery_web/live/ammo_type_live/show.html.heex:139
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Added on:" msgid "Added on:"
msgstr "Hinzugefügt am:" msgstr "Hinzugefügt am:"
@ -758,7 +759,7 @@ msgstr "Munitionstyp bearbeiten"
msgid "Move Ammo" msgid "Move Ammo"
msgstr "Munition verschieben" msgstr "Munition verschieben"
#: lib/cannery_web/live/container_live/show.html.heex:112 #: lib/cannery_web/live/container_live/show.html.heex:123
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "No ammo in this container" msgid "No ammo in this container"
msgstr "Keine Munitionsgruppe in diesem Behälter" msgstr "Keine Munitionsgruppe in diesem Behälter"
@ -774,8 +775,8 @@ msgid "This ammo is not in a container"
msgstr "Diese Munitionsgruppe ist nicht in einem Behälter" msgstr "Diese Munitionsgruppe ist nicht in einem Behälter"
#: lib/cannery_web/components/core_components/container_card.html.heex:32 #: lib/cannery_web/components/core_components/container_card.html.heex:32
#: lib/cannery_web/live/ammo_type_live/show.html.heex:96 #: lib/cannery_web/live/ammo_type_live/show.html.heex:113
#: lib/cannery_web/live/container_live/show.html.heex:23 #: lib/cannery_web/live/container_live/show.html.heex:22
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Packs:" msgid "Packs:"
msgstr "" msgstr ""
@ -801,80 +802,79 @@ msgstr ""
msgid "Container:" msgid "Container:"
msgstr "Behälter" msgstr "Behälter"
#: lib/cannery_web/live/ammo_group_live/index.html.heex:65 #: lib/cannery_web/live/ammo_group_live/index.html.heex:85
#: lib/cannery_web/live/ammo_type_live/index.html.heex:40 #: lib/cannery_web/live/ammo_type_live/index.html.heex:64
#: lib/cannery_web/live/ammo_type_live/show.html.heex:149 #: lib/cannery_web/live/ammo_type_live/show.html.heex:166
#: lib/cannery_web/live/container_live/show.html.heex:98
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Show used" msgid "Show used"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:218 #: lib/cannery_web/components/ammo_group_table_component.ex:202
#: lib/cannery_web/live/ammo_group_live/show.html.heex:19 #: lib/cannery_web/live/ammo_group_live/show.html.heex:19
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "%{percentage}%" msgid "%{percentage}%"
msgstr "" msgstr ""
#: lib/cannery_web/live/range_live/index.ex:135 #: lib/cannery_web/live/range_live/index.ex:153
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Rounds shot: %{count}" msgid "Rounds shot: %{count}"
msgstr "Patronen abgefeuert" msgstr "Patronen abgefeuert"
#: lib/cannery_web/components/ammo_type_table_component.ex:100 #: lib/cannery_web/components/ammo_type_table_component.ex:123
#: lib/cannery_web/components/container_table_component.ex:64 #: lib/cannery_web/components/container_table_component.ex:64
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Packs" msgid "Packs"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:80 #: lib/cannery_web/components/ammo_type_table_component.ex:144
#: lib/cannery_web/components/container_table_component.ex:65 #: lib/cannery_web/components/container_table_component.ex:65
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Rounds" msgid "Rounds"
msgstr "Patronen:" msgstr "Patronen:"
#: lib/cannery_web/live/ammo_type_live/show.html.heex:155 #: lib/cannery_web/live/ammo_type_live/show.html.heex:172
#: lib/cannery_web/live/container_live/index.html.heex:40 #: lib/cannery_web/live/container_live/index.html.heex:40
#: lib/cannery_web/live/container_live/show.html.heex:104 #: lib/cannery_web/live/container_live/show.html.heex:115
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "View as table" msgid "View as table"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:110 #: lib/cannery_web/components/ammo_type_table_component.ex:108
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Total ever packs" msgid "Total ever packs"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:113 #: lib/cannery_web/live/ammo_type_live/show.html.heex:130
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Total ever packs:" msgid "Total ever packs:"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:91 #: lib/cannery_web/components/ammo_type_table_component.ex:129
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Total ever rounds" msgid "Total ever rounds"
msgstr "Summe aller Patronen" msgstr "Summe aller Patronen"
#: lib/cannery_web/live/ammo_type_live/show.html.heex:87 #: lib/cannery_web/live/ammo_type_live/show.html.heex:104
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Total ever rounds:" msgid "Total ever rounds:"
msgstr "Summe abgegebener Schüsse:" msgstr "Summe abgegebener Schüsse:"
#: lib/cannery_web/components/ammo_type_table_component.ex:105 #: lib/cannery_web/components/ammo_type_table_component.ex:116
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Used packs" msgid "Used packs"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:105 #: lib/cannery_web/live/ammo_type_live/show.html.heex:122
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Used packs:" msgid "Used packs:"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:86 #: lib/cannery_web/components/ammo_type_table_component.ex:137
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Used rounds" msgid "Used rounds"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:79 #: lib/cannery_web/live/ammo_type_live/show.html.heex:96
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Used rounds:" msgid "Used rounds:"
msgstr "" msgstr ""
@ -889,120 +889,120 @@ msgstr ""
msgid "Rounds shot chart" msgid "Rounds shot chart"
msgstr "Patronen abgefeuert" msgstr "Patronen abgefeuert"
#: lib/cannery_web/live/ammo_type_live/show.ex:26 #: lib/cannery_web/live/ammo_type_live/show.ex:154
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Blank:" msgid "Blank:"
msgstr "Knallpatrone" msgstr "Knallpatrone"
#: lib/cannery_web/live/ammo_type_live/show.ex:12 #: lib/cannery_web/live/ammo_type_live/show.ex:132
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Bullet core:" msgid "Bullet core:"
msgstr "Projektilkern" msgstr "Projektilkern"
#: lib/cannery_web/live/ammo_type_live/show.ex:11 #: lib/cannery_web/live/ammo_type_live/show.ex:131
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Bullet type:" msgid "Bullet type:"
msgstr "Patronenart" msgstr "Patronenart"
#: lib/cannery_web/live/ammo_type_live/show.ex:14 #: lib/cannery_web/live/ammo_type_live/show.ex:123
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Caliber:" msgid "Caliber:"
msgstr "Kaliber" msgstr "Kaliber"
#: lib/cannery_web/live/ammo_type_live/show.ex:13 #: lib/cannery_web/live/ammo_type_live/show.ex:121
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Cartridge:" msgid "Cartridge:"
msgstr "Patrone" msgstr "Patrone"
#: lib/cannery_web/live/ammo_type_live/show.ex:15 #: lib/cannery_web/live/ammo_type_live/show.ex:134
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Case material:" msgid "Case material:"
msgstr "Gehäusematerial" msgstr "Gehäusematerial"
#: lib/cannery_web/live/ammo_type_live/show.ex:27 #: lib/cannery_web/live/ammo_type_live/show.ex:155
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Corrosive:" msgid "Corrosive:"
msgstr "Korrosiv" msgstr "Korrosiv"
#: lib/cannery_web/live/ammo_type_live/show.ex:23 #: lib/cannery_web/live/ammo_type_live/show.ex:151
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Firing type:" msgid "Firing type:"
msgstr "Patronenhülsenform" msgstr "Patronenhülsenform"
#: lib/cannery_web/live/ammo_type_live/show.ex:20 #: lib/cannery_web/live/ammo_type_live/show.ex:130
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Grains:" msgid "Grains:"
msgstr "Körner" msgstr "Körner"
#: lib/cannery_web/live/ammo_type_live/show.ex:25 #: lib/cannery_web/live/ammo_type_live/show.ex:153
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Incendiary:" msgid "Incendiary:"
msgstr "Brandmunition" msgstr "Brandmunition"
#: lib/cannery_web/live/ammo_type_live/show.ex:16 #: lib/cannery_web/live/ammo_type_live/show.ex:133
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Jacket type:" msgid "Jacket type:"
msgstr "Patronenhülse" msgstr "Patronenhülse"
#: lib/cannery_web/live/ammo_type_live/show.ex:28 #: lib/cannery_web/live/ammo_type_live/show.ex:156
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Manufacturer:" msgid "Manufacturer:"
msgstr "Hersteller" msgstr "Hersteller"
#: lib/cannery_web/live/ammo_type_live/show.ex:17 #: lib/cannery_web/live/ammo_type_live/show.ex:149
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Muzzle velocity:" msgid "Muzzle velocity:"
msgstr "Mündungsgeschwindigkeit" msgstr "Mündungsgeschwindigkeit"
#: lib/cannery_web/live/ammo_type_live/show.ex:19 #: lib/cannery_web/live/ammo_type_live/show.ex:143
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Powder grains per charge:" msgid "Powder grains per charge:"
msgstr "Pulverkörner pro Ladung" msgstr "Pulverkörner pro Ladung"
#: lib/cannery_web/live/ammo_type_live/show.ex:18 #: lib/cannery_web/live/ammo_type_live/show.ex:141
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Powder type:" msgid "Powder type:"
msgstr "Pulverart" msgstr "Pulverart"
#: lib/cannery_web/live/ammo_type_live/show.ex:21 #: lib/cannery_web/live/ammo_type_live/show.ex:147
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Pressure:" msgid "Pressure:"
msgstr "Druck" msgstr "Druck"
#: lib/cannery_web/live/ammo_type_live/show.ex:22 #: lib/cannery_web/live/ammo_type_live/show.ex:150
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Primer type:" msgid "Primer type:"
msgstr "Zündertyp" msgstr "Zündertyp"
#: lib/cannery_web/live/ammo_type_live/show.ex:24 #: lib/cannery_web/live/ammo_type_live/show.ex:152
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Tracer:" msgid "Tracer:"
msgstr "Leuchtspur" msgstr "Leuchtspur"
#: lib/cannery_web/live/ammo_type_live/show.ex:29 #: lib/cannery_web/live/ammo_type_live/show.ex:157
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "UPC:" msgid "UPC:"
msgstr "UPC" msgstr "UPC"
#: lib/cannery_web/components/ammo_type_table_component.ex:120 #: lib/cannery_web/components/ammo_type_table_component.ex:102
#: lib/cannery_web/live/ammo_type_live/show.html.heex:131 #: lib/cannery_web/live/ammo_type_live/show.html.heex:148
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Average CPR" msgid "Average CPR"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.ex:28 #: lib/cannery_web/live/ammo_type_live/index.ex:28
#: lib/cannery_web/live/ammo_type_live/show.ex:104 #: lib/cannery_web/live/ammo_type_live/show.ex:82
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Edit %{ammo_type_name}" msgid "Edit %{ammo_type_name}"
msgstr "%{name} bearbeiten" msgstr "%{name} bearbeiten"
#: lib/cannery_web/components/ammo_group_table_component.ex:267 #: lib/cannery_web/components/ammo_group_table_component.ex:251
#: lib/cannery_web/components/core_components/ammo_group_card.html.heex:17 #: lib/cannery_web/components/core_components/ammo_group_card.html.heex:17
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Empty" msgid "Empty"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:84 #: lib/cannery_web/components/ammo_group_table_component.ex:81
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "CPR" msgid "CPR"
msgstr "" msgstr ""
@ -1012,7 +1012,7 @@ msgstr ""
msgid "CPR:" msgid "CPR:"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:91 #: lib/cannery_web/components/ammo_group_table_component.ex:88
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Original Count" msgid "Original Count"
msgstr "Ursprüngliche Anzahl:" msgstr "Ursprüngliche Anzahl:"
@ -1027,12 +1027,7 @@ msgstr "Ursprüngliche Anzahl:"
msgid "Home" msgid "Home"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:28 #: lib/cannery_web/components/ammo_group_table_component.ex:64
#, elixir-autogen, elixir-format, fuzzy
msgid "Total packs:"
msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:65
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Last used on" msgid "Last used on"
msgstr "" msgstr ""
@ -1042,12 +1037,12 @@ msgstr ""
msgid "Last used on:" msgid "Last used on:"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:198 #: lib/cannery_web/components/ammo_group_table_component.ex:182
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Never used" msgid "Never used"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:64 #: lib/cannery_web/components/ammo_group_table_component.ex:69
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:42 #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:42
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Purchased on" msgid "Purchased on"
@ -1065,17 +1060,17 @@ msgid "Edit ammo"
msgstr "Munitionstyp bearbeiten" msgstr "Munitionstyp bearbeiten"
#: lib/cannery_web/live/ammo_type_live/index.html.heex:8 #: lib/cannery_web/live/ammo_type_live/index.html.heex:8
#: lib/cannery_web/live/ammo_type_live/index.html.heex:47 #: lib/cannery_web/live/ammo_type_live/index.html.heex:71
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "No Ammo types" msgid "No Ammo types"
msgstr "Keine Munitionsarten" msgstr "Keine Munitionsarten"
#: lib/cannery_web/live/ammo_type_live/index.html.heex:34 #: lib/cannery_web/live/ammo_type_live/index.html.heex:58
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Search catalog" msgid "Search catalog"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:59 #: lib/cannery_web/live/ammo_group_live/index.html.heex:79
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Search ammo" msgid "Search ammo"
msgstr "" msgstr ""
@ -1085,12 +1080,12 @@ msgstr ""
msgid "Search containers" msgid "Search containers"
msgstr "" msgstr ""
#: lib/cannery_web/live/tag_live/index.html.heex:37 #: lib/cannery_web/live/tag_live/index.html.heex:36
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Search tags" msgid "Search tags"
msgstr "" msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:91 #: lib/cannery_web/live/range_live/index.html.heex:115
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Search shot records" msgid "Search shot records"
msgstr "" msgstr ""
@ -1199,27 +1194,27 @@ msgstr ""
msgid "Password" msgid "Password"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:130 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:261
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "+P" msgid "+P"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:71 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:75
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid ".223" msgid ".223"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:63 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:56
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "5.56x46mm NATO" msgid "5.56x46mm NATO"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:138 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:300
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Boxer" msgid "Boxer"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:146 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:308
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Centerfire" msgid "Centerfire"
msgstr "" msgstr ""
@ -1231,7 +1226,7 @@ msgid "Really great weather"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:60 #: lib/cannery_web/components/ammo_group_table_component.ex:60
#: lib/cannery_web/components/ammo_type_table_component.ex:121 #: lib/cannery_web/components/ammo_type_table_component.ex:100
#: lib/cannery_web/components/container_table_component.ex:67 #: lib/cannery_web/components/container_table_component.ex:67
#: lib/cannery_web/components/move_ammo_group_component.ex:70 #: lib/cannery_web/components/move_ammo_group_component.ex:70
#: lib/cannery_web/components/shot_group_table_component.ex:45 #: lib/cannery_web/components/shot_group_table_component.ex:45
@ -1250,7 +1245,7 @@ msgstr ""
msgid "Log out" msgid "Log out"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:100 #: lib/cannery_web/components/ammo_group_table_component.ex:92
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Current Count" msgid "Current Count"
msgstr "" msgstr ""
@ -1260,3 +1255,209 @@ msgstr ""
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Close modal" msgid "Close modal"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:56
#: lib/cannery_web/live/ammo_type_live/index.html.heex:35
#: lib/cannery_web/live/container_live/show.html.heex:103
#: lib/cannery_web/live/range_live/index.html.heex:92
#, elixir-autogen, elixir-format
msgid "All"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:313
#, elixir-autogen, elixir-format
msgid "Attributes"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:56
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:89
#, elixir-autogen, elixir-format, fuzzy
msgid "Brass height"
msgstr "Messing"
#: lib/cannery_web/live/ammo_type_live/show.ex:128
#, elixir-autogen, elixir-format
msgid "Brass height:"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:57
#: lib/cannery_web/components/ammo_type_table_component.ex:58
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:96
#, elixir-autogen, elixir-format
msgid "Chamber size"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:129
#, elixir-autogen, elixir-format
msgid "Chamber size:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:48
#, elixir-autogen, elixir-format
msgid "Dimensions"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:81
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:266
#, elixir-autogen, elixir-format
msgid "Dram equivalent"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:148
#, elixir-autogen, elixir-format
msgid "Dram equivalent:"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:51
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:67
#, elixir-autogen, elixir-format
msgid "Gauge"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:123
#, elixir-autogen, elixir-format
msgid "Gauge:"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:72
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:207
#, elixir-autogen, elixir-format
msgid "Load grains"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:139
#, elixir-autogen, elixir-format
msgid "Load grains:"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:29
#, elixir-autogen, elixir-format, fuzzy
msgid "No ammo"
msgstr "Keine Munition"
#: lib/cannery_web/live/ammo_type_live/show.html.heex:60
#, elixir-autogen, elixir-format
msgid "None specified"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:59
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:25
#: lib/cannery_web/live/ammo_type_live/index.html.heex:38
#: lib/cannery_web/live/ammo_type_live/show.html.heex:58
#: lib/cannery_web/live/container_live/show.html.heex:106
#: lib/cannery_web/live/range_live/index.html.heex:95
#, elixir-autogen, elixir-format
msgid "Pistol"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:233
#, elixir-autogen, elixir-format, fuzzy
msgid "Powder"
msgstr "Pulverart"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:293
#, elixir-autogen, elixir-format, fuzzy
msgid "Primer"
msgstr "Zündertyp"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:109
#, elixir-autogen, elixir-format
msgid "Projectile"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:57
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:25
#: lib/cannery_web/live/ammo_type_live/index.html.heex:36
#: lib/cannery_web/live/ammo_type_live/show.html.heex:56
#: lib/cannery_web/live/container_live/show.html.heex:104
#: lib/cannery_web/live/range_live/index.html.heex:93
#, elixir-autogen, elixir-format
msgid "Rifle"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:73
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:215
#, elixir-autogen, elixir-format
msgid "Shot charge weight"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:140
#, elixir-autogen, elixir-format
msgid "Shot charge weight:"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:70
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:191
#, elixir-autogen, elixir-format
msgid "Shot material"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:137
#, elixir-autogen, elixir-format
msgid "Shot material:"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:71
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:200
#, elixir-autogen, elixir-format, fuzzy
msgid "Shot size"
msgstr "Schüsse abgegeben"
#: lib/cannery_web/live/ammo_type_live/show.ex:138
#, elixir-autogen, elixir-format, fuzzy
msgid "Shot size:"
msgstr "Schüsse abgegeben"
#: lib/cannery_web/components/ammo_type_table_component.ex:69
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:183
#, elixir-autogen, elixir-format
msgid "Shot type"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:136
#, elixir-autogen, elixir-format
msgid "Shot type:"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:58
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:25
#: lib/cannery_web/live/ammo_type_live/index.html.heex:37
#: lib/cannery_web/live/ammo_type_live/show.html.heex:54
#: lib/cannery_web/live/container_live/show.html.heex:105
#: lib/cannery_web/live/range_live/index.html.heex:94
#, elixir-autogen, elixir-format
msgid "Shotgun"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:62
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:143
#, elixir-autogen, elixir-format
msgid "Slug core"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:187
#, elixir-autogen, elixir-format
msgid "Target, bird, buck, etc"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:127
#, elixir-autogen, elixir-format
msgid "Unfired length:"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:55
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:80
#, elixir-autogen, elixir-format
msgid "Unfired shell length"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:68
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:176
#, elixir-autogen, elixir-format
msgid "Wadding"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:135
#, elixir-autogen, elixir-format
msgid "Wadding:"
msgstr ""

View File

@ -69,6 +69,7 @@ msgstr "Ungültige Mailadresse oder Passwort"
msgid "Not found" msgid "Not found"
msgstr "Nicht gefunden" msgstr "Nicht gefunden"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:18
#: lib/cannery_web/templates/user_registration/new.html.heex:13 #: lib/cannery_web/templates/user_registration/new.html.heex:13
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:13 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:13
#: lib/cannery_web/templates/user_settings/edit.html.heex:22 #: lib/cannery_web/templates/user_settings/edit.html.heex:22
@ -172,7 +173,7 @@ msgstr ""
"Ungültige Nummer an Kopien. Muss zwischen 1 and %{max} liegen. War " "Ungültige Nummer an Kopien. Muss zwischen 1 and %{max} liegen. War "
"%{multiplier}" "%{multiplier}"
#: lib/cannery/ammo.ex:1043 #: lib/cannery/ammo.ex:1114
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Invalid multiplier" msgid "Invalid multiplier"
msgstr "" msgstr ""

View File

@ -32,7 +32,7 @@ msgid "%{name} created successfully"
msgstr "%{name} erfolgreich erstellt" msgstr "%{name} erfolgreich erstellt"
#: lib/cannery_web/live/ammo_type_live/index.ex:72 #: lib/cannery_web/live/ammo_type_live/index.ex:72
#: lib/cannery_web/live/ammo_type_live/show.ex:49 #: lib/cannery_web/live/ammo_type_live/show.ex:27
#: lib/cannery_web/live/tag_live/index.ex:65 #: lib/cannery_web/live/tag_live/index.ex:65
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "%{name} deleted succesfully" msgid "%{name} deleted succesfully"
@ -65,15 +65,15 @@ msgstr ""
"Sind Sie sicher, dass sie %{email} löschen möchten? Dies kann nicht " "Sind Sie sicher, dass sie %{email} löschen möchten? Dies kann nicht "
"zurückgenommen werden!" "zurückgenommen werden!"
#: lib/cannery_web/live/container_live/index.html.heex:100 #: lib/cannery_web/live/container_live/index.html.heex:99
#: lib/cannery_web/live/container_live/index.html.heex:156 #: lib/cannery_web/live/container_live/index.html.heex:157
#: lib/cannery_web/live/container_live/show.html.heex:52 #: lib/cannery_web/live/container_live/show.html.heex:45
#: lib/cannery_web/live/tag_live/index.html.heex:64 #: lib/cannery_web/live/tag_live/index.html.heex:63
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete %{name}?" msgid "Are you sure you want to delete %{name}?"
msgstr "Sind Sie sicher, dass sie %{name} löschen möchten?" msgstr "Sind Sie sicher, dass sie %{name} löschen möchten?"
#: lib/cannery_web/live/ammo_group_live/index.html.heex:169 #: lib/cannery_web/live/ammo_group_live/index.html.heex:189
#: lib/cannery_web/live/ammo_group_live/show.html.heex:74 #: lib/cannery_web/live/ammo_group_live/show.html.heex:74
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this ammo?" msgid "Are you sure you want to delete this ammo?"
@ -130,7 +130,7 @@ msgstr "Bitte überprüfen Sie ihre Mailbox und bestätigen Sie das Nutzerkonto"
#: lib/cannery_web/components/add_shot_group_component.html.heex:59 #: lib/cannery_web/components/add_shot_group_component.html.heex:59
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:85 #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:85
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:181 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:351
#: lib/cannery_web/live/container_live/form_component.html.heex:59 #: lib/cannery_web/live/container_live/form_component.html.heex:59
#: lib/cannery_web/live/invite_live/form_component.html.heex:37 #: lib/cannery_web/live/invite_live/form_component.html.heex:37
#: lib/cannery_web/live/range_live/form_component.html.heex:47 #: lib/cannery_web/live/range_live/form_component.html.heex:47
@ -177,7 +177,7 @@ msgid "Are you sure you want to unstage this ammo?"
msgstr "Sind sie sicher, dass Sie diese Munition demarkieren möchten?" msgstr "Sind sie sicher, dass Sie diese Munition demarkieren möchten?"
#: lib/cannery_web/live/ammo_group_live/show.ex:159 #: lib/cannery_web/live/ammo_group_live/show.ex:159
#: lib/cannery_web/live/range_live/index.html.heex:128 #: lib/cannery_web/live/range_live/index.html.heex:152
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this shot record?" msgid "Are you sure you want to delete this shot record?"
msgstr "Sind sie sicher, dass sie die Schießkladde löschen möchten?" msgstr "Sind sie sicher, dass sie die Schießkladde löschen möchten?"
@ -213,8 +213,8 @@ msgstr "Der Zwischenablage hinzugefügt"
msgid "%{name} removed successfully" msgid "%{name} removed successfully"
msgstr "%{name} erfolgreich entfernt" msgstr "%{name} erfolgreich entfernt"
#: lib/cannery_web/live/ammo_group_live/index.html.heex:18 #: lib/cannery_web/live/ammo_group_live/index.html.heex:10
#: lib/cannery_web/live/ammo_group_live/index.html.heex:28 #: lib/cannery_web/live/ammo_group_live/index.html.heex:20
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "You'll need to" msgid "You'll need to"
msgstr "Sie müssen" msgstr "Sie müssen"
@ -257,7 +257,7 @@ msgid_plural "Ammo added successfully"
msgstr[0] "Munitionsgruppe erfolgreich aktualisiert" msgstr[0] "Munitionsgruppe erfolgreich aktualisiert"
msgstr[1] "Munitionsgruppe erfolgreich aktualisiert" msgstr[1] "Munitionsgruppe erfolgreich aktualisiert"
#: lib/cannery_web/live/ammo_type_live/index.html.heex:97 #: lib/cannery_web/live/ammo_type_live/index.html.heex:122
#: lib/cannery_web/live/ammo_type_live/show.html.heex:29 #: lib/cannery_web/live/ammo_type_live/show.html.heex:29
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Are you sure you want to delete %{name}? This will delete all %{name} type ammo as well!" msgid "Are you sure you want to delete %{name}? This will delete all %{name} type ammo as well!"

View File

@ -34,7 +34,7 @@ msgstr ""
msgid "Ammo" msgid "Ammo"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:108 #: lib/cannery_web/components/ammo_group_table_component.ex:96
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:22 #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:22
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Ammo type" msgid "Ammo type"
@ -45,48 +45,48 @@ msgstr ""
msgid "Background color" msgid "Background color"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:65 #: lib/cannery_web/components/ammo_type_table_component.ex:87
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:158 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:324
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Blank" msgid "Blank"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:79 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:171
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Brass" msgid "Brass"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:47 #: lib/cannery_web/components/ammo_type_table_component.ex:62
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:51 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:144
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Bullet core" msgid "Bullet core"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:46 #: lib/cannery_web/components/ammo_type_table_component.ex:60
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:43 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:121
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Bullet type" msgid "Bullet type"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:49 #: lib/cannery_web/components/ammo_type_table_component.ex:51
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:67 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:68
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Caliber" msgid "Caliber"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:48 #: lib/cannery_web/components/ammo_type_table_component.ex:49
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:59 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:52
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Cartridge" msgid "Cartridge"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:50 #: lib/cannery_web/components/ammo_type_table_component.ex:67
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:75 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:167
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Case material" msgid "Case material"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:72 #: lib/cannery_web/components/ammo_group_table_component.ex:74
#: lib/cannery_web/components/move_ammo_group_component.ex:67 #: lib/cannery_web/components/move_ammo_group_component.ex:67
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:59 #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:59
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -101,13 +101,13 @@ msgstr ""
msgid "Containers" msgid "Containers"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:66 #: lib/cannery_web/components/ammo_type_table_component.ex:88
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:162 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:328
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Corrosive" msgid "Corrosive"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:100 #: lib/cannery_web/components/ammo_group_table_component.ex:92
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:28 #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:28
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Count" msgid "Count"
@ -120,7 +120,7 @@ msgid "Count:"
msgstr "" msgstr ""
#: lib/cannery_web/components/container_table_component.ex:46 #: lib/cannery_web/components/container_table_component.ex:46
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:28 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:38
#: lib/cannery_web/live/container_live/form_component.html.heex:29 #: lib/cannery_web/live/container_live/form_component.html.heex:29
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Description" msgid "Description"
@ -147,24 +147,19 @@ msgstr ""
msgid "Edit Tag" msgid "Edit Tag"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:41 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:135
#, elixir-autogen, elixir-format
msgid "Example bullet type abbreviations"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:47
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "FMJ" msgid "FMJ"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:59 #: lib/cannery_web/components/ammo_type_table_component.ex:59
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:118 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:112
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Grains" msgid "Grains"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:64 #: lib/cannery_web/components/ammo_type_table_component.ex:86
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:154 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:320
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Incendiary" msgid "Incendiary"
msgstr "" msgstr ""
@ -214,8 +209,9 @@ msgstr ""
msgid "Magazine, Clip, Ammo Box, etc" msgid "Magazine, Clip, Ammo Box, etc"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:67 #: lib/cannery_web/components/ammo_type_table_component.ex:89
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:166 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:333
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:336
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Manufacturer" msgid "Manufacturer"
msgstr "" msgstr ""
@ -230,9 +226,9 @@ msgstr ""
msgid "My cool ammo can" msgid "My cool ammo can"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:45 #: lib/cannery_web/components/ammo_type_table_component.ex:153
#: lib/cannery_web/components/container_table_component.ex:45 #: lib/cannery_web/components/container_table_component.ex:45
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:21 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:31
#: lib/cannery_web/live/container_live/form_component.html.heex:21 #: lib/cannery_web/live/container_live/form_component.html.heex:21
#: lib/cannery_web/live/invite_live/form_component.html.heex:21 #: lib/cannery_web/live/invite_live/form_component.html.heex:21
#: lib/cannery_web/live/tag_live/form_component.html.heex:21 #: lib/cannery_web/live/tag_live/form_component.html.heex:21
@ -262,19 +258,18 @@ msgstr ""
msgid "New Tag" msgid "New Tag"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:10 #: lib/cannery_web/live/ammo_group_live/index.html.heex:92
#: lib/cannery_web/live/ammo_group_live/index.html.heex:72
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No Ammo" msgid "No Ammo"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:163 #: lib/cannery_web/live/ammo_type_live/show.html.heex:180
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No ammo for this type" msgid "No ammo for this type"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:8 #: lib/cannery_web/live/container_live/index.html.heex:8
#: lib/cannery_web/live/container_live/index.html.heex:48 #: lib/cannery_web/live/container_live/index.html.heex:47
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No containers" msgid "No containers"
msgstr "" msgstr ""
@ -286,7 +281,7 @@ msgstr ""
#: lib/cannery_web/live/container_live/edit_tags_component.html.heex:29 #: lib/cannery_web/live/container_live/edit_tags_component.html.heex:29
#: lib/cannery_web/live/tag_live/index.html.heex:10 #: lib/cannery_web/live/tag_live/index.html.heex:10
#: lib/cannery_web/live/tag_live/index.html.heex:44 #: lib/cannery_web/live/tag_live/index.html.heex:43
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No tags" msgid "No tags"
msgstr "" msgstr ""
@ -311,13 +306,13 @@ msgstr ""
msgid "On the bookshelf" msgid "On the bookshelf"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:60 #: lib/cannery_web/components/ammo_type_table_component.ex:80
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:126 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:257
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Pressure" msgid "Pressure"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:83 #: lib/cannery_web/components/ammo_group_table_component.ex:82
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:35 #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:35
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Price paid" msgid "Price paid"
@ -328,8 +323,8 @@ msgstr ""
msgid "Price paid:" msgid "Price paid:"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:61 #: lib/cannery_web/components/ammo_type_table_component.ex:83
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:134 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:296
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Primer type" msgid "Primer type"
msgstr "" msgstr ""
@ -360,7 +355,7 @@ msgstr ""
msgid "Simple:" msgid "Simple:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:55 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:151
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Steel" msgid "Steel"
msgstr "" msgstr ""
@ -394,15 +389,22 @@ msgstr ""
msgid "The self-hosted firearm tracker website" msgid "The self-hosted firearm tracker website"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:63 #: lib/cannery_web/components/ammo_type_table_component.ex:85
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:150 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:316
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Tracer" msgid "Tracer"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:150
#: lib/cannery_web/components/container_table_component.ex:48 #: lib/cannery_web/components/container_table_component.ex:48
#: lib/cannery_web/components/move_ammo_group_component.ex:68 #: lib/cannery_web/components/move_ammo_group_component.ex:68
#: lib/cannery_web/live/ammo_group_live/index.html.heex:50
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:21
#: lib/cannery_web/live/ammo_type_live/index.html.heex:29
#: lib/cannery_web/live/ammo_type_live/show.html.heex:48
#: lib/cannery_web/live/container_live/form_component.html.heex:39 #: lib/cannery_web/live/container_live/form_component.html.heex:39
#: lib/cannery_web/live/container_live/show.html.heex:97
#: lib/cannery_web/live/range_live/index.html.heex:86
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Type" msgid "Type"
msgstr "" msgstr ""
@ -428,12 +430,12 @@ msgstr ""
msgid "Your data stays with you, period" msgid "Your data stays with you, period"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:67 #: lib/cannery_web/live/container_live/show.html.heex:60
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No tags for this container" msgid "No tags for this container"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:79 #: lib/cannery_web/components/ammo_group_table_component.ex:78
#: lib/cannery_web/components/core_components/topbar.html.heex:66 #: lib/cannery_web/components/core_components/topbar.html.heex:66
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Range" msgid "Range"
@ -480,7 +482,7 @@ msgid "New Shot Records"
msgstr "" msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:55 #: lib/cannery_web/live/range_live/index.html.heex:55
#: lib/cannery_web/live/range_live/index.html.heex:98 #: lib/cannery_web/live/range_live/index.html.heex:122
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No shots recorded" msgid "No shots recorded"
msgstr "" msgstr ""
@ -519,49 +521,48 @@ msgstr ""
msgid "Shot log" msgid "Shot log"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:180 #: lib/cannery_web/components/ammo_group_table_component.ex:164
#: lib/cannery_web/components/ammo_group_table_component.ex:263 #: lib/cannery_web/components/ammo_group_table_component.ex:247
#: lib/cannery_web/components/ammo_type_table_component.ex:235 #: lib/cannery_web/components/ammo_type_table_component.ex:261
#: lib/cannery_web/components/core_components/ammo_group_card.html.heex:45 #: lib/cannery_web/components/core_components/ammo_group_card.html.heex:45
#: lib/cannery_web/components/core_components/ammo_group_card.html.heex:50 #: lib/cannery_web/components/core_components/ammo_group_card.html.heex:50
#: lib/cannery_web/live/ammo_group_live/show.html.heex:37 #: lib/cannery_web/live/ammo_group_live/show.html.heex:37
#: lib/cannery_web/live/ammo_group_live/show.html.heex:42 #: lib/cannery_web/live/ammo_group_live/show.html.heex:42
#: lib/cannery_web/live/ammo_type_live/show.html.heex:135 #: lib/cannery_web/live/ammo_type_live/show.html.heex:152
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "$%{amount}" msgid "$%{amount}"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:87 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:160
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Bimetal" msgid "Bimetal"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:51 #: lib/cannery_web/components/ammo_type_table_component.ex:66
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:83 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:156
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Jacket type" msgid "Jacket type"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:52 #: lib/cannery_web/components/ammo_type_table_component.ex:82
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:91 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:279
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Muzzle velocity" msgid "Muzzle velocity"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:55 #: lib/cannery_web/components/ammo_type_table_component.ex:76
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:108 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:244
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Powder grains per charge" msgid "Powder grains per charge"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:53 #: lib/cannery_web/components/ammo_type_table_component.ex:74
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:101 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:236
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Powder type" msgid "Powder type"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:68 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:343
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:173
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "UPC" msgid "UPC"
msgstr "" msgstr ""
@ -584,8 +585,8 @@ msgstr ""
msgid "New password" msgid "New password"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:62 #: lib/cannery_web/components/ammo_type_table_component.ex:84
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:142 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:304
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Firing type" msgid "Firing type"
msgstr "" msgstr ""
@ -596,33 +597,33 @@ msgid "Reconnecting..."
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/index.ex:28 #: lib/cannery_web/live/container_live/index.ex:28
#: lib/cannery_web/live/container_live/show.ex:108 #: lib/cannery_web/live/container_live/show.ex:120
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit %{name}" msgid "Edit %{name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/index.ex:63 #: lib/cannery_web/live/container_live/index.ex:63
#: lib/cannery_web/live/container_live/show.ex:109 #: lib/cannery_web/live/container_live/show.ex:121
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit %{name} tags" msgid "Edit %{name} tags"
msgstr "" msgstr ""
#: lib/cannery_web/components/core_components/container_card.html.heex:37 #: lib/cannery_web/components/core_components/container_card.html.heex:37
#: lib/cannery_web/live/ammo_type_live/show.html.heex:70 #: lib/cannery_web/live/ammo_type_live/show.html.heex:87
#: lib/cannery_web/live/container_live/show.html.heex:33 #: lib/cannery_web/live/container_live/show.html.heex:27
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Rounds:" msgid "Rounds:"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:177 #: lib/cannery_web/components/ammo_group_table_component.ex:161
#: lib/cannery_web/components/ammo_group_table_component.ex:259 #: lib/cannery_web/components/ammo_group_table_component.ex:243
#: lib/cannery_web/components/ammo_type_table_component.ex:234 #: lib/cannery_web/components/ammo_type_table_component.ex:260
#: lib/cannery_web/live/ammo_type_live/show.html.heex:139 #: lib/cannery_web/live/ammo_type_live/show.html.heex:156
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No cost information" msgid "No cost information"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:92 #: lib/cannery_web/components/ammo_group_table_component.ex:84
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "% left" msgid "% left"
msgstr "" msgstr ""
@ -688,7 +689,7 @@ msgstr ""
msgid "Copies" msgid "Copies"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:122 #: lib/cannery_web/live/ammo_type_live/show.html.heex:139
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Added on:" msgid "Added on:"
msgstr "" msgstr ""
@ -752,7 +753,7 @@ msgstr ""
msgid "Move Ammo" msgid "Move Ammo"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:112 #: lib/cannery_web/live/container_live/show.html.heex:123
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No ammo in this container" msgid "No ammo in this container"
msgstr "" msgstr ""
@ -768,8 +769,8 @@ msgid "This ammo is not in a container"
msgstr "" msgstr ""
#: lib/cannery_web/components/core_components/container_card.html.heex:32 #: lib/cannery_web/components/core_components/container_card.html.heex:32
#: lib/cannery_web/live/ammo_type_live/show.html.heex:96 #: lib/cannery_web/live/ammo_type_live/show.html.heex:113
#: lib/cannery_web/live/container_live/show.html.heex:23 #: lib/cannery_web/live/container_live/show.html.heex:22
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Packs:" msgid "Packs:"
msgstr "" msgstr ""
@ -795,80 +796,79 @@ msgstr ""
msgid "Container:" msgid "Container:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:65 #: lib/cannery_web/live/ammo_group_live/index.html.heex:85
#: lib/cannery_web/live/ammo_type_live/index.html.heex:40 #: lib/cannery_web/live/ammo_type_live/index.html.heex:64
#: lib/cannery_web/live/ammo_type_live/show.html.heex:149 #: lib/cannery_web/live/ammo_type_live/show.html.heex:166
#: lib/cannery_web/live/container_live/show.html.heex:98
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Show used" msgid "Show used"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:218 #: lib/cannery_web/components/ammo_group_table_component.ex:202
#: lib/cannery_web/live/ammo_group_live/show.html.heex:19 #: lib/cannery_web/live/ammo_group_live/show.html.heex:19
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "%{percentage}%" msgid "%{percentage}%"
msgstr "" msgstr ""
#: lib/cannery_web/live/range_live/index.ex:135 #: lib/cannery_web/live/range_live/index.ex:153
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Rounds shot: %{count}" msgid "Rounds shot: %{count}"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:100 #: lib/cannery_web/components/ammo_type_table_component.ex:123
#: lib/cannery_web/components/container_table_component.ex:64 #: lib/cannery_web/components/container_table_component.ex:64
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Packs" msgid "Packs"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:80 #: lib/cannery_web/components/ammo_type_table_component.ex:144
#: lib/cannery_web/components/container_table_component.ex:65 #: lib/cannery_web/components/container_table_component.ex:65
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Rounds" msgid "Rounds"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:155 #: lib/cannery_web/live/ammo_type_live/show.html.heex:172
#: lib/cannery_web/live/container_live/index.html.heex:40 #: lib/cannery_web/live/container_live/index.html.heex:40
#: lib/cannery_web/live/container_live/show.html.heex:104 #: lib/cannery_web/live/container_live/show.html.heex:115
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "View as table" msgid "View as table"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:110 #: lib/cannery_web/components/ammo_type_table_component.ex:108
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Total ever packs" msgid "Total ever packs"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:113 #: lib/cannery_web/live/ammo_type_live/show.html.heex:130
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Total ever packs:" msgid "Total ever packs:"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:91 #: lib/cannery_web/components/ammo_type_table_component.ex:129
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Total ever rounds" msgid "Total ever rounds"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:87 #: lib/cannery_web/live/ammo_type_live/show.html.heex:104
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Total ever rounds:" msgid "Total ever rounds:"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:105 #: lib/cannery_web/components/ammo_type_table_component.ex:116
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Used packs" msgid "Used packs"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:105 #: lib/cannery_web/live/ammo_type_live/show.html.heex:122
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Used packs:" msgid "Used packs:"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:86 #: lib/cannery_web/components/ammo_type_table_component.ex:137
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Used rounds" msgid "Used rounds"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:79 #: lib/cannery_web/live/ammo_type_live/show.html.heex:96
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Used rounds:" msgid "Used rounds:"
msgstr "" msgstr ""
@ -883,120 +883,120 @@ msgstr ""
msgid "Rounds shot chart" msgid "Rounds shot chart"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:26 #: lib/cannery_web/live/ammo_type_live/show.ex:154
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Blank:" msgid "Blank:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:12 #: lib/cannery_web/live/ammo_type_live/show.ex:132
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Bullet core:" msgid "Bullet core:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:11 #: lib/cannery_web/live/ammo_type_live/show.ex:131
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Bullet type:" msgid "Bullet type:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:14 #: lib/cannery_web/live/ammo_type_live/show.ex:123
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Caliber:" msgid "Caliber:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:13 #: lib/cannery_web/live/ammo_type_live/show.ex:121
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Cartridge:" msgid "Cartridge:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:15 #: lib/cannery_web/live/ammo_type_live/show.ex:134
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Case material:" msgid "Case material:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:27 #: lib/cannery_web/live/ammo_type_live/show.ex:155
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Corrosive:" msgid "Corrosive:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:23 #: lib/cannery_web/live/ammo_type_live/show.ex:151
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Firing type:" msgid "Firing type:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:20 #: lib/cannery_web/live/ammo_type_live/show.ex:130
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Grains:" msgid "Grains:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:25 #: lib/cannery_web/live/ammo_type_live/show.ex:153
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Incendiary:" msgid "Incendiary:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:16 #: lib/cannery_web/live/ammo_type_live/show.ex:133
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Jacket type:" msgid "Jacket type:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:28 #: lib/cannery_web/live/ammo_type_live/show.ex:156
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Manufacturer:" msgid "Manufacturer:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:17 #: lib/cannery_web/live/ammo_type_live/show.ex:149
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Muzzle velocity:" msgid "Muzzle velocity:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:19 #: lib/cannery_web/live/ammo_type_live/show.ex:143
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Powder grains per charge:" msgid "Powder grains per charge:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:18 #: lib/cannery_web/live/ammo_type_live/show.ex:141
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Powder type:" msgid "Powder type:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:21 #: lib/cannery_web/live/ammo_type_live/show.ex:147
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Pressure:" msgid "Pressure:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:22 #: lib/cannery_web/live/ammo_type_live/show.ex:150
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Primer type:" msgid "Primer type:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:24 #: lib/cannery_web/live/ammo_type_live/show.ex:152
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Tracer:" msgid "Tracer:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:29 #: lib/cannery_web/live/ammo_type_live/show.ex:157
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "UPC:" msgid "UPC:"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:120 #: lib/cannery_web/components/ammo_type_table_component.ex:102
#: lib/cannery_web/live/ammo_type_live/show.html.heex:131 #: lib/cannery_web/live/ammo_type_live/show.html.heex:148
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Average CPR" msgid "Average CPR"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.ex:28 #: lib/cannery_web/live/ammo_type_live/index.ex:28
#: lib/cannery_web/live/ammo_type_live/show.ex:104 #: lib/cannery_web/live/ammo_type_live/show.ex:82
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit %{ammo_type_name}" msgid "Edit %{ammo_type_name}"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:267 #: lib/cannery_web/components/ammo_group_table_component.ex:251
#: lib/cannery_web/components/core_components/ammo_group_card.html.heex:17 #: lib/cannery_web/components/core_components/ammo_group_card.html.heex:17
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Empty" msgid "Empty"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:84 #: lib/cannery_web/components/ammo_group_table_component.ex:81
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "CPR" msgid "CPR"
msgstr "" msgstr ""
@ -1006,7 +1006,7 @@ msgstr ""
msgid "CPR:" msgid "CPR:"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:91 #: lib/cannery_web/components/ammo_group_table_component.ex:88
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Original Count" msgid "Original Count"
msgstr "" msgstr ""
@ -1021,12 +1021,7 @@ msgstr ""
msgid "Home" msgid "Home"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:28 #: lib/cannery_web/components/ammo_group_table_component.ex:64
#, elixir-autogen, elixir-format
msgid "Total packs:"
msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:65
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Last used on" msgid "Last used on"
msgstr "" msgstr ""
@ -1036,12 +1031,12 @@ msgstr ""
msgid "Last used on:" msgid "Last used on:"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:198 #: lib/cannery_web/components/ammo_group_table_component.ex:182
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Never used" msgid "Never used"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:64 #: lib/cannery_web/components/ammo_group_table_component.ex:69
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:42 #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:42
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Purchased on" msgid "Purchased on"
@ -1059,17 +1054,17 @@ msgid "Edit ammo"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:8 #: lib/cannery_web/live/ammo_type_live/index.html.heex:8
#: lib/cannery_web/live/ammo_type_live/index.html.heex:47 #: lib/cannery_web/live/ammo_type_live/index.html.heex:71
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No Ammo types" msgid "No Ammo types"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:34 #: lib/cannery_web/live/ammo_type_live/index.html.heex:58
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Search catalog" msgid "Search catalog"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:59 #: lib/cannery_web/live/ammo_group_live/index.html.heex:79
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Search ammo" msgid "Search ammo"
msgstr "" msgstr ""
@ -1079,12 +1074,12 @@ msgstr ""
msgid "Search containers" msgid "Search containers"
msgstr "" msgstr ""
#: lib/cannery_web/live/tag_live/index.html.heex:37 #: lib/cannery_web/live/tag_live/index.html.heex:36
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Search tags" msgid "Search tags"
msgstr "" msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:91 #: lib/cannery_web/live/range_live/index.html.heex:115
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Search shot records" msgid "Search shot records"
msgstr "" msgstr ""
@ -1182,27 +1177,27 @@ msgstr ""
msgid "Password" msgid "Password"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:130 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:261
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "+P" msgid "+P"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:71 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:75
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid ".223" msgid ".223"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:63 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:56
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "5.56x46mm NATO" msgid "5.56x46mm NATO"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:138 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:300
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Boxer" msgid "Boxer"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:146 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:308
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Centerfire" msgid "Centerfire"
msgstr "" msgstr ""
@ -1214,7 +1209,7 @@ msgid "Really great weather"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:60 #: lib/cannery_web/components/ammo_group_table_component.ex:60
#: lib/cannery_web/components/ammo_type_table_component.ex:121 #: lib/cannery_web/components/ammo_type_table_component.ex:100
#: lib/cannery_web/components/container_table_component.ex:67 #: lib/cannery_web/components/container_table_component.ex:67
#: lib/cannery_web/components/move_ammo_group_component.ex:70 #: lib/cannery_web/components/move_ammo_group_component.ex:70
#: lib/cannery_web/components/shot_group_table_component.ex:45 #: lib/cannery_web/components/shot_group_table_component.ex:45
@ -1233,7 +1228,7 @@ msgstr ""
msgid "Log out" msgid "Log out"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:100 #: lib/cannery_web/components/ammo_group_table_component.ex:92
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Current Count" msgid "Current Count"
msgstr "" msgstr ""
@ -1243,3 +1238,209 @@ msgstr ""
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Close modal" msgid "Close modal"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:56
#: lib/cannery_web/live/ammo_type_live/index.html.heex:35
#: lib/cannery_web/live/container_live/show.html.heex:103
#: lib/cannery_web/live/range_live/index.html.heex:92
#, elixir-autogen, elixir-format
msgid "All"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:313
#, elixir-autogen, elixir-format
msgid "Attributes"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:56
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:89
#, elixir-autogen, elixir-format
msgid "Brass height"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:128
#, elixir-autogen, elixir-format
msgid "Brass height:"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:57
#: lib/cannery_web/components/ammo_type_table_component.ex:58
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:96
#, elixir-autogen, elixir-format
msgid "Chamber size"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:129
#, elixir-autogen, elixir-format
msgid "Chamber size:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:48
#, elixir-autogen, elixir-format
msgid "Dimensions"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:81
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:266
#, elixir-autogen, elixir-format
msgid "Dram equivalent"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:148
#, elixir-autogen, elixir-format
msgid "Dram equivalent:"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:51
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:67
#, elixir-autogen, elixir-format
msgid "Gauge"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:123
#, elixir-autogen, elixir-format
msgid "Gauge:"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:72
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:207
#, elixir-autogen, elixir-format
msgid "Load grains"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:139
#, elixir-autogen, elixir-format
msgid "Load grains:"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:29
#, elixir-autogen, elixir-format
msgid "No ammo"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:60
#, elixir-autogen, elixir-format
msgid "None specified"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:59
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:25
#: lib/cannery_web/live/ammo_type_live/index.html.heex:38
#: lib/cannery_web/live/ammo_type_live/show.html.heex:58
#: lib/cannery_web/live/container_live/show.html.heex:106
#: lib/cannery_web/live/range_live/index.html.heex:95
#, elixir-autogen, elixir-format
msgid "Pistol"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:233
#, elixir-autogen, elixir-format
msgid "Powder"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:293
#, elixir-autogen, elixir-format
msgid "Primer"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:109
#, elixir-autogen, elixir-format
msgid "Projectile"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:57
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:25
#: lib/cannery_web/live/ammo_type_live/index.html.heex:36
#: lib/cannery_web/live/ammo_type_live/show.html.heex:56
#: lib/cannery_web/live/container_live/show.html.heex:104
#: lib/cannery_web/live/range_live/index.html.heex:93
#, elixir-autogen, elixir-format
msgid "Rifle"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:73
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:215
#, elixir-autogen, elixir-format
msgid "Shot charge weight"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:140
#, elixir-autogen, elixir-format
msgid "Shot charge weight:"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:70
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:191
#, elixir-autogen, elixir-format
msgid "Shot material"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:137
#, elixir-autogen, elixir-format
msgid "Shot material:"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:71
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:200
#, elixir-autogen, elixir-format
msgid "Shot size"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:138
#, elixir-autogen, elixir-format
msgid "Shot size:"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:69
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:183
#, elixir-autogen, elixir-format
msgid "Shot type"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:136
#, elixir-autogen, elixir-format
msgid "Shot type:"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:58
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:25
#: lib/cannery_web/live/ammo_type_live/index.html.heex:37
#: lib/cannery_web/live/ammo_type_live/show.html.heex:54
#: lib/cannery_web/live/container_live/show.html.heex:105
#: lib/cannery_web/live/range_live/index.html.heex:94
#, elixir-autogen, elixir-format
msgid "Shotgun"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:62
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:143
#, elixir-autogen, elixir-format
msgid "Slug core"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:187
#, elixir-autogen, elixir-format
msgid "Target, bird, buck, etc"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:127
#, elixir-autogen, elixir-format
msgid "Unfired length:"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:55
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:80
#, elixir-autogen, elixir-format
msgid "Unfired shell length"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:68
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:176
#, elixir-autogen, elixir-format
msgid "Wadding"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:135
#, elixir-autogen, elixir-format
msgid "Wadding:"
msgstr ""

View File

@ -12,12 +12,12 @@ msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.ex:54 #: lib/cannery_web/live/ammo_group_live/index.ex:54
#: lib/cannery_web/live/ammo_group_live/index.ex:62 #: lib/cannery_web/live/ammo_group_live/index.ex:62
#: lib/cannery_web/live/ammo_group_live/index.html.heex:41 #: lib/cannery_web/live/ammo_group_live/index.html.heex:38
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Add Ammo" msgid "Add Ammo"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:37 #: lib/cannery_web/live/ammo_group_live/index.html.heex:34
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Add your first box!" msgid "Add your first box!"
msgstr "" msgstr ""
@ -122,7 +122,7 @@ msgstr ""
#: lib/cannery_web/components/add_shot_group_component.html.heex:57 #: lib/cannery_web/components/add_shot_group_component.html.heex:57
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:84 #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:84
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:180 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:350
#: lib/cannery_web/live/container_live/form_component.html.heex:57 #: lib/cannery_web/live/container_live/form_component.html.heex:57
#: lib/cannery_web/live/invite_live/form_component.html.heex:35 #: lib/cannery_web/live/invite_live/form_component.html.heex:35
#: lib/cannery_web/live/range_live/form_component.html.heex:45 #: lib/cannery_web/live/range_live/form_component.html.heex:45
@ -136,7 +136,7 @@ msgstr ""
msgid "Send instructions to reset password" msgid "Send instructions to reset password"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:75 #: lib/cannery_web/live/container_live/show.html.heex:68
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Why not add one?" msgid "Why not add one?"
msgstr "" msgstr ""
@ -156,7 +156,7 @@ msgstr ""
msgid "Why not get some ready to shoot?" msgid "Why not get some ready to shoot?"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:105 #: lib/cannery_web/live/ammo_group_live/index.html.heex:125
#: lib/cannery_web/live/ammo_group_live/show.html.heex:103 #: lib/cannery_web/live/ammo_group_live/show.html.heex:103
#: lib/cannery_web/live/range_live/index.html.heex:45 #: lib/cannery_web/live/range_live/index.html.heex:45
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -178,7 +178,7 @@ msgstr ""
msgid "Copy to clipboard" msgid "Copy to clipboard"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:22 #: lib/cannery_web/live/ammo_group_live/index.html.heex:14
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "add a container first" msgid "add a container first"
msgstr "" msgstr ""
@ -203,13 +203,13 @@ msgstr ""
msgid "View in Catalog" msgid "View in Catalog"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:32 #: lib/cannery_web/live/ammo_group_live/index.html.heex:24
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "add an ammo type first" msgid "add an ammo type first"
msgstr "" msgstr ""
#: lib/cannery_web/components/move_ammo_group_component.ex:80 #: lib/cannery_web/components/move_ammo_group_component.ex:80
#: lib/cannery_web/live/ammo_group_live/index.html.heex:122 #: lib/cannery_web/live/ammo_group_live/index.html.heex:142
#: lib/cannery_web/live/ammo_group_live/show.html.heex:96 #: lib/cannery_web/live/ammo_group_live/show.html.heex:96
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Move ammo" msgid "Move ammo"
@ -237,13 +237,13 @@ msgstr ""
msgid "Export Data as JSON" msgid "Export Data as JSON"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:85 #: lib/cannery_web/live/ammo_type_live/index.html.heex:110
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Clone %{ammo_type_name}" msgid "Clone %{ammo_type_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:88 #: lib/cannery_web/live/container_live/index.html.heex:87
#: lib/cannery_web/live/container_live/index.html.heex:144 #: lib/cannery_web/live/container_live/index.html.heex:145
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Clone %{container_name}" msgid "Clone %{container_name}"
msgstr "" msgstr ""
@ -253,20 +253,20 @@ msgstr ""
msgid "Copy invite link for %{invite_name}" msgid "Copy invite link for %{invite_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:104 #: lib/cannery_web/live/ammo_type_live/index.html.heex:129
#: lib/cannery_web/live/ammo_type_live/show.html.heex:36 #: lib/cannery_web/live/ammo_type_live/show.html.heex:36
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Delete %{ammo_type_name}" msgid "Delete %{ammo_type_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:103 #: lib/cannery_web/live/container_live/index.html.heex:104
#: lib/cannery_web/live/container_live/index.html.heex:159 #: lib/cannery_web/live/container_live/index.html.heex:162
#: lib/cannery_web/live/container_live/show.html.heex:55 #: lib/cannery_web/live/container_live/show.html.heex:48
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Delete %{container_name}" msgid "Delete %{container_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/tag_live/index.html.heex:66 #: lib/cannery_web/live/tag_live/index.html.heex:65
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Delete %{tag_name}" msgid "Delete %{tag_name}"
msgstr "" msgstr ""
@ -277,30 +277,30 @@ msgid "Delete invite for %{invite_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:161 #: lib/cannery_web/live/ammo_group_live/show.ex:161
#: lib/cannery_web/live/range_live/index.html.heex:131 #: lib/cannery_web/live/range_live/index.html.heex:155
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Delete shot record of %{shot_group_count} shots" msgid "Delete shot record of %{shot_group_count} shots"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:75 #: lib/cannery_web/live/ammo_type_live/index.html.heex:100
#: lib/cannery_web/live/ammo_type_live/show.html.heex:19 #: lib/cannery_web/live/ammo_type_live/show.html.heex:19
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit %{ammo_type_name}" msgid "Edit %{ammo_type_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:78 #: lib/cannery_web/live/container_live/index.html.heex:77
#: lib/cannery_web/live/container_live/index.html.heex:134 #: lib/cannery_web/live/container_live/index.html.heex:135
#: lib/cannery_web/live/container_live/show.html.heex:42 #: lib/cannery_web/live/container_live/show.html.heex:35
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit %{container_name}" msgid "Edit %{container_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/tag_live/index.html.heex:53 #: lib/cannery_web/live/tag_live/index.html.heex:52
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit %{tag_name}" msgid "Edit %{tag_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:144 #: lib/cannery_web/live/ammo_group_live/index.html.heex:164
#: lib/cannery_web/live/ammo_group_live/show.html.heex:62 #: lib/cannery_web/live/ammo_group_live/show.html.heex:62
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit ammo group of %{ammo_group_count} bullets" msgid "Edit ammo group of %{ammo_group_count} bullets"
@ -316,45 +316,45 @@ msgstr ""
msgid "Edit shot group of %{shot_group_count} shots" msgid "Edit shot group of %{shot_group_count} shots"
msgstr "" msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:114 #: lib/cannery_web/live/range_live/index.html.heex:138
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit shot record of %{shot_group_count} shots" msgid "Edit shot record of %{shot_group_count} shots"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:98 #: lib/cannery_web/live/ammo_group_live/index.html.heex:118
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Stage" msgid "Stage"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:66 #: lib/cannery_web/live/container_live/index.html.heex:65
#: lib/cannery_web/live/container_live/index.html.heex:123 #: lib/cannery_web/live/container_live/index.html.heex:124
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Tag %{container_name}" msgid "Tag %{container_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:97 #: lib/cannery_web/live/ammo_group_live/index.html.heex:117
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Unstage" msgid "Unstage"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:65 #: lib/cannery_web/live/ammo_type_live/index.html.heex:90
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "View %{ammo_type_name}" msgid "View %{ammo_type_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:156 #: lib/cannery_web/live/ammo_group_live/index.html.heex:176
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Clone ammo group of %{ammo_group_count} bullets" msgid "Clone ammo group of %{ammo_group_count} bullets"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:171 #: lib/cannery_web/live/ammo_group_live/index.html.heex:191
#: lib/cannery_web/live/ammo_group_live/show.html.heex:76 #: lib/cannery_web/live/ammo_group_live/show.html.heex:76
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Delete ammo group of %{ammo_group_count} bullets" msgid "Delete ammo group of %{ammo_group_count} bullets"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:132 #: lib/cannery_web/live/ammo_group_live/index.html.heex:152
#: lib/cannery_web/live/ammo_type_live/show.html.heex:189 #: lib/cannery_web/live/ammo_type_live/show.html.heex:206
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "View ammo group of %{ammo_group_count} bullets" msgid "View ammo group of %{ammo_group_count} bullets"
msgstr "" msgstr ""

View File

@ -34,7 +34,7 @@ msgstr ""
msgid "Ammo" msgid "Ammo"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:108 #: lib/cannery_web/components/ammo_group_table_component.ex:96
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:22 #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:22
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Ammo type" msgid "Ammo type"
@ -45,48 +45,48 @@ msgstr ""
msgid "Background color" msgid "Background color"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:65 #: lib/cannery_web/components/ammo_type_table_component.ex:87
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:158 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:324
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Blank" msgid "Blank"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:79 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:171
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Brass" msgid "Brass"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:47 #: lib/cannery_web/components/ammo_type_table_component.ex:62
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:51 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:144
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Bullet core" msgid "Bullet core"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:46 #: lib/cannery_web/components/ammo_type_table_component.ex:60
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:43 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:121
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Bullet type" msgid "Bullet type"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:49 #: lib/cannery_web/components/ammo_type_table_component.ex:51
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:67 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:68
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Caliber" msgid "Caliber"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:48 #: lib/cannery_web/components/ammo_type_table_component.ex:49
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:59 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:52
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Cartridge" msgid "Cartridge"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:50 #: lib/cannery_web/components/ammo_type_table_component.ex:67
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:75 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:167
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Case material" msgid "Case material"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:72 #: lib/cannery_web/components/ammo_group_table_component.ex:74
#: lib/cannery_web/components/move_ammo_group_component.ex:67 #: lib/cannery_web/components/move_ammo_group_component.ex:67
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:59 #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:59
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -101,13 +101,13 @@ msgstr ""
msgid "Containers" msgid "Containers"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:66 #: lib/cannery_web/components/ammo_type_table_component.ex:88
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:162 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:328
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Corrosive" msgid "Corrosive"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:100 #: lib/cannery_web/components/ammo_group_table_component.ex:92
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:28 #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:28
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Count" msgid "Count"
@ -120,7 +120,7 @@ msgid "Count:"
msgstr "" msgstr ""
#: lib/cannery_web/components/container_table_component.ex:46 #: lib/cannery_web/components/container_table_component.ex:46
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:28 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:38
#: lib/cannery_web/live/container_live/form_component.html.heex:29 #: lib/cannery_web/live/container_live/form_component.html.heex:29
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Description" msgid "Description"
@ -147,24 +147,19 @@ msgstr ""
msgid "Edit Tag" msgid "Edit Tag"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:41 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:135
#, elixir-autogen, elixir-format
msgid "Example bullet type abbreviations"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:47
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "FMJ" msgid "FMJ"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:59 #: lib/cannery_web/components/ammo_type_table_component.ex:59
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:118 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:112
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Grains" msgid "Grains"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:64 #: lib/cannery_web/components/ammo_type_table_component.ex:86
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:154 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:320
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Incendiary" msgid "Incendiary"
msgstr "" msgstr ""
@ -214,8 +209,9 @@ msgstr ""
msgid "Magazine, Clip, Ammo Box, etc" msgid "Magazine, Clip, Ammo Box, etc"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:67 #: lib/cannery_web/components/ammo_type_table_component.ex:89
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:166 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:333
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:336
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Manufacturer" msgid "Manufacturer"
msgstr "" msgstr ""
@ -230,9 +226,9 @@ msgstr ""
msgid "My cool ammo can" msgid "My cool ammo can"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:45 #: lib/cannery_web/components/ammo_type_table_component.ex:153
#: lib/cannery_web/components/container_table_component.ex:45 #: lib/cannery_web/components/container_table_component.ex:45
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:21 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:31
#: lib/cannery_web/live/container_live/form_component.html.heex:21 #: lib/cannery_web/live/container_live/form_component.html.heex:21
#: lib/cannery_web/live/invite_live/form_component.html.heex:21 #: lib/cannery_web/live/invite_live/form_component.html.heex:21
#: lib/cannery_web/live/tag_live/form_component.html.heex:21 #: lib/cannery_web/live/tag_live/form_component.html.heex:21
@ -262,19 +258,18 @@ msgstr ""
msgid "New Tag" msgid "New Tag"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:10 #: lib/cannery_web/live/ammo_group_live/index.html.heex:92
#: lib/cannery_web/live/ammo_group_live/index.html.heex:72
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No Ammo" msgid "No Ammo"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:163 #: lib/cannery_web/live/ammo_type_live/show.html.heex:180
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No ammo for this type" msgid "No ammo for this type"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:8 #: lib/cannery_web/live/container_live/index.html.heex:8
#: lib/cannery_web/live/container_live/index.html.heex:48 #: lib/cannery_web/live/container_live/index.html.heex:47
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No containers" msgid "No containers"
msgstr "" msgstr ""
@ -286,7 +281,7 @@ msgstr ""
#: lib/cannery_web/live/container_live/edit_tags_component.html.heex:29 #: lib/cannery_web/live/container_live/edit_tags_component.html.heex:29
#: lib/cannery_web/live/tag_live/index.html.heex:10 #: lib/cannery_web/live/tag_live/index.html.heex:10
#: lib/cannery_web/live/tag_live/index.html.heex:44 #: lib/cannery_web/live/tag_live/index.html.heex:43
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No tags" msgid "No tags"
msgstr "" msgstr ""
@ -311,13 +306,13 @@ msgstr ""
msgid "On the bookshelf" msgid "On the bookshelf"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:60 #: lib/cannery_web/components/ammo_type_table_component.ex:80
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:126 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:257
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Pressure" msgid "Pressure"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:83 #: lib/cannery_web/components/ammo_group_table_component.ex:82
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:35 #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:35
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Price paid" msgid "Price paid"
@ -328,8 +323,8 @@ msgstr ""
msgid "Price paid:" msgid "Price paid:"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:61 #: lib/cannery_web/components/ammo_type_table_component.ex:83
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:134 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:296
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Primer type" msgid "Primer type"
msgstr "" msgstr ""
@ -360,7 +355,7 @@ msgstr ""
msgid "Simple:" msgid "Simple:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:55 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:151
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Steel" msgid "Steel"
msgstr "" msgstr ""
@ -394,15 +389,22 @@ msgstr ""
msgid "The self-hosted firearm tracker website" msgid "The self-hosted firearm tracker website"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:63 #: lib/cannery_web/components/ammo_type_table_component.ex:85
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:150 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:316
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Tracer" msgid "Tracer"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:150
#: lib/cannery_web/components/container_table_component.ex:48 #: lib/cannery_web/components/container_table_component.ex:48
#: lib/cannery_web/components/move_ammo_group_component.ex:68 #: lib/cannery_web/components/move_ammo_group_component.ex:68
#: lib/cannery_web/live/ammo_group_live/index.html.heex:50
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:21
#: lib/cannery_web/live/ammo_type_live/index.html.heex:29
#: lib/cannery_web/live/ammo_type_live/show.html.heex:48
#: lib/cannery_web/live/container_live/form_component.html.heex:39 #: lib/cannery_web/live/container_live/form_component.html.heex:39
#: lib/cannery_web/live/container_live/show.html.heex:97
#: lib/cannery_web/live/range_live/index.html.heex:86
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Type" msgid "Type"
msgstr "" msgstr ""
@ -428,12 +430,12 @@ msgstr ""
msgid "Your data stays with you, period" msgid "Your data stays with you, period"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:67 #: lib/cannery_web/live/container_live/show.html.heex:60
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No tags for this container" msgid "No tags for this container"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:79 #: lib/cannery_web/components/ammo_group_table_component.ex:78
#: lib/cannery_web/components/core_components/topbar.html.heex:66 #: lib/cannery_web/components/core_components/topbar.html.heex:66
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Range" msgid "Range"
@ -480,7 +482,7 @@ msgid "New Shot Records"
msgstr "" msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:55 #: lib/cannery_web/live/range_live/index.html.heex:55
#: lib/cannery_web/live/range_live/index.html.heex:98 #: lib/cannery_web/live/range_live/index.html.heex:122
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No shots recorded" msgid "No shots recorded"
msgstr "" msgstr ""
@ -519,49 +521,48 @@ msgstr ""
msgid "Shot log" msgid "Shot log"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:180 #: lib/cannery_web/components/ammo_group_table_component.ex:164
#: lib/cannery_web/components/ammo_group_table_component.ex:263 #: lib/cannery_web/components/ammo_group_table_component.ex:247
#: lib/cannery_web/components/ammo_type_table_component.ex:235 #: lib/cannery_web/components/ammo_type_table_component.ex:261
#: lib/cannery_web/components/core_components/ammo_group_card.html.heex:45 #: lib/cannery_web/components/core_components/ammo_group_card.html.heex:45
#: lib/cannery_web/components/core_components/ammo_group_card.html.heex:50 #: lib/cannery_web/components/core_components/ammo_group_card.html.heex:50
#: lib/cannery_web/live/ammo_group_live/show.html.heex:37 #: lib/cannery_web/live/ammo_group_live/show.html.heex:37
#: lib/cannery_web/live/ammo_group_live/show.html.heex:42 #: lib/cannery_web/live/ammo_group_live/show.html.heex:42
#: lib/cannery_web/live/ammo_type_live/show.html.heex:135 #: lib/cannery_web/live/ammo_type_live/show.html.heex:152
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "$%{amount}" msgid "$%{amount}"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:87 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:160
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Bimetal" msgid "Bimetal"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:51 #: lib/cannery_web/components/ammo_type_table_component.ex:66
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:83 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:156
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Jacket type" msgid "Jacket type"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:52 #: lib/cannery_web/components/ammo_type_table_component.ex:82
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:91 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:279
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Muzzle velocity" msgid "Muzzle velocity"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:55 #: lib/cannery_web/components/ammo_type_table_component.ex:76
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:108 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:244
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Powder grains per charge" msgid "Powder grains per charge"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:53 #: lib/cannery_web/components/ammo_type_table_component.ex:74
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:101 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:236
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Powder type" msgid "Powder type"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:68 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:343
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:173
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "UPC" msgid "UPC"
msgstr "" msgstr ""
@ -584,8 +585,8 @@ msgstr ""
msgid "New password" msgid "New password"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:62 #: lib/cannery_web/components/ammo_type_table_component.ex:84
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:142 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:304
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Firing type" msgid "Firing type"
msgstr "" msgstr ""
@ -596,33 +597,33 @@ msgid "Reconnecting..."
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/index.ex:28 #: lib/cannery_web/live/container_live/index.ex:28
#: lib/cannery_web/live/container_live/show.ex:108 #: lib/cannery_web/live/container_live/show.ex:120
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit %{name}" msgid "Edit %{name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/index.ex:63 #: lib/cannery_web/live/container_live/index.ex:63
#: lib/cannery_web/live/container_live/show.ex:109 #: lib/cannery_web/live/container_live/show.ex:121
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit %{name} tags" msgid "Edit %{name} tags"
msgstr "" msgstr ""
#: lib/cannery_web/components/core_components/container_card.html.heex:37 #: lib/cannery_web/components/core_components/container_card.html.heex:37
#: lib/cannery_web/live/ammo_type_live/show.html.heex:70 #: lib/cannery_web/live/ammo_type_live/show.html.heex:87
#: lib/cannery_web/live/container_live/show.html.heex:33 #: lib/cannery_web/live/container_live/show.html.heex:27
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Rounds:" msgid "Rounds:"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:177 #: lib/cannery_web/components/ammo_group_table_component.ex:161
#: lib/cannery_web/components/ammo_group_table_component.ex:259 #: lib/cannery_web/components/ammo_group_table_component.ex:243
#: lib/cannery_web/components/ammo_type_table_component.ex:234 #: lib/cannery_web/components/ammo_type_table_component.ex:260
#: lib/cannery_web/live/ammo_type_live/show.html.heex:139 #: lib/cannery_web/live/ammo_type_live/show.html.heex:156
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No cost information" msgid "No cost information"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:92 #: lib/cannery_web/components/ammo_group_table_component.ex:84
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "% left" msgid "% left"
msgstr "" msgstr ""
@ -688,7 +689,7 @@ msgstr ""
msgid "Copies" msgid "Copies"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:122 #: lib/cannery_web/live/ammo_type_live/show.html.heex:139
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Added on:" msgid "Added on:"
msgstr "" msgstr ""
@ -752,7 +753,7 @@ msgstr ""
msgid "Move Ammo" msgid "Move Ammo"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:112 #: lib/cannery_web/live/container_live/show.html.heex:123
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "No ammo in this container" msgid "No ammo in this container"
msgstr "" msgstr ""
@ -768,8 +769,8 @@ msgid "This ammo is not in a container"
msgstr "" msgstr ""
#: lib/cannery_web/components/core_components/container_card.html.heex:32 #: lib/cannery_web/components/core_components/container_card.html.heex:32
#: lib/cannery_web/live/ammo_type_live/show.html.heex:96 #: lib/cannery_web/live/ammo_type_live/show.html.heex:113
#: lib/cannery_web/live/container_live/show.html.heex:23 #: lib/cannery_web/live/container_live/show.html.heex:22
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Packs:" msgid "Packs:"
msgstr "" msgstr ""
@ -795,80 +796,79 @@ msgstr ""
msgid "Container:" msgid "Container:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:65 #: lib/cannery_web/live/ammo_group_live/index.html.heex:85
#: lib/cannery_web/live/ammo_type_live/index.html.heex:40 #: lib/cannery_web/live/ammo_type_live/index.html.heex:64
#: lib/cannery_web/live/ammo_type_live/show.html.heex:149 #: lib/cannery_web/live/ammo_type_live/show.html.heex:166
#: lib/cannery_web/live/container_live/show.html.heex:98
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Show used" msgid "Show used"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:218 #: lib/cannery_web/components/ammo_group_table_component.ex:202
#: lib/cannery_web/live/ammo_group_live/show.html.heex:19 #: lib/cannery_web/live/ammo_group_live/show.html.heex:19
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "%{percentage}%" msgid "%{percentage}%"
msgstr "" msgstr ""
#: lib/cannery_web/live/range_live/index.ex:135 #: lib/cannery_web/live/range_live/index.ex:153
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Rounds shot: %{count}" msgid "Rounds shot: %{count}"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:100 #: lib/cannery_web/components/ammo_type_table_component.ex:123
#: lib/cannery_web/components/container_table_component.ex:64 #: lib/cannery_web/components/container_table_component.ex:64
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Packs" msgid "Packs"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:80 #: lib/cannery_web/components/ammo_type_table_component.ex:144
#: lib/cannery_web/components/container_table_component.ex:65 #: lib/cannery_web/components/container_table_component.ex:65
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Rounds" msgid "Rounds"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:155 #: lib/cannery_web/live/ammo_type_live/show.html.heex:172
#: lib/cannery_web/live/container_live/index.html.heex:40 #: lib/cannery_web/live/container_live/index.html.heex:40
#: lib/cannery_web/live/container_live/show.html.heex:104 #: lib/cannery_web/live/container_live/show.html.heex:115
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "View as table" msgid "View as table"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:110 #: lib/cannery_web/components/ammo_type_table_component.ex:108
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Total ever packs" msgid "Total ever packs"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:113 #: lib/cannery_web/live/ammo_type_live/show.html.heex:130
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Total ever packs:" msgid "Total ever packs:"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:91 #: lib/cannery_web/components/ammo_type_table_component.ex:129
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Total ever rounds" msgid "Total ever rounds"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:87 #: lib/cannery_web/live/ammo_type_live/show.html.heex:104
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Total ever rounds:" msgid "Total ever rounds:"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:105 #: lib/cannery_web/components/ammo_type_table_component.ex:116
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Used packs" msgid "Used packs"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:105 #: lib/cannery_web/live/ammo_type_live/show.html.heex:122
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Used packs:" msgid "Used packs:"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:86 #: lib/cannery_web/components/ammo_type_table_component.ex:137
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Used rounds" msgid "Used rounds"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:79 #: lib/cannery_web/live/ammo_type_live/show.html.heex:96
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Used rounds:" msgid "Used rounds:"
msgstr "" msgstr ""
@ -883,120 +883,120 @@ msgstr ""
msgid "Rounds shot chart" msgid "Rounds shot chart"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:26 #: lib/cannery_web/live/ammo_type_live/show.ex:154
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Blank:" msgid "Blank:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:12 #: lib/cannery_web/live/ammo_type_live/show.ex:132
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Bullet core:" msgid "Bullet core:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:11 #: lib/cannery_web/live/ammo_type_live/show.ex:131
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Bullet type:" msgid "Bullet type:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:14 #: lib/cannery_web/live/ammo_type_live/show.ex:123
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Caliber:" msgid "Caliber:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:13 #: lib/cannery_web/live/ammo_type_live/show.ex:121
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Cartridge:" msgid "Cartridge:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:15 #: lib/cannery_web/live/ammo_type_live/show.ex:134
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Case material:" msgid "Case material:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:27 #: lib/cannery_web/live/ammo_type_live/show.ex:155
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Corrosive:" msgid "Corrosive:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:23 #: lib/cannery_web/live/ammo_type_live/show.ex:151
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Firing type:" msgid "Firing type:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:20 #: lib/cannery_web/live/ammo_type_live/show.ex:130
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Grains:" msgid "Grains:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:25 #: lib/cannery_web/live/ammo_type_live/show.ex:153
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Incendiary:" msgid "Incendiary:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:16 #: lib/cannery_web/live/ammo_type_live/show.ex:133
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Jacket type:" msgid "Jacket type:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:28 #: lib/cannery_web/live/ammo_type_live/show.ex:156
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Manufacturer:" msgid "Manufacturer:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:17 #: lib/cannery_web/live/ammo_type_live/show.ex:149
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Muzzle velocity:" msgid "Muzzle velocity:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:19 #: lib/cannery_web/live/ammo_type_live/show.ex:143
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Powder grains per charge:" msgid "Powder grains per charge:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:18 #: lib/cannery_web/live/ammo_type_live/show.ex:141
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Powder type:" msgid "Powder type:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:21 #: lib/cannery_web/live/ammo_type_live/show.ex:147
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Pressure:" msgid "Pressure:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:22 #: lib/cannery_web/live/ammo_type_live/show.ex:150
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Primer type:" msgid "Primer type:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:24 #: lib/cannery_web/live/ammo_type_live/show.ex:152
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Tracer:" msgid "Tracer:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:29 #: lib/cannery_web/live/ammo_type_live/show.ex:157
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "UPC:" msgid "UPC:"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:120 #: lib/cannery_web/components/ammo_type_table_component.ex:102
#: lib/cannery_web/live/ammo_type_live/show.html.heex:131 #: lib/cannery_web/live/ammo_type_live/show.html.heex:148
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Average CPR" msgid "Average CPR"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.ex:28 #: lib/cannery_web/live/ammo_type_live/index.ex:28
#: lib/cannery_web/live/ammo_type_live/show.ex:104 #: lib/cannery_web/live/ammo_type_live/show.ex:82
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Edit %{ammo_type_name}" msgid "Edit %{ammo_type_name}"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:267 #: lib/cannery_web/components/ammo_group_table_component.ex:251
#: lib/cannery_web/components/core_components/ammo_group_card.html.heex:17 #: lib/cannery_web/components/core_components/ammo_group_card.html.heex:17
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Empty" msgid "Empty"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:84 #: lib/cannery_web/components/ammo_group_table_component.ex:81
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "CPR" msgid "CPR"
msgstr "" msgstr ""
@ -1006,7 +1006,7 @@ msgstr ""
msgid "CPR:" msgid "CPR:"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:91 #: lib/cannery_web/components/ammo_group_table_component.ex:88
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Original Count" msgid "Original Count"
msgstr "" msgstr ""
@ -1021,12 +1021,7 @@ msgstr ""
msgid "Home" msgid "Home"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:28 #: lib/cannery_web/components/ammo_group_table_component.ex:64
#, elixir-autogen, elixir-format, fuzzy
msgid "Total packs:"
msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:65
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Last used on" msgid "Last used on"
msgstr "" msgstr ""
@ -1036,12 +1031,12 @@ msgstr ""
msgid "Last used on:" msgid "Last used on:"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:198 #: lib/cannery_web/components/ammo_group_table_component.ex:182
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Never used" msgid "Never used"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:64 #: lib/cannery_web/components/ammo_group_table_component.ex:69
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:42 #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:42
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Purchased on" msgid "Purchased on"
@ -1059,17 +1054,17 @@ msgid "Edit ammo"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:8 #: lib/cannery_web/live/ammo_type_live/index.html.heex:8
#: lib/cannery_web/live/ammo_type_live/index.html.heex:47 #: lib/cannery_web/live/ammo_type_live/index.html.heex:71
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "No Ammo types" msgid "No Ammo types"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:34 #: lib/cannery_web/live/ammo_type_live/index.html.heex:58
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Search catalog" msgid "Search catalog"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:59 #: lib/cannery_web/live/ammo_group_live/index.html.heex:79
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Search ammo" msgid "Search ammo"
msgstr "" msgstr ""
@ -1079,12 +1074,12 @@ msgstr ""
msgid "Search containers" msgid "Search containers"
msgstr "" msgstr ""
#: lib/cannery_web/live/tag_live/index.html.heex:37 #: lib/cannery_web/live/tag_live/index.html.heex:36
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Search tags" msgid "Search tags"
msgstr "" msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:91 #: lib/cannery_web/live/range_live/index.html.heex:115
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Search shot records" msgid "Search shot records"
msgstr "" msgstr ""
@ -1182,27 +1177,27 @@ msgstr ""
msgid "Password" msgid "Password"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:130 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:261
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "+P" msgid "+P"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:71 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:75
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid ".223" msgid ".223"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:63 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:56
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "5.56x46mm NATO" msgid "5.56x46mm NATO"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:138 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:300
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Boxer" msgid "Boxer"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:146 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:308
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Centerfire" msgid "Centerfire"
msgstr "" msgstr ""
@ -1214,7 +1209,7 @@ msgid "Really great weather"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:60 #: lib/cannery_web/components/ammo_group_table_component.ex:60
#: lib/cannery_web/components/ammo_type_table_component.ex:121 #: lib/cannery_web/components/ammo_type_table_component.ex:100
#: lib/cannery_web/components/container_table_component.ex:67 #: lib/cannery_web/components/container_table_component.ex:67
#: lib/cannery_web/components/move_ammo_group_component.ex:70 #: lib/cannery_web/components/move_ammo_group_component.ex:70
#: lib/cannery_web/components/shot_group_table_component.ex:45 #: lib/cannery_web/components/shot_group_table_component.ex:45
@ -1233,7 +1228,7 @@ msgstr ""
msgid "Log out" msgid "Log out"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:100 #: lib/cannery_web/components/ammo_group_table_component.ex:92
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Current Count" msgid "Current Count"
msgstr "" msgstr ""
@ -1243,3 +1238,209 @@ msgstr ""
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Close modal" msgid "Close modal"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:56
#: lib/cannery_web/live/ammo_type_live/index.html.heex:35
#: lib/cannery_web/live/container_live/show.html.heex:103
#: lib/cannery_web/live/range_live/index.html.heex:92
#, elixir-autogen, elixir-format
msgid "All"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:313
#, elixir-autogen, elixir-format
msgid "Attributes"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:56
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:89
#, elixir-autogen, elixir-format, fuzzy
msgid "Brass height"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:128
#, elixir-autogen, elixir-format
msgid "Brass height:"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:57
#: lib/cannery_web/components/ammo_type_table_component.ex:58
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:96
#, elixir-autogen, elixir-format
msgid "Chamber size"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:129
#, elixir-autogen, elixir-format
msgid "Chamber size:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:48
#, elixir-autogen, elixir-format
msgid "Dimensions"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:81
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:266
#, elixir-autogen, elixir-format
msgid "Dram equivalent"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:148
#, elixir-autogen, elixir-format
msgid "Dram equivalent:"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:51
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:67
#, elixir-autogen, elixir-format
msgid "Gauge"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:123
#, elixir-autogen, elixir-format
msgid "Gauge:"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:72
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:207
#, elixir-autogen, elixir-format
msgid "Load grains"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:139
#, elixir-autogen, elixir-format
msgid "Load grains:"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:29
#, elixir-autogen, elixir-format, fuzzy
msgid "No ammo"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:60
#, elixir-autogen, elixir-format
msgid "None specified"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:59
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:25
#: lib/cannery_web/live/ammo_type_live/index.html.heex:38
#: lib/cannery_web/live/ammo_type_live/show.html.heex:58
#: lib/cannery_web/live/container_live/show.html.heex:106
#: lib/cannery_web/live/range_live/index.html.heex:95
#, elixir-autogen, elixir-format
msgid "Pistol"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:233
#, elixir-autogen, elixir-format, fuzzy
msgid "Powder"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:293
#, elixir-autogen, elixir-format, fuzzy
msgid "Primer"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:109
#, elixir-autogen, elixir-format
msgid "Projectile"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:57
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:25
#: lib/cannery_web/live/ammo_type_live/index.html.heex:36
#: lib/cannery_web/live/ammo_type_live/show.html.heex:56
#: lib/cannery_web/live/container_live/show.html.heex:104
#: lib/cannery_web/live/range_live/index.html.heex:93
#, elixir-autogen, elixir-format
msgid "Rifle"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:73
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:215
#, elixir-autogen, elixir-format
msgid "Shot charge weight"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:140
#, elixir-autogen, elixir-format
msgid "Shot charge weight:"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:70
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:191
#, elixir-autogen, elixir-format
msgid "Shot material"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:137
#, elixir-autogen, elixir-format
msgid "Shot material:"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:71
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:200
#, elixir-autogen, elixir-format, fuzzy
msgid "Shot size"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:138
#, elixir-autogen, elixir-format, fuzzy
msgid "Shot size:"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:69
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:183
#, elixir-autogen, elixir-format
msgid "Shot type"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:136
#, elixir-autogen, elixir-format
msgid "Shot type:"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:58
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:25
#: lib/cannery_web/live/ammo_type_live/index.html.heex:37
#: lib/cannery_web/live/ammo_type_live/show.html.heex:54
#: lib/cannery_web/live/container_live/show.html.heex:105
#: lib/cannery_web/live/range_live/index.html.heex:94
#, elixir-autogen, elixir-format
msgid "Shotgun"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:62
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:143
#, elixir-autogen, elixir-format
msgid "Slug core"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:187
#, elixir-autogen, elixir-format
msgid "Target, bird, buck, etc"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:127
#, elixir-autogen, elixir-format
msgid "Unfired length:"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:55
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:80
#, elixir-autogen, elixir-format
msgid "Unfired shell length"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:68
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:176
#, elixir-autogen, elixir-format
msgid "Wadding"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:135
#, elixir-autogen, elixir-format
msgid "Wadding:"
msgstr ""

View File

@ -56,6 +56,7 @@ msgstr ""
msgid "Not found" msgid "Not found"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:18
#: lib/cannery_web/templates/user_registration/new.html.heex:13 #: lib/cannery_web/templates/user_registration/new.html.heex:13
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:13 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:13
#: lib/cannery_web/templates/user_settings/edit.html.heex:22 #: lib/cannery_web/templates/user_settings/edit.html.heex:22
@ -155,7 +156,7 @@ msgstr ""
msgid "Invalid number of copies, must be between 1 and %{max}. Was %{multiplier}" msgid "Invalid number of copies, must be between 1 and %{max}. Was %{multiplier}"
msgstr "" msgstr ""
#: lib/cannery/ammo.ex:1043 #: lib/cannery/ammo.ex:1114
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Invalid multiplier" msgid "Invalid multiplier"
msgstr "" msgstr ""

View File

@ -19,7 +19,7 @@ msgid "%{name} created successfully"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.ex:72 #: lib/cannery_web/live/ammo_type_live/index.ex:72
#: lib/cannery_web/live/ammo_type_live/show.ex:49 #: lib/cannery_web/live/ammo_type_live/show.ex:27
#: lib/cannery_web/live/tag_live/index.ex:65 #: lib/cannery_web/live/tag_live/index.ex:65
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "%{name} deleted succesfully" msgid "%{name} deleted succesfully"
@ -50,15 +50,15 @@ msgstr ""
msgid "Are you sure you want to delete %{email}? This action is permanent!" msgid "Are you sure you want to delete %{email}? This action is permanent!"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:100 #: lib/cannery_web/live/container_live/index.html.heex:99
#: lib/cannery_web/live/container_live/index.html.heex:156 #: lib/cannery_web/live/container_live/index.html.heex:157
#: lib/cannery_web/live/container_live/show.html.heex:52 #: lib/cannery_web/live/container_live/show.html.heex:45
#: lib/cannery_web/live/tag_live/index.html.heex:64 #: lib/cannery_web/live/tag_live/index.html.heex:63
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete %{name}?" msgid "Are you sure you want to delete %{name}?"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:169 #: lib/cannery_web/live/ammo_group_live/index.html.heex:189
#: lib/cannery_web/live/ammo_group_live/show.html.heex:74 #: lib/cannery_web/live/ammo_group_live/show.html.heex:74
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this ammo?" msgid "Are you sure you want to delete this ammo?"
@ -111,7 +111,7 @@ msgstr ""
#: lib/cannery_web/components/add_shot_group_component.html.heex:59 #: lib/cannery_web/components/add_shot_group_component.html.heex:59
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:85 #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:85
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:181 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:351
#: lib/cannery_web/live/container_live/form_component.html.heex:59 #: lib/cannery_web/live/container_live/form_component.html.heex:59
#: lib/cannery_web/live/invite_live/form_component.html.heex:37 #: lib/cannery_web/live/invite_live/form_component.html.heex:37
#: lib/cannery_web/live/range_live/form_component.html.heex:47 #: lib/cannery_web/live/range_live/form_component.html.heex:47
@ -156,7 +156,7 @@ msgid "Are you sure you want to unstage this ammo?"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:159 #: lib/cannery_web/live/ammo_group_live/show.ex:159
#: lib/cannery_web/live/range_live/index.html.heex:128 #: lib/cannery_web/live/range_live/index.html.heex:152
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this shot record?" msgid "Are you sure you want to delete this shot record?"
msgstr "" msgstr ""
@ -192,8 +192,8 @@ msgstr ""
msgid "%{name} removed successfully" msgid "%{name} removed successfully"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:18 #: lib/cannery_web/live/ammo_group_live/index.html.heex:10
#: lib/cannery_web/live/ammo_group_live/index.html.heex:28 #: lib/cannery_web/live/ammo_group_live/index.html.heex:20
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "You'll need to" msgid "You'll need to"
msgstr "" msgstr ""
@ -236,7 +236,7 @@ msgid_plural "Ammo added successfully"
msgstr[0] "" msgstr[0] ""
msgstr[1] "" msgstr[1] ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:97 #: lib/cannery_web/live/ammo_type_live/index.html.heex:122
#: lib/cannery_web/live/ammo_type_live/show.html.heex:29 #: lib/cannery_web/live/ammo_type_live/show.html.heex:29
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Are you sure you want to delete %{name}? This will delete all %{name} type ammo as well!" msgid "Are you sure you want to delete %{name}? This will delete all %{name} type ammo as well!"

View File

@ -56,6 +56,7 @@ msgstr ""
msgid "Not found" msgid "Not found"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:18
#: lib/cannery_web/templates/user_registration/new.html.heex:13 #: lib/cannery_web/templates/user_registration/new.html.heex:13
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:13 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:13
#: lib/cannery_web/templates/user_settings/edit.html.heex:22 #: lib/cannery_web/templates/user_settings/edit.html.heex:22
@ -154,7 +155,7 @@ msgstr ""
msgid "Invalid number of copies, must be between 1 and %{max}. Was %{multiplier}" msgid "Invalid number of copies, must be between 1 and %{max}. Was %{multiplier}"
msgstr "" msgstr ""
#: lib/cannery/ammo.ex:1043 #: lib/cannery/ammo.ex:1114
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Invalid multiplier" msgid "Invalid multiplier"
msgstr "" msgstr ""

View File

@ -25,12 +25,12 @@ msgstr ""
## effect: edit them in PO (.po) files instead. ## effect: edit them in PO (.po) files instead.
#: lib/cannery_web/live/ammo_group_live/index.ex:54 #: lib/cannery_web/live/ammo_group_live/index.ex:54
#: lib/cannery_web/live/ammo_group_live/index.ex:62 #: lib/cannery_web/live/ammo_group_live/index.ex:62
#: lib/cannery_web/live/ammo_group_live/index.html.heex:41 #: lib/cannery_web/live/ammo_group_live/index.html.heex:38
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Add Ammo" msgid "Add Ammo"
msgstr "Añadir Munición" msgstr "Añadir Munición"
#: lib/cannery_web/live/ammo_group_live/index.html.heex:37 #: lib/cannery_web/live/ammo_group_live/index.html.heex:34
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Add your first box!" msgid "Add your first box!"
msgstr "¡Añade tu primera caja!" msgstr "¡Añade tu primera caja!"
@ -135,7 +135,7 @@ msgstr "Resetear contraseña"
#: lib/cannery_web/components/add_shot_group_component.html.heex:57 #: lib/cannery_web/components/add_shot_group_component.html.heex:57
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:84 #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:84
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:180 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:350
#: lib/cannery_web/live/container_live/form_component.html.heex:57 #: lib/cannery_web/live/container_live/form_component.html.heex:57
#: lib/cannery_web/live/invite_live/form_component.html.heex:35 #: lib/cannery_web/live/invite_live/form_component.html.heex:35
#: lib/cannery_web/live/range_live/form_component.html.heex:45 #: lib/cannery_web/live/range_live/form_component.html.heex:45
@ -149,7 +149,7 @@ msgstr "Guardar"
msgid "Send instructions to reset password" msgid "Send instructions to reset password"
msgstr "Enviar instrucciones para reestablecer contraseña" msgstr "Enviar instrucciones para reestablecer contraseña"
#: lib/cannery_web/live/container_live/show.html.heex:75 #: lib/cannery_web/live/container_live/show.html.heex:68
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Why not add one?" msgid "Why not add one?"
msgstr "¿Por qué no añadir una?" msgstr "¿Por qué no añadir una?"
@ -169,7 +169,7 @@ msgstr "Preparar munición"
msgid "Why not get some ready to shoot?" msgid "Why not get some ready to shoot?"
msgstr "¿Por qué no preparar parte para disparar?" msgstr "¿Por qué no preparar parte para disparar?"
#: lib/cannery_web/live/ammo_group_live/index.html.heex:105 #: lib/cannery_web/live/ammo_group_live/index.html.heex:125
#: lib/cannery_web/live/ammo_group_live/show.html.heex:103 #: lib/cannery_web/live/ammo_group_live/show.html.heex:103
#: lib/cannery_web/live/range_live/index.html.heex:45 #: lib/cannery_web/live/range_live/index.html.heex:45
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -191,7 +191,7 @@ msgstr "Seleccionar"
msgid "Copy to clipboard" msgid "Copy to clipboard"
msgstr "Copiar al portapapeles" msgstr "Copiar al portapapeles"
#: lib/cannery_web/live/ammo_group_live/index.html.heex:22 #: lib/cannery_web/live/ammo_group_live/index.html.heex:14
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "add a container first" msgid "add a container first"
msgstr "añade primero un contenedor" msgstr "añade primero un contenedor"
@ -216,13 +216,13 @@ msgstr "Cambiar lenguaje"
msgid "View in Catalog" msgid "View in Catalog"
msgstr "Ver en Catalogo" msgstr "Ver en Catalogo"
#: lib/cannery_web/live/ammo_group_live/index.html.heex:32 #: lib/cannery_web/live/ammo_group_live/index.html.heex:24
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "add an ammo type first" msgid "add an ammo type first"
msgstr "añade primero un tipo de munición" msgstr "añade primero un tipo de munición"
#: lib/cannery_web/components/move_ammo_group_component.ex:80 #: lib/cannery_web/components/move_ammo_group_component.ex:80
#: lib/cannery_web/live/ammo_group_live/index.html.heex:122 #: lib/cannery_web/live/ammo_group_live/index.html.heex:142
#: lib/cannery_web/live/ammo_group_live/show.html.heex:96 #: lib/cannery_web/live/ammo_group_live/show.html.heex:96
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Move ammo" msgid "Move ammo"
@ -250,13 +250,13 @@ msgstr "Desmontar del campo de tiro"
msgid "Export Data as JSON" msgid "Export Data as JSON"
msgstr "Exportar datos como JSON" msgstr "Exportar datos como JSON"
#: lib/cannery_web/live/ammo_type_live/index.html.heex:85 #: lib/cannery_web/live/ammo_type_live/index.html.heex:110
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Clone %{ammo_type_name}" msgid "Clone %{ammo_type_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:88 #: lib/cannery_web/live/container_live/index.html.heex:87
#: lib/cannery_web/live/container_live/index.html.heex:144 #: lib/cannery_web/live/container_live/index.html.heex:145
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Clone %{container_name}" msgid "Clone %{container_name}"
msgstr "" msgstr ""
@ -266,20 +266,20 @@ msgstr ""
msgid "Copy invite link for %{invite_name}" msgid "Copy invite link for %{invite_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:104 #: lib/cannery_web/live/ammo_type_live/index.html.heex:129
#: lib/cannery_web/live/ammo_type_live/show.html.heex:36 #: lib/cannery_web/live/ammo_type_live/show.html.heex:36
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Delete %{ammo_type_name}" msgid "Delete %{ammo_type_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:103 #: lib/cannery_web/live/container_live/index.html.heex:104
#: lib/cannery_web/live/container_live/index.html.heex:159 #: lib/cannery_web/live/container_live/index.html.heex:162
#: lib/cannery_web/live/container_live/show.html.heex:55 #: lib/cannery_web/live/container_live/show.html.heex:48
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Delete %{container_name}" msgid "Delete %{container_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/tag_live/index.html.heex:66 #: lib/cannery_web/live/tag_live/index.html.heex:65
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Delete %{tag_name}" msgid "Delete %{tag_name}"
msgstr "" msgstr ""
@ -290,30 +290,30 @@ msgid "Delete invite for %{invite_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:161 #: lib/cannery_web/live/ammo_group_live/show.ex:161
#: lib/cannery_web/live/range_live/index.html.heex:131 #: lib/cannery_web/live/range_live/index.html.heex:155
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Delete shot record of %{shot_group_count} shots" msgid "Delete shot record of %{shot_group_count} shots"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:75 #: lib/cannery_web/live/ammo_type_live/index.html.heex:100
#: lib/cannery_web/live/ammo_type_live/show.html.heex:19 #: lib/cannery_web/live/ammo_type_live/show.html.heex:19
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit %{ammo_type_name}" msgid "Edit %{ammo_type_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:78 #: lib/cannery_web/live/container_live/index.html.heex:77
#: lib/cannery_web/live/container_live/index.html.heex:134 #: lib/cannery_web/live/container_live/index.html.heex:135
#: lib/cannery_web/live/container_live/show.html.heex:42 #: lib/cannery_web/live/container_live/show.html.heex:35
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit %{container_name}" msgid "Edit %{container_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/tag_live/index.html.heex:53 #: lib/cannery_web/live/tag_live/index.html.heex:52
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit %{tag_name}" msgid "Edit %{tag_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:144 #: lib/cannery_web/live/ammo_group_live/index.html.heex:164
#: lib/cannery_web/live/ammo_group_live/show.html.heex:62 #: lib/cannery_web/live/ammo_group_live/show.html.heex:62
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit ammo group of %{ammo_group_count} bullets" msgid "Edit ammo group of %{ammo_group_count} bullets"
@ -329,45 +329,45 @@ msgstr ""
msgid "Edit shot group of %{shot_group_count} shots" msgid "Edit shot group of %{shot_group_count} shots"
msgstr "" msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:114 #: lib/cannery_web/live/range_live/index.html.heex:138
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit shot record of %{shot_group_count} shots" msgid "Edit shot record of %{shot_group_count} shots"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:98 #: lib/cannery_web/live/ammo_group_live/index.html.heex:118
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Stage" msgid "Stage"
msgstr "Preparar munición" msgstr "Preparar munición"
#: lib/cannery_web/live/container_live/index.html.heex:66 #: lib/cannery_web/live/container_live/index.html.heex:65
#: lib/cannery_web/live/container_live/index.html.heex:123 #: lib/cannery_web/live/container_live/index.html.heex:124
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Tag %{container_name}" msgid "Tag %{container_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:97 #: lib/cannery_web/live/ammo_group_live/index.html.heex:117
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Unstage" msgid "Unstage"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:65 #: lib/cannery_web/live/ammo_type_live/index.html.heex:90
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "View %{ammo_type_name}" msgid "View %{ammo_type_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:156 #: lib/cannery_web/live/ammo_group_live/index.html.heex:176
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Clone ammo group of %{ammo_group_count} bullets" msgid "Clone ammo group of %{ammo_group_count} bullets"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:171 #: lib/cannery_web/live/ammo_group_live/index.html.heex:191
#: lib/cannery_web/live/ammo_group_live/show.html.heex:76 #: lib/cannery_web/live/ammo_group_live/show.html.heex:76
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Delete ammo group of %{ammo_group_count} bullets" msgid "Delete ammo group of %{ammo_group_count} bullets"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:132 #: lib/cannery_web/live/ammo_group_live/index.html.heex:152
#: lib/cannery_web/live/ammo_type_live/show.html.heex:189 #: lib/cannery_web/live/ammo_type_live/show.html.heex:206
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "View ammo group of %{ammo_group_count} bullets" msgid "View ammo group of %{ammo_group_count} bullets"
msgstr "" msgstr ""

View File

@ -38,7 +38,7 @@ msgstr "Aministradores:"
msgid "Ammo" msgid "Ammo"
msgstr "Munición" msgstr "Munición"
#: lib/cannery_web/components/ammo_group_table_component.ex:108 #: lib/cannery_web/components/ammo_group_table_component.ex:96
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:22 #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:22
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Ammo type" msgid "Ammo type"
@ -49,48 +49,48 @@ msgstr "Tipo de munición"
msgid "Background color" msgid "Background color"
msgstr "Color de fondo" msgstr "Color de fondo"
#: lib/cannery_web/components/ammo_type_table_component.ex:65 #: lib/cannery_web/components/ammo_type_table_component.ex:87
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:158 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:324
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Blank" msgid "Blank"
msgstr "Fogueo" msgstr "Fogueo"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:79 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:171
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Brass" msgid "Brass"
msgstr "Latón" msgstr "Latón"
#: lib/cannery_web/components/ammo_type_table_component.ex:47 #: lib/cannery_web/components/ammo_type_table_component.ex:62
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:51 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:144
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Bullet core" msgid "Bullet core"
msgstr "Núcleo de bala" msgstr "Núcleo de bala"
#: lib/cannery_web/components/ammo_type_table_component.ex:46 #: lib/cannery_web/components/ammo_type_table_component.ex:60
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:43 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:121
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Bullet type" msgid "Bullet type"
msgstr "Tipo de bala" msgstr "Tipo de bala"
#: lib/cannery_web/components/ammo_type_table_component.ex:49 #: lib/cannery_web/components/ammo_type_table_component.ex:51
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:67 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:68
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Caliber" msgid "Caliber"
msgstr "Calibre" msgstr "Calibre"
#: lib/cannery_web/components/ammo_type_table_component.ex:48 #: lib/cannery_web/components/ammo_type_table_component.ex:49
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:59 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:52
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Cartridge" msgid "Cartridge"
msgstr "Cartucho" msgstr "Cartucho"
#: lib/cannery_web/components/ammo_type_table_component.ex:50 #: lib/cannery_web/components/ammo_type_table_component.ex:67
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:75 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:167
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Case material" msgid "Case material"
msgstr "Material del casquillo" msgstr "Material del casquillo"
#: lib/cannery_web/components/ammo_group_table_component.ex:72 #: lib/cannery_web/components/ammo_group_table_component.ex:74
#: lib/cannery_web/components/move_ammo_group_component.ex:67 #: lib/cannery_web/components/move_ammo_group_component.ex:67
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:59 #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:59
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -105,13 +105,13 @@ msgstr "Contenedor"
msgid "Containers" msgid "Containers"
msgstr "Contenedores" msgstr "Contenedores"
#: lib/cannery_web/components/ammo_type_table_component.ex:66 #: lib/cannery_web/components/ammo_type_table_component.ex:88
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:162 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:328
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Corrosive" msgid "Corrosive"
msgstr "Corrosiva" msgstr "Corrosiva"
#: lib/cannery_web/components/ammo_group_table_component.ex:100 #: lib/cannery_web/components/ammo_group_table_component.ex:92
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:28 #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:28
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Count" msgid "Count"
@ -124,7 +124,7 @@ msgid "Count:"
msgstr "Cantidad:" msgstr "Cantidad:"
#: lib/cannery_web/components/container_table_component.ex:46 #: lib/cannery_web/components/container_table_component.ex:46
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:28 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:38
#: lib/cannery_web/live/container_live/form_component.html.heex:29 #: lib/cannery_web/live/container_live/form_component.html.heex:29
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Description" msgid "Description"
@ -151,24 +151,19 @@ msgstr "Editar Invitación"
msgid "Edit Tag" msgid "Edit Tag"
msgstr "Editar Etiqueta" msgstr "Editar Etiqueta"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:41 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:135
#, elixir-autogen, elixir-format
msgid "Example bullet type abbreviations"
msgstr "Abreviaciones de tipo de bala ejemplo"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:47
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "FMJ" msgid "FMJ"
msgstr "Bala encamisada" msgstr "Bala encamisada"
#: lib/cannery_web/components/ammo_type_table_component.ex:59 #: lib/cannery_web/components/ammo_type_table_component.ex:59
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:118 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:112
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Grains" msgid "Grains"
msgstr "Grano" msgstr "Grano"
#: lib/cannery_web/components/ammo_type_table_component.ex:64 #: lib/cannery_web/components/ammo_type_table_component.ex:86
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:154 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:320
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Incendiary" msgid "Incendiary"
msgstr "Incendiaria" msgstr "Incendiaria"
@ -218,8 +213,9 @@ msgstr "Localización:"
msgid "Magazine, Clip, Ammo Box, etc" msgid "Magazine, Clip, Ammo Box, etc"
msgstr "Cargador, Clip, Caja de Munición, etc" msgstr "Cargador, Clip, Caja de Munición, etc"
#: lib/cannery_web/components/ammo_type_table_component.ex:67 #: lib/cannery_web/components/ammo_type_table_component.ex:89
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:166 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:333
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:336
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Manufacturer" msgid "Manufacturer"
msgstr "Fabricante" msgstr "Fabricante"
@ -234,9 +230,9 @@ msgstr "Lata de munición metálica con la pegatina de chica de anime"
msgid "My cool ammo can" msgid "My cool ammo can"
msgstr "Mi lata de munición guapa" msgstr "Mi lata de munición guapa"
#: lib/cannery_web/components/ammo_type_table_component.ex:45 #: lib/cannery_web/components/ammo_type_table_component.ex:153
#: lib/cannery_web/components/container_table_component.ex:45 #: lib/cannery_web/components/container_table_component.ex:45
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:21 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:31
#: lib/cannery_web/live/container_live/form_component.html.heex:21 #: lib/cannery_web/live/container_live/form_component.html.heex:21
#: lib/cannery_web/live/invite_live/form_component.html.heex:21 #: lib/cannery_web/live/invite_live/form_component.html.heex:21
#: lib/cannery_web/live/tag_live/form_component.html.heex:21 #: lib/cannery_web/live/tag_live/form_component.html.heex:21
@ -266,19 +262,18 @@ msgstr "Nueva Invitación"
msgid "New Tag" msgid "New Tag"
msgstr "Nueva Etiqueta" msgstr "Nueva Etiqueta"
#: lib/cannery_web/live/ammo_group_live/index.html.heex:10 #: lib/cannery_web/live/ammo_group_live/index.html.heex:92
#: lib/cannery_web/live/ammo_group_live/index.html.heex:72
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No Ammo" msgid "No Ammo"
msgstr "Sin Munición" msgstr "Sin Munición"
#: lib/cannery_web/live/ammo_type_live/show.html.heex:163 #: lib/cannery_web/live/ammo_type_live/show.html.heex:180
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No ammo for this type" msgid "No ammo for this type"
msgstr "Sin munición para este tipo" msgstr "Sin munición para este tipo"
#: lib/cannery_web/live/container_live/index.html.heex:8 #: lib/cannery_web/live/container_live/index.html.heex:8
#: lib/cannery_web/live/container_live/index.html.heex:48 #: lib/cannery_web/live/container_live/index.html.heex:47
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No containers" msgid "No containers"
msgstr "Sin contenedores" msgstr "Sin contenedores"
@ -290,7 +285,7 @@ msgstr "Sin invitaciones"
#: lib/cannery_web/live/container_live/edit_tags_component.html.heex:29 #: lib/cannery_web/live/container_live/edit_tags_component.html.heex:29
#: lib/cannery_web/live/tag_live/index.html.heex:10 #: lib/cannery_web/live/tag_live/index.html.heex:10
#: lib/cannery_web/live/tag_live/index.html.heex:44 #: lib/cannery_web/live/tag_live/index.html.heex:43
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No tags" msgid "No tags"
msgstr "Sin etiquetas" msgstr "Sin etiquetas"
@ -315,13 +310,13 @@ msgstr "Notas:"
msgid "On the bookshelf" msgid "On the bookshelf"
msgstr "En la estantería" msgstr "En la estantería"
#: lib/cannery_web/components/ammo_type_table_component.ex:60 #: lib/cannery_web/components/ammo_type_table_component.ex:80
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:126 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:257
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Pressure" msgid "Pressure"
msgstr "Presión" msgstr "Presión"
#: lib/cannery_web/components/ammo_group_table_component.ex:83 #: lib/cannery_web/components/ammo_group_table_component.ex:82
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:35 #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:35
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Price paid" msgid "Price paid"
@ -332,8 +327,8 @@ msgstr "Precio pagado"
msgid "Price paid:" msgid "Price paid:"
msgstr "Precio pagado:" msgstr "Precio pagado:"
#: lib/cannery_web/components/ammo_type_table_component.ex:61 #: lib/cannery_web/components/ammo_type_table_component.ex:83
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:134 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:296
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Primer type" msgid "Primer type"
msgstr "Tipo de espoleta" msgstr "Tipo de espoleta"
@ -366,7 +361,7 @@ msgstr "Ajustes"
msgid "Simple:" msgid "Simple:"
msgstr "Simple:" msgstr "Simple:"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:55 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:151
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Steel" msgid "Steel"
msgstr "Acero" msgstr "Acero"
@ -401,15 +396,22 @@ msgstr "Color del texto"
msgid "The self-hosted firearm tracker website" msgid "The self-hosted firearm tracker website"
msgstr "La página de seguimiento de armas autogestionada" msgstr "La página de seguimiento de armas autogestionada"
#: lib/cannery_web/components/ammo_type_table_component.ex:63 #: lib/cannery_web/components/ammo_type_table_component.ex:85
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:150 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:316
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Tracer" msgid "Tracer"
msgstr "Trazadora" msgstr "Trazadora"
#: lib/cannery_web/components/ammo_type_table_component.ex:150
#: lib/cannery_web/components/container_table_component.ex:48 #: lib/cannery_web/components/container_table_component.ex:48
#: lib/cannery_web/components/move_ammo_group_component.ex:68 #: lib/cannery_web/components/move_ammo_group_component.ex:68
#: lib/cannery_web/live/ammo_group_live/index.html.heex:50
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:21
#: lib/cannery_web/live/ammo_type_live/index.html.heex:29
#: lib/cannery_web/live/ammo_type_live/show.html.heex:48
#: lib/cannery_web/live/container_live/form_component.html.heex:39 #: lib/cannery_web/live/container_live/form_component.html.heex:39
#: lib/cannery_web/live/container_live/show.html.heex:97
#: lib/cannery_web/live/range_live/index.html.heex:86
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Type" msgid "Type"
msgstr "Tipo" msgstr "Tipo"
@ -435,12 +437,12 @@ msgstr "Usos restantes"
msgid "Your data stays with you, period" msgid "Your data stays with you, period"
msgstr "Tus datos se quedan contigo, sin excepciones" msgstr "Tus datos se quedan contigo, sin excepciones"
#: lib/cannery_web/live/container_live/show.html.heex:67 #: lib/cannery_web/live/container_live/show.html.heex:60
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No tags for this container" msgid "No tags for this container"
msgstr "Contenedor sin etiquetas" msgstr "Contenedor sin etiquetas"
#: lib/cannery_web/components/ammo_group_table_component.ex:79 #: lib/cannery_web/components/ammo_group_table_component.ex:78
#: lib/cannery_web/components/core_components/topbar.html.heex:66 #: lib/cannery_web/components/core_components/topbar.html.heex:66
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Range" msgid "Range"
@ -487,7 +489,7 @@ msgid "New Shot Records"
msgstr "Nuevos Tiros Récord" msgstr "Nuevos Tiros Récord"
#: lib/cannery_web/live/range_live/index.html.heex:55 #: lib/cannery_web/live/range_live/index.html.heex:55
#: lib/cannery_web/live/range_live/index.html.heex:98 #: lib/cannery_web/live/range_live/index.html.heex:122
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No shots recorded" msgid "No shots recorded"
msgstr "No se han grabado tiros" msgstr "No se han grabado tiros"
@ -526,49 +528,48 @@ msgstr "No hay otros contenedores"
msgid "Shot log" msgid "Shot log"
msgstr "Registro de tiros" msgstr "Registro de tiros"
#: lib/cannery_web/components/ammo_group_table_component.ex:180 #: lib/cannery_web/components/ammo_group_table_component.ex:164
#: lib/cannery_web/components/ammo_group_table_component.ex:263 #: lib/cannery_web/components/ammo_group_table_component.ex:247
#: lib/cannery_web/components/ammo_type_table_component.ex:235 #: lib/cannery_web/components/ammo_type_table_component.ex:261
#: lib/cannery_web/components/core_components/ammo_group_card.html.heex:45 #: lib/cannery_web/components/core_components/ammo_group_card.html.heex:45
#: lib/cannery_web/components/core_components/ammo_group_card.html.heex:50 #: lib/cannery_web/components/core_components/ammo_group_card.html.heex:50
#: lib/cannery_web/live/ammo_group_live/show.html.heex:37 #: lib/cannery_web/live/ammo_group_live/show.html.heex:37
#: lib/cannery_web/live/ammo_group_live/show.html.heex:42 #: lib/cannery_web/live/ammo_group_live/show.html.heex:42
#: lib/cannery_web/live/ammo_type_live/show.html.heex:135 #: lib/cannery_web/live/ammo_type_live/show.html.heex:152
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "$%{amount}" msgid "$%{amount}"
msgstr "$%{amount}" msgstr "$%{amount}"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:87 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:160
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Bimetal" msgid "Bimetal"
msgstr "Bimetal" msgstr "Bimetal"
#: lib/cannery_web/components/ammo_type_table_component.ex:51 #: lib/cannery_web/components/ammo_type_table_component.ex:66
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:83 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:156
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Jacket type" msgid "Jacket type"
msgstr "Tipo de camisa" msgstr "Tipo de camisa"
#: lib/cannery_web/components/ammo_type_table_component.ex:52 #: lib/cannery_web/components/ammo_type_table_component.ex:82
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:91 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:279
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Muzzle velocity" msgid "Muzzle velocity"
msgstr "Velocidad de boca" msgstr "Velocidad de boca"
#: lib/cannery_web/components/ammo_type_table_component.ex:55 #: lib/cannery_web/components/ammo_type_table_component.ex:76
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:108 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:244
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Powder grains per charge" msgid "Powder grains per charge"
msgstr "Granos de polvora por carga" msgstr "Granos de polvora por carga"
#: lib/cannery_web/components/ammo_type_table_component.ex:53 #: lib/cannery_web/components/ammo_type_table_component.ex:74
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:101 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:236
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Powder type" msgid "Powder type"
msgstr "Tipo de polvora" msgstr "Tipo de polvora"
#: lib/cannery_web/components/ammo_type_table_component.ex:68 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:343
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:173
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "UPC" msgid "UPC"
msgstr "" msgstr ""
@ -591,8 +592,8 @@ msgstr "Contraseña actual"
msgid "New password" msgid "New password"
msgstr "Nueva contraseña" msgstr "Nueva contraseña"
#: lib/cannery_web/components/ammo_type_table_component.ex:62 #: lib/cannery_web/components/ammo_type_table_component.ex:84
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:142 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:304
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Firing type" msgid "Firing type"
msgstr "Tipo de fuego" msgstr "Tipo de fuego"
@ -603,33 +604,33 @@ msgid "Reconnecting..."
msgstr "Reconectando..." msgstr "Reconectando..."
#: lib/cannery_web/live/container_live/index.ex:28 #: lib/cannery_web/live/container_live/index.ex:28
#: lib/cannery_web/live/container_live/show.ex:108 #: lib/cannery_web/live/container_live/show.ex:120
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit %{name}" msgid "Edit %{name}"
msgstr "Editar %{name}" msgstr "Editar %{name}"
#: lib/cannery_web/live/container_live/index.ex:63 #: lib/cannery_web/live/container_live/index.ex:63
#: lib/cannery_web/live/container_live/show.ex:109 #: lib/cannery_web/live/container_live/show.ex:121
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit %{name} tags" msgid "Edit %{name} tags"
msgstr "Editar etiquetas de %{name}" msgstr "Editar etiquetas de %{name}"
#: lib/cannery_web/components/core_components/container_card.html.heex:37 #: lib/cannery_web/components/core_components/container_card.html.heex:37
#: lib/cannery_web/live/ammo_type_live/show.html.heex:70 #: lib/cannery_web/live/ammo_type_live/show.html.heex:87
#: lib/cannery_web/live/container_live/show.html.heex:33 #: lib/cannery_web/live/container_live/show.html.heex:27
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Rounds:" msgid "Rounds:"
msgstr "Balas:" msgstr "Balas:"
#: lib/cannery_web/components/ammo_group_table_component.ex:177 #: lib/cannery_web/components/ammo_group_table_component.ex:161
#: lib/cannery_web/components/ammo_group_table_component.ex:259 #: lib/cannery_web/components/ammo_group_table_component.ex:243
#: lib/cannery_web/components/ammo_type_table_component.ex:234 #: lib/cannery_web/components/ammo_type_table_component.ex:260
#: lib/cannery_web/live/ammo_type_live/show.html.heex:139 #: lib/cannery_web/live/ammo_type_live/show.html.heex:156
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No cost information" msgid "No cost information"
msgstr "No hay información de coste" msgstr "No hay información de coste"
#: lib/cannery_web/components/ammo_group_table_component.ex:92 #: lib/cannery_web/components/ammo_group_table_component.ex:84
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "% left" msgid "% left"
msgstr "% restantes" msgstr "% restantes"
@ -695,7 +696,7 @@ msgstr "Tiros Récord"
msgid "Copies" msgid "Copies"
msgstr "Copias" msgstr "Copias"
#: lib/cannery_web/live/ammo_type_live/show.html.heex:122 #: lib/cannery_web/live/ammo_type_live/show.html.heex:139
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Added on:" msgid "Added on:"
msgstr "Añadido en:" msgstr "Añadido en:"
@ -759,7 +760,7 @@ msgstr "Editar Munición"
msgid "Move Ammo" msgid "Move Ammo"
msgstr "Mover Munición" msgstr "Mover Munición"
#: lib/cannery_web/live/container_live/show.html.heex:112 #: lib/cannery_web/live/container_live/show.html.heex:123
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No ammo in this container" msgid "No ammo in this container"
msgstr "No hay munición en este contenedor" msgstr "No hay munición en este contenedor"
@ -775,8 +776,8 @@ msgid "This ammo is not in a container"
msgstr "Esta munición no está en un contenedor" msgstr "Esta munición no está en un contenedor"
#: lib/cannery_web/components/core_components/container_card.html.heex:32 #: lib/cannery_web/components/core_components/container_card.html.heex:32
#: lib/cannery_web/live/ammo_type_live/show.html.heex:96 #: lib/cannery_web/live/ammo_type_live/show.html.heex:113
#: lib/cannery_web/live/container_live/show.html.heex:23 #: lib/cannery_web/live/container_live/show.html.heex:22
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Packs:" msgid "Packs:"
msgstr "Paquetes:" msgstr "Paquetes:"
@ -803,80 +804,79 @@ msgstr ""
msgid "Container:" msgid "Container:"
msgstr "Contenedor:" msgstr "Contenedor:"
#: lib/cannery_web/live/ammo_group_live/index.html.heex:65 #: lib/cannery_web/live/ammo_group_live/index.html.heex:85
#: lib/cannery_web/live/ammo_type_live/index.html.heex:40 #: lib/cannery_web/live/ammo_type_live/index.html.heex:64
#: lib/cannery_web/live/ammo_type_live/show.html.heex:149 #: lib/cannery_web/live/ammo_type_live/show.html.heex:166
#: lib/cannery_web/live/container_live/show.html.heex:98
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Show used" msgid "Show used"
msgstr "Mostrar usadas" msgstr "Mostrar usadas"
#: lib/cannery_web/components/ammo_group_table_component.ex:218 #: lib/cannery_web/components/ammo_group_table_component.ex:202
#: lib/cannery_web/live/ammo_group_live/show.html.heex:19 #: lib/cannery_web/live/ammo_group_live/show.html.heex:19
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "%{percentage}%" msgid "%{percentage}%"
msgstr "%{percentage}%" msgstr "%{percentage}%"
#: lib/cannery_web/live/range_live/index.ex:135 #: lib/cannery_web/live/range_live/index.ex:153
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Rounds shot: %{count}" msgid "Rounds shot: %{count}"
msgstr "Balas disparadas: %{count}" msgstr "Balas disparadas: %{count}"
#: lib/cannery_web/components/ammo_type_table_component.ex:100 #: lib/cannery_web/components/ammo_type_table_component.ex:123
#: lib/cannery_web/components/container_table_component.ex:64 #: lib/cannery_web/components/container_table_component.ex:64
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Packs" msgid "Packs"
msgstr "Paquetes" msgstr "Paquetes"
#: lib/cannery_web/components/ammo_type_table_component.ex:80 #: lib/cannery_web/components/ammo_type_table_component.ex:144
#: lib/cannery_web/components/container_table_component.ex:65 #: lib/cannery_web/components/container_table_component.ex:65
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Rounds" msgid "Rounds"
msgstr "Balas" msgstr "Balas"
#: lib/cannery_web/live/ammo_type_live/show.html.heex:155 #: lib/cannery_web/live/ammo_type_live/show.html.heex:172
#: lib/cannery_web/live/container_live/index.html.heex:40 #: lib/cannery_web/live/container_live/index.html.heex:40
#: lib/cannery_web/live/container_live/show.html.heex:104 #: lib/cannery_web/live/container_live/show.html.heex:115
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "View as table" msgid "View as table"
msgstr "Ver como tabla" msgstr "Ver como tabla"
#: lib/cannery_web/components/ammo_type_table_component.ex:110 #: lib/cannery_web/components/ammo_type_table_component.ex:108
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Total ever packs" msgid "Total ever packs"
msgstr "Paquetes totales" msgstr "Paquetes totales"
#: lib/cannery_web/live/ammo_type_live/show.html.heex:113 #: lib/cannery_web/live/ammo_type_live/show.html.heex:130
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Total ever packs:" msgid "Total ever packs:"
msgstr "Paquetes totales:" msgstr "Paquetes totales:"
#: lib/cannery_web/components/ammo_type_table_component.ex:91 #: lib/cannery_web/components/ammo_type_table_component.ex:129
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Total ever rounds" msgid "Total ever rounds"
msgstr "Balas totales" msgstr "Balas totales"
#: lib/cannery_web/live/ammo_type_live/show.html.heex:87 #: lib/cannery_web/live/ammo_type_live/show.html.heex:104
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Total ever rounds:" msgid "Total ever rounds:"
msgstr "Balas totales:" msgstr "Balas totales:"
#: lib/cannery_web/components/ammo_type_table_component.ex:105 #: lib/cannery_web/components/ammo_type_table_component.ex:116
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Used packs" msgid "Used packs"
msgstr "Paquetes usados" msgstr "Paquetes usados"
#: lib/cannery_web/live/ammo_type_live/show.html.heex:105 #: lib/cannery_web/live/ammo_type_live/show.html.heex:122
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Used packs:" msgid "Used packs:"
msgstr "Paquetes usados:" msgstr "Paquetes usados:"
#: lib/cannery_web/components/ammo_type_table_component.ex:86 #: lib/cannery_web/components/ammo_type_table_component.ex:137
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Used rounds" msgid "Used rounds"
msgstr "Balas usadas" msgstr "Balas usadas"
#: lib/cannery_web/live/ammo_type_live/show.html.heex:79 #: lib/cannery_web/live/ammo_type_live/show.html.heex:96
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Used rounds:" msgid "Used rounds:"
msgstr "Balas usadas:" msgstr "Balas usadas:"
@ -891,120 +891,120 @@ msgstr "¡Acabada!"
msgid "Rounds shot chart" msgid "Rounds shot chart"
msgstr "Tabla de disparos" msgstr "Tabla de disparos"
#: lib/cannery_web/live/ammo_type_live/show.ex:26 #: lib/cannery_web/live/ammo_type_live/show.ex:154
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Blank:" msgid "Blank:"
msgstr "En blanco:" msgstr "En blanco:"
#: lib/cannery_web/live/ammo_type_live/show.ex:12 #: lib/cannery_web/live/ammo_type_live/show.ex:132
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Bullet core:" msgid "Bullet core:"
msgstr "Núcleo de bala:" msgstr "Núcleo de bala:"
#: lib/cannery_web/live/ammo_type_live/show.ex:11 #: lib/cannery_web/live/ammo_type_live/show.ex:131
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Bullet type:" msgid "Bullet type:"
msgstr "Tipo de bala:" msgstr "Tipo de bala:"
#: lib/cannery_web/live/ammo_type_live/show.ex:14 #: lib/cannery_web/live/ammo_type_live/show.ex:123
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Caliber:" msgid "Caliber:"
msgstr "Calibre:" msgstr "Calibre:"
#: lib/cannery_web/live/ammo_type_live/show.ex:13 #: lib/cannery_web/live/ammo_type_live/show.ex:121
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Cartridge:" msgid "Cartridge:"
msgstr "Cartucho:" msgstr "Cartucho:"
#: lib/cannery_web/live/ammo_type_live/show.ex:15 #: lib/cannery_web/live/ammo_type_live/show.ex:134
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Case material:" msgid "Case material:"
msgstr "Material de la camisa:" msgstr "Material de la camisa:"
#: lib/cannery_web/live/ammo_type_live/show.ex:27 #: lib/cannery_web/live/ammo_type_live/show.ex:155
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Corrosive:" msgid "Corrosive:"
msgstr "Corrosiva:" msgstr "Corrosiva:"
#: lib/cannery_web/live/ammo_type_live/show.ex:23 #: lib/cannery_web/live/ammo_type_live/show.ex:151
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Firing type:" msgid "Firing type:"
msgstr "Tipo de fuego:" msgstr "Tipo de fuego:"
#: lib/cannery_web/live/ammo_type_live/show.ex:20 #: lib/cannery_web/live/ammo_type_live/show.ex:130
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Grains:" msgid "Grains:"
msgstr "Granos:" msgstr "Granos:"
#: lib/cannery_web/live/ammo_type_live/show.ex:25 #: lib/cannery_web/live/ammo_type_live/show.ex:153
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Incendiary:" msgid "Incendiary:"
msgstr "Incendiarias:" msgstr "Incendiarias:"
#: lib/cannery_web/live/ammo_type_live/show.ex:16 #: lib/cannery_web/live/ammo_type_live/show.ex:133
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Jacket type:" msgid "Jacket type:"
msgstr "Tipo de camisa:" msgstr "Tipo de camisa:"
#: lib/cannery_web/live/ammo_type_live/show.ex:28 #: lib/cannery_web/live/ammo_type_live/show.ex:156
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Manufacturer:" msgid "Manufacturer:"
msgstr "Fabricante:" msgstr "Fabricante:"
#: lib/cannery_web/live/ammo_type_live/show.ex:17 #: lib/cannery_web/live/ammo_type_live/show.ex:149
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Muzzle velocity:" msgid "Muzzle velocity:"
msgstr "Velocidad de boca:" msgstr "Velocidad de boca:"
#: lib/cannery_web/live/ammo_type_live/show.ex:19 #: lib/cannery_web/live/ammo_type_live/show.ex:143
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Powder grains per charge:" msgid "Powder grains per charge:"
msgstr "Granos de polvora por carga:" msgstr "Granos de polvora por carga:"
#: lib/cannery_web/live/ammo_type_live/show.ex:18 #: lib/cannery_web/live/ammo_type_live/show.ex:141
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Powder type:" msgid "Powder type:"
msgstr "Tipo de polvora:" msgstr "Tipo de polvora:"
#: lib/cannery_web/live/ammo_type_live/show.ex:21 #: lib/cannery_web/live/ammo_type_live/show.ex:147
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Pressure:" msgid "Pressure:"
msgstr "Presión:" msgstr "Presión:"
#: lib/cannery_web/live/ammo_type_live/show.ex:22 #: lib/cannery_web/live/ammo_type_live/show.ex:150
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Primer type:" msgid "Primer type:"
msgstr "Tipo de espoleta:" msgstr "Tipo de espoleta:"
#: lib/cannery_web/live/ammo_type_live/show.ex:24 #: lib/cannery_web/live/ammo_type_live/show.ex:152
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Tracer:" msgid "Tracer:"
msgstr "Trazadora:" msgstr "Trazadora:"
#: lib/cannery_web/live/ammo_type_live/show.ex:29 #: lib/cannery_web/live/ammo_type_live/show.ex:157
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "UPC:" msgid "UPC:"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:120 #: lib/cannery_web/components/ammo_type_table_component.ex:102
#: lib/cannery_web/live/ammo_type_live/show.html.heex:131 #: lib/cannery_web/live/ammo_type_live/show.html.heex:148
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Average CPR" msgid "Average CPR"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.ex:28 #: lib/cannery_web/live/ammo_type_live/index.ex:28
#: lib/cannery_web/live/ammo_type_live/show.ex:104 #: lib/cannery_web/live/ammo_type_live/show.ex:82
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit %{ammo_type_name}" msgid "Edit %{ammo_type_name}"
msgstr "Editar %{ammo_type_name}" msgstr "Editar %{ammo_type_name}"
#: lib/cannery_web/components/ammo_group_table_component.ex:267 #: lib/cannery_web/components/ammo_group_table_component.ex:251
#: lib/cannery_web/components/core_components/ammo_group_card.html.heex:17 #: lib/cannery_web/components/core_components/ammo_group_card.html.heex:17
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Empty" msgid "Empty"
msgstr "Vacio" msgstr "Vacio"
#: lib/cannery_web/components/ammo_group_table_component.ex:84 #: lib/cannery_web/components/ammo_group_table_component.ex:81
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "CPR" msgid "CPR"
msgstr "" msgstr ""
@ -1014,7 +1014,7 @@ msgstr ""
msgid "CPR:" msgid "CPR:"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:91 #: lib/cannery_web/components/ammo_group_table_component.ex:88
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Original Count" msgid "Original Count"
msgstr "Cantidad Original" msgstr "Cantidad Original"
@ -1029,12 +1029,7 @@ msgstr "Cantidad Original:"
msgid "Home" msgid "Home"
msgstr "Menu principal" msgstr "Menu principal"
#: lib/cannery_web/live/container_live/show.html.heex:28 #: lib/cannery_web/components/ammo_group_table_component.ex:64
#, elixir-autogen, elixir-format
msgid "Total packs:"
msgstr "Paquetes totales:"
#: lib/cannery_web/components/ammo_group_table_component.ex:65
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Last used on" msgid "Last used on"
msgstr "Usada por última vez en" msgstr "Usada por última vez en"
@ -1044,12 +1039,12 @@ msgstr "Usada por última vez en"
msgid "Last used on:" msgid "Last used on:"
msgstr "Usada por última vez en:" msgstr "Usada por última vez en:"
#: lib/cannery_web/components/ammo_group_table_component.ex:198 #: lib/cannery_web/components/ammo_group_table_component.ex:182
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Never used" msgid "Never used"
msgstr "Nunca usada" msgstr "Nunca usada"
#: lib/cannery_web/components/ammo_group_table_component.ex:64 #: lib/cannery_web/components/ammo_group_table_component.ex:69
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:42 #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:42
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Purchased on" msgid "Purchased on"
@ -1067,17 +1062,17 @@ msgid "Edit ammo"
msgstr "Editar munición" msgstr "Editar munición"
#: lib/cannery_web/live/ammo_type_live/index.html.heex:8 #: lib/cannery_web/live/ammo_type_live/index.html.heex:8
#: lib/cannery_web/live/ammo_type_live/index.html.heex:47 #: lib/cannery_web/live/ammo_type_live/index.html.heex:71
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "No Ammo types" msgid "No Ammo types"
msgstr "Sin tipo de Munición" msgstr "Sin tipo de Munición"
#: lib/cannery_web/live/ammo_type_live/index.html.heex:34 #: lib/cannery_web/live/ammo_type_live/index.html.heex:58
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Search catalog" msgid "Search catalog"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:59 #: lib/cannery_web/live/ammo_group_live/index.html.heex:79
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Search ammo" msgid "Search ammo"
msgstr "" msgstr ""
@ -1087,12 +1082,12 @@ msgstr ""
msgid "Search containers" msgid "Search containers"
msgstr "" msgstr ""
#: lib/cannery_web/live/tag_live/index.html.heex:37 #: lib/cannery_web/live/tag_live/index.html.heex:36
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Search tags" msgid "Search tags"
msgstr "" msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:91 #: lib/cannery_web/live/range_live/index.html.heex:115
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Search shot records" msgid "Search shot records"
msgstr "" msgstr ""
@ -1201,27 +1196,27 @@ msgstr ""
msgid "Password" msgid "Password"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:130 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:261
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "+P" msgid "+P"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:71 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:75
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid ".223" msgid ".223"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:63 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:56
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "5.56x46mm NATO" msgid "5.56x46mm NATO"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:138 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:300
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Boxer" msgid "Boxer"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:146 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:308
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Centerfire" msgid "Centerfire"
msgstr "" msgstr ""
@ -1233,7 +1228,7 @@ msgid "Really great weather"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:60 #: lib/cannery_web/components/ammo_group_table_component.ex:60
#: lib/cannery_web/components/ammo_type_table_component.ex:121 #: lib/cannery_web/components/ammo_type_table_component.ex:100
#: lib/cannery_web/components/container_table_component.ex:67 #: lib/cannery_web/components/container_table_component.ex:67
#: lib/cannery_web/components/move_ammo_group_component.ex:70 #: lib/cannery_web/components/move_ammo_group_component.ex:70
#: lib/cannery_web/components/shot_group_table_component.ex:45 #: lib/cannery_web/components/shot_group_table_component.ex:45
@ -1252,7 +1247,7 @@ msgstr ""
msgid "Log out" msgid "Log out"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:100 #: lib/cannery_web/components/ammo_group_table_component.ex:92
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Current Count" msgid "Current Count"
msgstr "" msgstr ""
@ -1262,3 +1257,209 @@ msgstr ""
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Close modal" msgid "Close modal"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:56
#: lib/cannery_web/live/ammo_type_live/index.html.heex:35
#: lib/cannery_web/live/container_live/show.html.heex:103
#: lib/cannery_web/live/range_live/index.html.heex:92
#, elixir-autogen, elixir-format
msgid "All"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:313
#, elixir-autogen, elixir-format
msgid "Attributes"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:56
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:89
#, elixir-autogen, elixir-format, fuzzy
msgid "Brass height"
msgstr "Latón"
#: lib/cannery_web/live/ammo_type_live/show.ex:128
#, elixir-autogen, elixir-format
msgid "Brass height:"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:57
#: lib/cannery_web/components/ammo_type_table_component.ex:58
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:96
#, elixir-autogen, elixir-format
msgid "Chamber size"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:129
#, elixir-autogen, elixir-format
msgid "Chamber size:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:48
#, elixir-autogen, elixir-format
msgid "Dimensions"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:81
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:266
#, elixir-autogen, elixir-format
msgid "Dram equivalent"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:148
#, elixir-autogen, elixir-format
msgid "Dram equivalent:"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:51
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:67
#, elixir-autogen, elixir-format
msgid "Gauge"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:123
#, elixir-autogen, elixir-format
msgid "Gauge:"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:72
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:207
#, elixir-autogen, elixir-format
msgid "Load grains"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:139
#, elixir-autogen, elixir-format
msgid "Load grains:"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:29
#, elixir-autogen, elixir-format, fuzzy
msgid "No ammo"
msgstr "Sin Munición"
#: lib/cannery_web/live/ammo_type_live/show.html.heex:60
#, elixir-autogen, elixir-format
msgid "None specified"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:59
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:25
#: lib/cannery_web/live/ammo_type_live/index.html.heex:38
#: lib/cannery_web/live/ammo_type_live/show.html.heex:58
#: lib/cannery_web/live/container_live/show.html.heex:106
#: lib/cannery_web/live/range_live/index.html.heex:95
#, elixir-autogen, elixir-format
msgid "Pistol"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:233
#, elixir-autogen, elixir-format, fuzzy
msgid "Powder"
msgstr "Tipo de polvora"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:293
#, elixir-autogen, elixir-format, fuzzy
msgid "Primer"
msgstr "Tipo de espoleta"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:109
#, elixir-autogen, elixir-format
msgid "Projectile"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:57
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:25
#: lib/cannery_web/live/ammo_type_live/index.html.heex:36
#: lib/cannery_web/live/ammo_type_live/show.html.heex:56
#: lib/cannery_web/live/container_live/show.html.heex:104
#: lib/cannery_web/live/range_live/index.html.heex:93
#, elixir-autogen, elixir-format
msgid "Rifle"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:73
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:215
#, elixir-autogen, elixir-format
msgid "Shot charge weight"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:140
#, elixir-autogen, elixir-format
msgid "Shot charge weight:"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:70
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:191
#, elixir-autogen, elixir-format
msgid "Shot material"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:137
#, elixir-autogen, elixir-format
msgid "Shot material:"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:71
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:200
#, elixir-autogen, elixir-format, fuzzy
msgid "Shot size"
msgstr "Tiros disparados"
#: lib/cannery_web/live/ammo_type_live/show.ex:138
#, elixir-autogen, elixir-format, fuzzy
msgid "Shot size:"
msgstr "Tiros disparados"
#: lib/cannery_web/components/ammo_type_table_component.ex:69
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:183
#, elixir-autogen, elixir-format
msgid "Shot type"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:136
#, elixir-autogen, elixir-format
msgid "Shot type:"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:58
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:25
#: lib/cannery_web/live/ammo_type_live/index.html.heex:37
#: lib/cannery_web/live/ammo_type_live/show.html.heex:54
#: lib/cannery_web/live/container_live/show.html.heex:105
#: lib/cannery_web/live/range_live/index.html.heex:94
#, elixir-autogen, elixir-format
msgid "Shotgun"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:62
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:143
#, elixir-autogen, elixir-format
msgid "Slug core"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:187
#, elixir-autogen, elixir-format
msgid "Target, bird, buck, etc"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:127
#, elixir-autogen, elixir-format
msgid "Unfired length:"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:55
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:80
#, elixir-autogen, elixir-format
msgid "Unfired shell length"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:68
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:176
#, elixir-autogen, elixir-format
msgid "Wadding"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:135
#, elixir-autogen, elixir-format
msgid "Wadding:"
msgstr ""

View File

@ -69,6 +69,7 @@ msgstr "Correo o contraseña incorrecta"
msgid "Not found" msgid "Not found"
msgstr "No se encontró" msgstr "No se encontró"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:18
#: lib/cannery_web/templates/user_registration/new.html.heex:13 #: lib/cannery_web/templates/user_registration/new.html.heex:13
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:13 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:13
#: lib/cannery_web/templates/user_settings/edit.html.heex:22 #: lib/cannery_web/templates/user_settings/edit.html.heex:22
@ -170,7 +171,7 @@ msgstr "No se ha podido procesar el número de copias"
msgid "Invalid number of copies, must be between 1 and %{max}. Was %{multiplier}" msgid "Invalid number of copies, must be between 1 and %{max}. Was %{multiplier}"
msgstr "Número inválido de copias, debe ser entre 1 y %{max}. Fue %{multiplier" msgstr "Número inválido de copias, debe ser entre 1 y %{max}. Fue %{multiplier"
#: lib/cannery/ammo.ex:1043 #: lib/cannery/ammo.ex:1114
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Invalid multiplier" msgid "Invalid multiplier"
msgstr "Multiplicador inválido" msgstr "Multiplicador inválido"

View File

@ -32,7 +32,7 @@ msgid "%{name} created successfully"
msgstr "%{name} creado exitosamente" msgstr "%{name} creado exitosamente"
#: lib/cannery_web/live/ammo_type_live/index.ex:72 #: lib/cannery_web/live/ammo_type_live/index.ex:72
#: lib/cannery_web/live/ammo_type_live/show.ex:49 #: lib/cannery_web/live/ammo_type_live/show.ex:27
#: lib/cannery_web/live/tag_live/index.ex:65 #: lib/cannery_web/live/tag_live/index.ex:65
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "%{name} deleted succesfully" msgid "%{name} deleted succesfully"
@ -65,15 +65,15 @@ msgstr ""
msgid "Are you sure you want to delete %{email}? This action is permanent!" msgid "Are you sure you want to delete %{email}? This action is permanent!"
msgstr "Está seguro que desea eliminar %{email}? Esta acción es permanente!" msgstr "Está seguro que desea eliminar %{email}? Esta acción es permanente!"
#: lib/cannery_web/live/container_live/index.html.heex:100 #: lib/cannery_web/live/container_live/index.html.heex:99
#: lib/cannery_web/live/container_live/index.html.heex:156 #: lib/cannery_web/live/container_live/index.html.heex:157
#: lib/cannery_web/live/container_live/show.html.heex:52 #: lib/cannery_web/live/container_live/show.html.heex:45
#: lib/cannery_web/live/tag_live/index.html.heex:64 #: lib/cannery_web/live/tag_live/index.html.heex:63
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete %{name}?" msgid "Are you sure you want to delete %{name}?"
msgstr "Está seguro que desea eliminar %{name}?" msgstr "Está seguro que desea eliminar %{name}?"
#: lib/cannery_web/live/ammo_group_live/index.html.heex:169 #: lib/cannery_web/live/ammo_group_live/index.html.heex:189
#: lib/cannery_web/live/ammo_group_live/show.html.heex:74 #: lib/cannery_web/live/ammo_group_live/show.html.heex:74
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this ammo?" msgid "Are you sure you want to delete this ammo?"
@ -130,7 +130,7 @@ msgstr "Por favor chequea el correo para verificar tu cuenta"
#: lib/cannery_web/components/add_shot_group_component.html.heex:59 #: lib/cannery_web/components/add_shot_group_component.html.heex:59
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:85 #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:85
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:181 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:351
#: lib/cannery_web/live/container_live/form_component.html.heex:59 #: lib/cannery_web/live/container_live/form_component.html.heex:59
#: lib/cannery_web/live/invite_live/form_component.html.heex:37 #: lib/cannery_web/live/invite_live/form_component.html.heex:37
#: lib/cannery_web/live/range_live/form_component.html.heex:47 #: lib/cannery_web/live/range_live/form_component.html.heex:47
@ -176,7 +176,7 @@ msgid "Are you sure you want to unstage this ammo?"
msgstr "Está seguro que desea desmontar esta munición?" msgstr "Está seguro que desea desmontar esta munición?"
#: lib/cannery_web/live/ammo_group_live/show.ex:159 #: lib/cannery_web/live/ammo_group_live/show.ex:159
#: lib/cannery_web/live/range_live/index.html.heex:128 #: lib/cannery_web/live/range_live/index.html.heex:152
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this shot record?" msgid "Are you sure you want to delete this shot record?"
msgstr "¿Está segure que quiere borrar este récord de disparos?" msgstr "¿Está segure que quiere borrar este récord de disparos?"
@ -212,8 +212,8 @@ msgstr "Copiado al portapapeles"
msgid "%{name} removed successfully" msgid "%{name} removed successfully"
msgstr "%{name} eliminado exitosamente" msgstr "%{name} eliminado exitosamente"
#: lib/cannery_web/live/ammo_group_live/index.html.heex:18 #: lib/cannery_web/live/ammo_group_live/index.html.heex:10
#: lib/cannery_web/live/ammo_group_live/index.html.heex:28 #: lib/cannery_web/live/ammo_group_live/index.html.heex:20
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "You'll need to" msgid "You'll need to"
msgstr "Necesitará hacerlo" msgstr "Necesitará hacerlo"
@ -256,7 +256,7 @@ msgid_plural "Ammo added successfully"
msgstr[0] "Munición añadida exitosamente" msgstr[0] "Munición añadida exitosamente"
msgstr[1] "Municiones añadidas exitosamente" msgstr[1] "Municiones añadidas exitosamente"
#: lib/cannery_web/live/ammo_type_live/index.html.heex:97 #: lib/cannery_web/live/ammo_type_live/index.html.heex:122
#: lib/cannery_web/live/ammo_type_live/show.html.heex:29 #: lib/cannery_web/live/ammo_type_live/show.html.heex:29
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete %{name}? This will delete all %{name} type ammo as well!" msgid "Are you sure you want to delete %{name}? This will delete all %{name} type ammo as well!"

View File

@ -25,12 +25,12 @@ msgstr ""
# # effect: edit them in PO (.po) files instead. # # effect: edit them in PO (.po) files instead.
#: lib/cannery_web/live/ammo_group_live/index.ex:54 #: lib/cannery_web/live/ammo_group_live/index.ex:54
#: lib/cannery_web/live/ammo_group_live/index.ex:62 #: lib/cannery_web/live/ammo_group_live/index.ex:62
#: lib/cannery_web/live/ammo_group_live/index.html.heex:41 #: lib/cannery_web/live/ammo_group_live/index.html.heex:38
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Add Ammo" msgid "Add Ammo"
msgstr "ajouter munition" msgstr "ajouter munition"
#: lib/cannery_web/live/ammo_group_live/index.html.heex:37 #: lib/cannery_web/live/ammo_group_live/index.html.heex:34
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Add your first box!" msgid "Add your first box!"
msgstr "Ajoutez votre première caisse !" msgstr "Ajoutez votre première caisse !"
@ -135,7 +135,7 @@ msgstr "Réinitialisé le mot de passe"
#: lib/cannery_web/components/add_shot_group_component.html.heex:57 #: lib/cannery_web/components/add_shot_group_component.html.heex:57
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:84 #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:84
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:180 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:350
#: lib/cannery_web/live/container_live/form_component.html.heex:57 #: lib/cannery_web/live/container_live/form_component.html.heex:57
#: lib/cannery_web/live/invite_live/form_component.html.heex:35 #: lib/cannery_web/live/invite_live/form_component.html.heex:35
#: lib/cannery_web/live/range_live/form_component.html.heex:45 #: lib/cannery_web/live/range_live/form_component.html.heex:45
@ -149,7 +149,7 @@ msgstr "Sauvegarder"
msgid "Send instructions to reset password" msgid "Send instructions to reset password"
msgstr "Envoyer les instructions pour réinitialiser le mot de passe" msgstr "Envoyer les instructions pour réinitialiser le mot de passe"
#: lib/cannery_web/live/container_live/show.html.heex:75 #: lib/cannery_web/live/container_live/show.html.heex:68
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Why not add one?" msgid "Why not add one?"
msgstr "Pourquoi pas en ajouter un?" msgstr "Pourquoi pas en ajouter un?"
@ -169,7 +169,7 @@ msgstr "Munition préparée"
msgid "Why not get some ready to shoot?" msgid "Why not get some ready to shoot?"
msgstr "Pourquoi pas en préparer pour tirer?" msgstr "Pourquoi pas en préparer pour tirer?"
#: lib/cannery_web/live/ammo_group_live/index.html.heex:105 #: lib/cannery_web/live/ammo_group_live/index.html.heex:125
#: lib/cannery_web/live/ammo_group_live/show.html.heex:103 #: lib/cannery_web/live/ammo_group_live/show.html.heex:103
#: lib/cannery_web/live/range_live/index.html.heex:45 #: lib/cannery_web/live/range_live/index.html.heex:45
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -191,7 +191,7 @@ msgstr "Sélectionner"
msgid "Copy to clipboard" msgid "Copy to clipboard"
msgstr "Copier dans le presse-papier" msgstr "Copier dans le presse-papier"
#: lib/cannery_web/live/ammo_group_live/index.html.heex:22 #: lib/cannery_web/live/ammo_group_live/index.html.heex:14
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "add a container first" msgid "add a container first"
msgstr "ajouter un conteneur en premier" msgstr "ajouter un conteneur en premier"
@ -216,13 +216,13 @@ msgstr "Changer la langue"
msgid "View in Catalog" msgid "View in Catalog"
msgstr "Voir en catalogue" msgstr "Voir en catalogue"
#: lib/cannery_web/live/ammo_group_live/index.html.heex:32 #: lib/cannery_web/live/ammo_group_live/index.html.heex:24
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "add an ammo type first" msgid "add an ammo type first"
msgstr "Ajoutez d'abord un type de munitions" msgstr "Ajoutez d'abord un type de munitions"
#: lib/cannery_web/components/move_ammo_group_component.ex:80 #: lib/cannery_web/components/move_ammo_group_component.ex:80
#: lib/cannery_web/live/ammo_group_live/index.html.heex:122 #: lib/cannery_web/live/ammo_group_live/index.html.heex:142
#: lib/cannery_web/live/ammo_group_live/show.html.heex:96 #: lib/cannery_web/live/ammo_group_live/show.html.heex:96
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Move ammo" msgid "Move ammo"
@ -250,13 +250,13 @@ msgstr ""
msgid "Export Data as JSON" msgid "Export Data as JSON"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:85 #: lib/cannery_web/live/ammo_type_live/index.html.heex:110
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Clone %{ammo_type_name}" msgid "Clone %{ammo_type_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:88 #: lib/cannery_web/live/container_live/index.html.heex:87
#: lib/cannery_web/live/container_live/index.html.heex:144 #: lib/cannery_web/live/container_live/index.html.heex:145
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Clone %{container_name}" msgid "Clone %{container_name}"
msgstr "" msgstr ""
@ -266,20 +266,20 @@ msgstr ""
msgid "Copy invite link for %{invite_name}" msgid "Copy invite link for %{invite_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:104 #: lib/cannery_web/live/ammo_type_live/index.html.heex:129
#: lib/cannery_web/live/ammo_type_live/show.html.heex:36 #: lib/cannery_web/live/ammo_type_live/show.html.heex:36
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Delete %{ammo_type_name}" msgid "Delete %{ammo_type_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:103 #: lib/cannery_web/live/container_live/index.html.heex:104
#: lib/cannery_web/live/container_live/index.html.heex:159 #: lib/cannery_web/live/container_live/index.html.heex:162
#: lib/cannery_web/live/container_live/show.html.heex:55 #: lib/cannery_web/live/container_live/show.html.heex:48
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Delete %{container_name}" msgid "Delete %{container_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/tag_live/index.html.heex:66 #: lib/cannery_web/live/tag_live/index.html.heex:65
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Delete %{tag_name}" msgid "Delete %{tag_name}"
msgstr "" msgstr ""
@ -290,30 +290,30 @@ msgid "Delete invite for %{invite_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:161 #: lib/cannery_web/live/ammo_group_live/show.ex:161
#: lib/cannery_web/live/range_live/index.html.heex:131 #: lib/cannery_web/live/range_live/index.html.heex:155
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Delete shot record of %{shot_group_count} shots" msgid "Delete shot record of %{shot_group_count} shots"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:75 #: lib/cannery_web/live/ammo_type_live/index.html.heex:100
#: lib/cannery_web/live/ammo_type_live/show.html.heex:19 #: lib/cannery_web/live/ammo_type_live/show.html.heex:19
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit %{ammo_type_name}" msgid "Edit %{ammo_type_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:78 #: lib/cannery_web/live/container_live/index.html.heex:77
#: lib/cannery_web/live/container_live/index.html.heex:134 #: lib/cannery_web/live/container_live/index.html.heex:135
#: lib/cannery_web/live/container_live/show.html.heex:42 #: lib/cannery_web/live/container_live/show.html.heex:35
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit %{container_name}" msgid "Edit %{container_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/tag_live/index.html.heex:53 #: lib/cannery_web/live/tag_live/index.html.heex:52
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit %{tag_name}" msgid "Edit %{tag_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:144 #: lib/cannery_web/live/ammo_group_live/index.html.heex:164
#: lib/cannery_web/live/ammo_group_live/show.html.heex:62 #: lib/cannery_web/live/ammo_group_live/show.html.heex:62
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit ammo group of %{ammo_group_count} bullets" msgid "Edit ammo group of %{ammo_group_count} bullets"
@ -329,45 +329,45 @@ msgstr ""
msgid "Edit shot group of %{shot_group_count} shots" msgid "Edit shot group of %{shot_group_count} shots"
msgstr "" msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:114 #: lib/cannery_web/live/range_live/index.html.heex:138
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit shot record of %{shot_group_count} shots" msgid "Edit shot record of %{shot_group_count} shots"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:98 #: lib/cannery_web/live/ammo_group_live/index.html.heex:118
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Stage" msgid "Stage"
msgstr "Munition préparée" msgstr "Munition préparée"
#: lib/cannery_web/live/container_live/index.html.heex:66 #: lib/cannery_web/live/container_live/index.html.heex:65
#: lib/cannery_web/live/container_live/index.html.heex:123 #: lib/cannery_web/live/container_live/index.html.heex:124
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Tag %{container_name}" msgid "Tag %{container_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:97 #: lib/cannery_web/live/ammo_group_live/index.html.heex:117
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Unstage" msgid "Unstage"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:65 #: lib/cannery_web/live/ammo_type_live/index.html.heex:90
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "View %{ammo_type_name}" msgid "View %{ammo_type_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:156 #: lib/cannery_web/live/ammo_group_live/index.html.heex:176
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Clone ammo group of %{ammo_group_count} bullets" msgid "Clone ammo group of %{ammo_group_count} bullets"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:171 #: lib/cannery_web/live/ammo_group_live/index.html.heex:191
#: lib/cannery_web/live/ammo_group_live/show.html.heex:76 #: lib/cannery_web/live/ammo_group_live/show.html.heex:76
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Delete ammo group of %{ammo_group_count} bullets" msgid "Delete ammo group of %{ammo_group_count} bullets"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:132 #: lib/cannery_web/live/ammo_group_live/index.html.heex:152
#: lib/cannery_web/live/ammo_type_live/show.html.heex:189 #: lib/cannery_web/live/ammo_type_live/show.html.heex:206
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "View ammo group of %{ammo_group_count} bullets" msgid "View ammo group of %{ammo_group_count} bullets"
msgstr "" msgstr ""

View File

@ -38,7 +38,7 @@ msgstr "Administrateur·ices:"
msgid "Ammo" msgid "Ammo"
msgstr "Munition" msgstr "Munition"
#: lib/cannery_web/components/ammo_group_table_component.ex:108 #: lib/cannery_web/components/ammo_group_table_component.ex:96
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:22 #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:22
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Ammo type" msgid "Ammo type"
@ -49,48 +49,48 @@ msgstr "Type de munition"
msgid "Background color" msgid "Background color"
msgstr "Couleur de fond" msgstr "Couleur de fond"
#: lib/cannery_web/components/ammo_type_table_component.ex:65 #: lib/cannery_web/components/ammo_type_table_component.ex:87
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:158 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:324
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Blank" msgid "Blank"
msgstr "Vide" msgstr "Vide"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:79 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:171
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Brass" msgid "Brass"
msgstr "Cuivre" msgstr "Cuivre"
#: lib/cannery_web/components/ammo_type_table_component.ex:47 #: lib/cannery_web/components/ammo_type_table_component.ex:62
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:51 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:144
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Bullet core" msgid "Bullet core"
msgstr "Noyau de balle" msgstr "Noyau de balle"
#: lib/cannery_web/components/ammo_type_table_component.ex:46 #: lib/cannery_web/components/ammo_type_table_component.ex:60
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:43 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:121
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Bullet type" msgid "Bullet type"
msgstr "Type de balle" msgstr "Type de balle"
#: lib/cannery_web/components/ammo_type_table_component.ex:49 #: lib/cannery_web/components/ammo_type_table_component.ex:51
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:67 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:68
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Caliber" msgid "Caliber"
msgstr "Calibre" msgstr "Calibre"
#: lib/cannery_web/components/ammo_type_table_component.ex:48 #: lib/cannery_web/components/ammo_type_table_component.ex:49
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:59 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:52
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Cartridge" msgid "Cartridge"
msgstr "Cartouche" msgstr "Cartouche"
#: lib/cannery_web/components/ammo_type_table_component.ex:50 #: lib/cannery_web/components/ammo_type_table_component.ex:67
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:75 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:167
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Case material" msgid "Case material"
msgstr "Matériau de la caisse" msgstr "Matériau de la caisse"
#: lib/cannery_web/components/ammo_group_table_component.ex:72 #: lib/cannery_web/components/ammo_group_table_component.ex:74
#: lib/cannery_web/components/move_ammo_group_component.ex:67 #: lib/cannery_web/components/move_ammo_group_component.ex:67
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:59 #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:59
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -105,13 +105,13 @@ msgstr "Conteneur"
msgid "Containers" msgid "Containers"
msgstr "Conteneurs" msgstr "Conteneurs"
#: lib/cannery_web/components/ammo_type_table_component.ex:66 #: lib/cannery_web/components/ammo_type_table_component.ex:88
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:162 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:328
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Corrosive" msgid "Corrosive"
msgstr "Corrosive" msgstr "Corrosive"
#: lib/cannery_web/components/ammo_group_table_component.ex:100 #: lib/cannery_web/components/ammo_group_table_component.ex:92
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:28 #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:28
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Count" msgid "Count"
@ -124,7 +124,7 @@ msgid "Count:"
msgstr "Quantité:" msgstr "Quantité:"
#: lib/cannery_web/components/container_table_component.ex:46 #: lib/cannery_web/components/container_table_component.ex:46
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:28 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:38
#: lib/cannery_web/live/container_live/form_component.html.heex:29 #: lib/cannery_web/live/container_live/form_component.html.heex:29
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Description" msgid "Description"
@ -151,24 +151,19 @@ msgstr "Modifier linvitation"
msgid "Edit Tag" msgid "Edit Tag"
msgstr "Modifier le tag" msgstr "Modifier le tag"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:41 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:135
#, elixir-autogen, elixir-format
msgid "Example bullet type abbreviations"
msgstr "Exemple dabréviations de type de balle"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:47
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "FMJ" msgid "FMJ"
msgstr "FMJ" msgstr "FMJ"
#: lib/cannery_web/components/ammo_type_table_component.ex:59 #: lib/cannery_web/components/ammo_type_table_component.ex:59
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:118 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:112
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Grains" msgid "Grains"
msgstr "Graines" msgstr "Graines"
#: lib/cannery_web/components/ammo_type_table_component.ex:64 #: lib/cannery_web/components/ammo_type_table_component.ex:86
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:154 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:320
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Incendiary" msgid "Incendiary"
msgstr "Incendiaire" msgstr "Incendiaire"
@ -218,8 +213,9 @@ msgstr "Localisation:"
msgid "Magazine, Clip, Ammo Box, etc" msgid "Magazine, Clip, Ammo Box, etc"
msgstr "Chargeur, lame-chargeur, boite de munition, etc." msgstr "Chargeur, lame-chargeur, boite de munition, etc."
#: lib/cannery_web/components/ammo_type_table_component.ex:67 #: lib/cannery_web/components/ammo_type_table_component.ex:89
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:166 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:333
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:336
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Manufacturer" msgid "Manufacturer"
msgstr "Fabricant" msgstr "Fabricant"
@ -234,9 +230,9 @@ msgstr "Boite de munition avec le sticker de fille danimation"
msgid "My cool ammo can" msgid "My cool ammo can"
msgstr "Ma superbe boite de munition" msgstr "Ma superbe boite de munition"
#: lib/cannery_web/components/ammo_type_table_component.ex:45 #: lib/cannery_web/components/ammo_type_table_component.ex:153
#: lib/cannery_web/components/container_table_component.ex:45 #: lib/cannery_web/components/container_table_component.ex:45
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:21 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:31
#: lib/cannery_web/live/container_live/form_component.html.heex:21 #: lib/cannery_web/live/container_live/form_component.html.heex:21
#: lib/cannery_web/live/invite_live/form_component.html.heex:21 #: lib/cannery_web/live/invite_live/form_component.html.heex:21
#: lib/cannery_web/live/tag_live/form_component.html.heex:21 #: lib/cannery_web/live/tag_live/form_component.html.heex:21
@ -266,19 +262,18 @@ msgstr "Nouvelle invitation"
msgid "New Tag" msgid "New Tag"
msgstr "Nouveau tag" msgstr "Nouveau tag"
#: lib/cannery_web/live/ammo_group_live/index.html.heex:10 #: lib/cannery_web/live/ammo_group_live/index.html.heex:92
#: lib/cannery_web/live/ammo_group_live/index.html.heex:72
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No Ammo" msgid "No Ammo"
msgstr "Aucune munition" msgstr "Aucune munition"
#: lib/cannery_web/live/ammo_type_live/show.html.heex:163 #: lib/cannery_web/live/ammo_type_live/show.html.heex:180
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No ammo for this type" msgid "No ammo for this type"
msgstr "Aucune munition pour ce type" msgstr "Aucune munition pour ce type"
#: lib/cannery_web/live/container_live/index.html.heex:8 #: lib/cannery_web/live/container_live/index.html.heex:8
#: lib/cannery_web/live/container_live/index.html.heex:48 #: lib/cannery_web/live/container_live/index.html.heex:47
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No containers" msgid "No containers"
msgstr "Aucun conteneur" msgstr "Aucun conteneur"
@ -290,7 +285,7 @@ msgstr "Aucune invitation"
#: lib/cannery_web/live/container_live/edit_tags_component.html.heex:29 #: lib/cannery_web/live/container_live/edit_tags_component.html.heex:29
#: lib/cannery_web/live/tag_live/index.html.heex:10 #: lib/cannery_web/live/tag_live/index.html.heex:10
#: lib/cannery_web/live/tag_live/index.html.heex:44 #: lib/cannery_web/live/tag_live/index.html.heex:43
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No tags" msgid "No tags"
msgstr "Aucun tag" msgstr "Aucun tag"
@ -315,13 +310,13 @@ msgstr "Notes:"
msgid "On the bookshelf" msgid "On the bookshelf"
msgstr "Sur létagère" msgstr "Sur létagère"
#: lib/cannery_web/components/ammo_type_table_component.ex:60 #: lib/cannery_web/components/ammo_type_table_component.ex:80
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:126 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:257
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Pressure" msgid "Pressure"
msgstr "Pression" msgstr "Pression"
#: lib/cannery_web/components/ammo_group_table_component.ex:83 #: lib/cannery_web/components/ammo_group_table_component.ex:82
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:35 #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:35
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Price paid" msgid "Price paid"
@ -332,8 +327,8 @@ msgstr "Prix payé"
msgid "Price paid:" msgid "Price paid:"
msgstr "Prix payé:" msgstr "Prix payé:"
#: lib/cannery_web/components/ammo_type_table_component.ex:61 #: lib/cannery_web/components/ammo_type_table_component.ex:83
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:134 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:296
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Primer type" msgid "Primer type"
msgstr "Type damorce" msgstr "Type damorce"
@ -366,7 +361,7 @@ msgstr "Paramètres"
msgid "Simple:" msgid "Simple:"
msgstr "Simple:" msgstr "Simple:"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:55 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:151
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Steel" msgid "Steel"
msgstr "Acier" msgstr "Acier"
@ -402,15 +397,22 @@ msgstr "Couleur du texte"
msgid "The self-hosted firearm tracker website" msgid "The self-hosted firearm tracker website"
msgstr "Le site web de suivi darme à feux auto-hébergé" msgstr "Le site web de suivi darme à feux auto-hébergé"
#: lib/cannery_web/components/ammo_type_table_component.ex:63 #: lib/cannery_web/components/ammo_type_table_component.ex:85
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:150 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:316
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Tracer" msgid "Tracer"
msgstr "Traceuse" msgstr "Traceuse"
#: lib/cannery_web/components/ammo_type_table_component.ex:150
#: lib/cannery_web/components/container_table_component.ex:48 #: lib/cannery_web/components/container_table_component.ex:48
#: lib/cannery_web/components/move_ammo_group_component.ex:68 #: lib/cannery_web/components/move_ammo_group_component.ex:68
#: lib/cannery_web/live/ammo_group_live/index.html.heex:50
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:21
#: lib/cannery_web/live/ammo_type_live/index.html.heex:29
#: lib/cannery_web/live/ammo_type_live/show.html.heex:48
#: lib/cannery_web/live/container_live/form_component.html.heex:39 #: lib/cannery_web/live/container_live/form_component.html.heex:39
#: lib/cannery_web/live/container_live/show.html.heex:97
#: lib/cannery_web/live/range_live/index.html.heex:86
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Type" msgid "Type"
msgstr "Type" msgstr "Type"
@ -436,12 +438,12 @@ msgstr "Utilisations restantes"
msgid "Your data stays with you, period" msgid "Your data stays with you, period"
msgstr "Vos données restent avec vous, point final" msgstr "Vos données restent avec vous, point final"
#: lib/cannery_web/live/container_live/show.html.heex:67 #: lib/cannery_web/live/container_live/show.html.heex:60
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No tags for this container" msgid "No tags for this container"
msgstr "Aucun tag pour ce conteneur" msgstr "Aucun tag pour ce conteneur"
#: lib/cannery_web/components/ammo_group_table_component.ex:79 #: lib/cannery_web/components/ammo_group_table_component.ex:78
#: lib/cannery_web/components/core_components/topbar.html.heex:66 #: lib/cannery_web/components/core_components/topbar.html.heex:66
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Range" msgid "Range"
@ -488,7 +490,7 @@ msgid "New Shot Records"
msgstr "Nouveaux enregistrements de tir" msgstr "Nouveaux enregistrements de tir"
#: lib/cannery_web/live/range_live/index.html.heex:55 #: lib/cannery_web/live/range_live/index.html.heex:55
#: lib/cannery_web/live/range_live/index.html.heex:98 #: lib/cannery_web/live/range_live/index.html.heex:122
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No shots recorded" msgid "No shots recorded"
msgstr "Aucun tir enregistré" msgstr "Aucun tir enregistré"
@ -527,49 +529,48 @@ msgstr "Aucun autre conteneur"
msgid "Shot log" msgid "Shot log"
msgstr "Évènements de tir" msgstr "Évènements de tir"
#: lib/cannery_web/components/ammo_group_table_component.ex:180 #: lib/cannery_web/components/ammo_group_table_component.ex:164
#: lib/cannery_web/components/ammo_group_table_component.ex:263 #: lib/cannery_web/components/ammo_group_table_component.ex:247
#: lib/cannery_web/components/ammo_type_table_component.ex:235 #: lib/cannery_web/components/ammo_type_table_component.ex:261
#: lib/cannery_web/components/core_components/ammo_group_card.html.heex:45 #: lib/cannery_web/components/core_components/ammo_group_card.html.heex:45
#: lib/cannery_web/components/core_components/ammo_group_card.html.heex:50 #: lib/cannery_web/components/core_components/ammo_group_card.html.heex:50
#: lib/cannery_web/live/ammo_group_live/show.html.heex:37 #: lib/cannery_web/live/ammo_group_live/show.html.heex:37
#: lib/cannery_web/live/ammo_group_live/show.html.heex:42 #: lib/cannery_web/live/ammo_group_live/show.html.heex:42
#: lib/cannery_web/live/ammo_type_live/show.html.heex:135 #: lib/cannery_web/live/ammo_type_live/show.html.heex:152
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "$%{amount}" msgid "$%{amount}"
msgstr "%{amount}$" msgstr "%{amount}$"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:87 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:160
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Bimetal" msgid "Bimetal"
msgstr "Bi-métal" msgstr "Bi-métal"
#: lib/cannery_web/components/ammo_type_table_component.ex:51 #: lib/cannery_web/components/ammo_type_table_component.ex:66
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:83 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:156
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Jacket type" msgid "Jacket type"
msgstr "Type de douille" msgstr "Type de douille"
#: lib/cannery_web/components/ammo_type_table_component.ex:52 #: lib/cannery_web/components/ammo_type_table_component.ex:82
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:91 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:279
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Muzzle velocity" msgid "Muzzle velocity"
msgstr "Vélocité du canon" msgstr "Vélocité du canon"
#: lib/cannery_web/components/ammo_type_table_component.ex:55 #: lib/cannery_web/components/ammo_type_table_component.ex:76
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:108 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:244
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Powder grains per charge" msgid "Powder grains per charge"
msgstr "Graines de poudre par charge" msgstr "Graines de poudre par charge"
#: lib/cannery_web/components/ammo_type_table_component.ex:53 #: lib/cannery_web/components/ammo_type_table_component.ex:74
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:101 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:236
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Powder type" msgid "Powder type"
msgstr "Type de poudre" msgstr "Type de poudre"
#: lib/cannery_web/components/ammo_type_table_component.ex:68 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:343
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:173
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "UPC" msgid "UPC"
msgstr "UPC" msgstr "UPC"
@ -592,8 +593,8 @@ msgstr "Mot de passe actuel"
msgid "New password" msgid "New password"
msgstr "Nouveau mot de passe" msgstr "Nouveau mot de passe"
#: lib/cannery_web/components/ammo_type_table_component.ex:62 #: lib/cannery_web/components/ammo_type_table_component.ex:84
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:142 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:304
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Firing type" msgid "Firing type"
msgstr "Type dallumage" msgstr "Type dallumage"
@ -604,33 +605,33 @@ msgid "Reconnecting..."
msgstr "Reconnexion en cours…" msgstr "Reconnexion en cours…"
#: lib/cannery_web/live/container_live/index.ex:28 #: lib/cannery_web/live/container_live/index.ex:28
#: lib/cannery_web/live/container_live/show.ex:108 #: lib/cannery_web/live/container_live/show.ex:120
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit %{name}" msgid "Edit %{name}"
msgstr "Éditer %{name}" msgstr "Éditer %{name}"
#: lib/cannery_web/live/container_live/index.ex:63 #: lib/cannery_web/live/container_live/index.ex:63
#: lib/cannery_web/live/container_live/show.ex:109 #: lib/cannery_web/live/container_live/show.ex:121
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit %{name} tags" msgid "Edit %{name} tags"
msgstr "Éditer les tags de %{name}" msgstr "Éditer les tags de %{name}"
#: lib/cannery_web/components/core_components/container_card.html.heex:37 #: lib/cannery_web/components/core_components/container_card.html.heex:37
#: lib/cannery_web/live/ammo_type_live/show.html.heex:70 #: lib/cannery_web/live/ammo_type_live/show.html.heex:87
#: lib/cannery_web/live/container_live/show.html.heex:33 #: lib/cannery_web/live/container_live/show.html.heex:27
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Rounds:" msgid "Rounds:"
msgstr "Cartouches:" msgstr "Cartouches:"
#: lib/cannery_web/components/ammo_group_table_component.ex:177 #: lib/cannery_web/components/ammo_group_table_component.ex:161
#: lib/cannery_web/components/ammo_group_table_component.ex:259 #: lib/cannery_web/components/ammo_group_table_component.ex:243
#: lib/cannery_web/components/ammo_type_table_component.ex:234 #: lib/cannery_web/components/ammo_type_table_component.ex:260
#: lib/cannery_web/live/ammo_type_live/show.html.heex:139 #: lib/cannery_web/live/ammo_type_live/show.html.heex:156
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No cost information" msgid "No cost information"
msgstr "Aucune information de prix" msgstr "Aucune information de prix"
#: lib/cannery_web/components/ammo_group_table_component.ex:92 #: lib/cannery_web/components/ammo_group_table_component.ex:84
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "% left" msgid "% left"
msgstr "%restante" msgstr "%restante"
@ -696,7 +697,7 @@ msgstr "Enregistrer des tirs"
msgid "Copies" msgid "Copies"
msgstr "Exemplaires" msgstr "Exemplaires"
#: lib/cannery_web/live/ammo_type_live/show.html.heex:122 #: lib/cannery_web/live/ammo_type_live/show.html.heex:139
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Added on:" msgid "Added on:"
msgstr "Ajouté le:" msgstr "Ajouté le:"
@ -760,7 +761,7 @@ msgstr "Éditer le type de munition"
msgid "Move Ammo" msgid "Move Ammo"
msgstr "Déplacer munition" msgstr "Déplacer munition"
#: lib/cannery_web/live/container_live/show.html.heex:112 #: lib/cannery_web/live/container_live/show.html.heex:123
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "No ammo in this container" msgid "No ammo in this container"
msgstr "Aucun groupe de munition pour ce conteneur" msgstr "Aucun groupe de munition pour ce conteneur"
@ -776,8 +777,8 @@ msgid "This ammo is not in a container"
msgstr "Ce groupe de munition nest pas dans un conteneur" msgstr "Ce groupe de munition nest pas dans un conteneur"
#: lib/cannery_web/components/core_components/container_card.html.heex:32 #: lib/cannery_web/components/core_components/container_card.html.heex:32
#: lib/cannery_web/live/ammo_type_live/show.html.heex:96 #: lib/cannery_web/live/ammo_type_live/show.html.heex:113
#: lib/cannery_web/live/container_live/show.html.heex:23 #: lib/cannery_web/live/container_live/show.html.heex:22
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Packs:" msgid "Packs:"
msgstr "Packages:" msgstr "Packages:"
@ -804,80 +805,79 @@ msgstr ""
msgid "Container:" msgid "Container:"
msgstr "Conteneur" msgstr "Conteneur"
#: lib/cannery_web/live/ammo_group_live/index.html.heex:65 #: lib/cannery_web/live/ammo_group_live/index.html.heex:85
#: lib/cannery_web/live/ammo_type_live/index.html.heex:40 #: lib/cannery_web/live/ammo_type_live/index.html.heex:64
#: lib/cannery_web/live/ammo_type_live/show.html.heex:149 #: lib/cannery_web/live/ammo_type_live/show.html.heex:166
#: lib/cannery_web/live/container_live/show.html.heex:98
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Show used" msgid "Show used"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:218 #: lib/cannery_web/components/ammo_group_table_component.ex:202
#: lib/cannery_web/live/ammo_group_live/show.html.heex:19 #: lib/cannery_web/live/ammo_group_live/show.html.heex:19
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "%{percentage}%" msgid "%{percentage}%"
msgstr "" msgstr ""
#: lib/cannery_web/live/range_live/index.ex:135 #: lib/cannery_web/live/range_live/index.ex:153
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Rounds shot: %{count}" msgid "Rounds shot: %{count}"
msgstr "Cartouches tirées" msgstr "Cartouches tirées"
#: lib/cannery_web/components/ammo_type_table_component.ex:100 #: lib/cannery_web/components/ammo_type_table_component.ex:123
#: lib/cannery_web/components/container_table_component.ex:64 #: lib/cannery_web/components/container_table_component.ex:64
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Packs" msgid "Packs"
msgstr "Packages:" msgstr "Packages:"
#: lib/cannery_web/components/ammo_type_table_component.ex:80 #: lib/cannery_web/components/ammo_type_table_component.ex:144
#: lib/cannery_web/components/container_table_component.ex:65 #: lib/cannery_web/components/container_table_component.ex:65
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Rounds" msgid "Rounds"
msgstr "Cartouches:" msgstr "Cartouches:"
#: lib/cannery_web/live/ammo_type_live/show.html.heex:155 #: lib/cannery_web/live/ammo_type_live/show.html.heex:172
#: lib/cannery_web/live/container_live/index.html.heex:40 #: lib/cannery_web/live/container_live/index.html.heex:40
#: lib/cannery_web/live/container_live/show.html.heex:104 #: lib/cannery_web/live/container_live/show.html.heex:115
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "View as table" msgid "View as table"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:110 #: lib/cannery_web/components/ammo_type_table_component.ex:108
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Total ever packs" msgid "Total ever packs"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:113 #: lib/cannery_web/live/ammo_type_live/show.html.heex:130
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Total ever packs:" msgid "Total ever packs:"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:91 #: lib/cannery_web/components/ammo_type_table_component.ex:129
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Total ever rounds" msgid "Total ever rounds"
msgstr "Quantité de cartouches" msgstr "Quantité de cartouches"
#: lib/cannery_web/live/ammo_type_live/show.html.heex:87 #: lib/cannery_web/live/ammo_type_live/show.html.heex:104
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Total ever rounds:" msgid "Total ever rounds:"
msgstr "Nombre totale de cartouches tirées:" msgstr "Nombre totale de cartouches tirées:"
#: lib/cannery_web/components/ammo_type_table_component.ex:105 #: lib/cannery_web/components/ammo_type_table_component.ex:116
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Used packs" msgid "Used packs"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:105 #: lib/cannery_web/live/ammo_type_live/show.html.heex:122
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Used packs:" msgid "Used packs:"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:86 #: lib/cannery_web/components/ammo_type_table_component.ex:137
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Used rounds" msgid "Used rounds"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:79 #: lib/cannery_web/live/ammo_type_live/show.html.heex:96
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Used rounds:" msgid "Used rounds:"
msgstr "" msgstr ""
@ -892,120 +892,120 @@ msgstr ""
msgid "Rounds shot chart" msgid "Rounds shot chart"
msgstr "Cartouches tirées" msgstr "Cartouches tirées"
#: lib/cannery_web/live/ammo_type_live/show.ex:26 #: lib/cannery_web/live/ammo_type_live/show.ex:154
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Blank:" msgid "Blank:"
msgstr "Vide" msgstr "Vide"
#: lib/cannery_web/live/ammo_type_live/show.ex:12 #: lib/cannery_web/live/ammo_type_live/show.ex:132
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Bullet core:" msgid "Bullet core:"
msgstr "Noyau de balle" msgstr "Noyau de balle"
#: lib/cannery_web/live/ammo_type_live/show.ex:11 #: lib/cannery_web/live/ammo_type_live/show.ex:131
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Bullet type:" msgid "Bullet type:"
msgstr "Type de balle" msgstr "Type de balle"
#: lib/cannery_web/live/ammo_type_live/show.ex:14 #: lib/cannery_web/live/ammo_type_live/show.ex:123
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Caliber:" msgid "Caliber:"
msgstr "Calibre" msgstr "Calibre"
#: lib/cannery_web/live/ammo_type_live/show.ex:13 #: lib/cannery_web/live/ammo_type_live/show.ex:121
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Cartridge:" msgid "Cartridge:"
msgstr "Cartouche" msgstr "Cartouche"
#: lib/cannery_web/live/ammo_type_live/show.ex:15 #: lib/cannery_web/live/ammo_type_live/show.ex:134
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Case material:" msgid "Case material:"
msgstr "Matériau de la caisse" msgstr "Matériau de la caisse"
#: lib/cannery_web/live/ammo_type_live/show.ex:27 #: lib/cannery_web/live/ammo_type_live/show.ex:155
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Corrosive:" msgid "Corrosive:"
msgstr "Corrosive" msgstr "Corrosive"
#: lib/cannery_web/live/ammo_type_live/show.ex:23 #: lib/cannery_web/live/ammo_type_live/show.ex:151
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Firing type:" msgid "Firing type:"
msgstr "Type dallumage" msgstr "Type dallumage"
#: lib/cannery_web/live/ammo_type_live/show.ex:20 #: lib/cannery_web/live/ammo_type_live/show.ex:130
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Grains:" msgid "Grains:"
msgstr "Graines" msgstr "Graines"
#: lib/cannery_web/live/ammo_type_live/show.ex:25 #: lib/cannery_web/live/ammo_type_live/show.ex:153
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Incendiary:" msgid "Incendiary:"
msgstr "Incendiaire" msgstr "Incendiaire"
#: lib/cannery_web/live/ammo_type_live/show.ex:16 #: lib/cannery_web/live/ammo_type_live/show.ex:133
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Jacket type:" msgid "Jacket type:"
msgstr "Type de douille" msgstr "Type de douille"
#: lib/cannery_web/live/ammo_type_live/show.ex:28 #: lib/cannery_web/live/ammo_type_live/show.ex:156
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Manufacturer:" msgid "Manufacturer:"
msgstr "Fabricant" msgstr "Fabricant"
#: lib/cannery_web/live/ammo_type_live/show.ex:17 #: lib/cannery_web/live/ammo_type_live/show.ex:149
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Muzzle velocity:" msgid "Muzzle velocity:"
msgstr "Vélocité du canon" msgstr "Vélocité du canon"
#: lib/cannery_web/live/ammo_type_live/show.ex:19 #: lib/cannery_web/live/ammo_type_live/show.ex:143
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Powder grains per charge:" msgid "Powder grains per charge:"
msgstr "Graines de poudre par charge" msgstr "Graines de poudre par charge"
#: lib/cannery_web/live/ammo_type_live/show.ex:18 #: lib/cannery_web/live/ammo_type_live/show.ex:141
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Powder type:" msgid "Powder type:"
msgstr "Type de poudre" msgstr "Type de poudre"
#: lib/cannery_web/live/ammo_type_live/show.ex:21 #: lib/cannery_web/live/ammo_type_live/show.ex:147
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Pressure:" msgid "Pressure:"
msgstr "Pression" msgstr "Pression"
#: lib/cannery_web/live/ammo_type_live/show.ex:22 #: lib/cannery_web/live/ammo_type_live/show.ex:150
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Primer type:" msgid "Primer type:"
msgstr "Type damorce" msgstr "Type damorce"
#: lib/cannery_web/live/ammo_type_live/show.ex:24 #: lib/cannery_web/live/ammo_type_live/show.ex:152
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Tracer:" msgid "Tracer:"
msgstr "Traceuse" msgstr "Traceuse"
#: lib/cannery_web/live/ammo_type_live/show.ex:29 #: lib/cannery_web/live/ammo_type_live/show.ex:157
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "UPC:" msgid "UPC:"
msgstr "UPC" msgstr "UPC"
#: lib/cannery_web/components/ammo_type_table_component.ex:120 #: lib/cannery_web/components/ammo_type_table_component.ex:102
#: lib/cannery_web/live/ammo_type_live/show.html.heex:131 #: lib/cannery_web/live/ammo_type_live/show.html.heex:148
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Average CPR" msgid "Average CPR"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.ex:28 #: lib/cannery_web/live/ammo_type_live/index.ex:28
#: lib/cannery_web/live/ammo_type_live/show.ex:104 #: lib/cannery_web/live/ammo_type_live/show.ex:82
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Edit %{ammo_type_name}" msgid "Edit %{ammo_type_name}"
msgstr "Éditer %{name}" msgstr "Éditer %{name}"
#: lib/cannery_web/components/ammo_group_table_component.ex:267 #: lib/cannery_web/components/ammo_group_table_component.ex:251
#: lib/cannery_web/components/core_components/ammo_group_card.html.heex:17 #: lib/cannery_web/components/core_components/ammo_group_card.html.heex:17
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Empty" msgid "Empty"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:84 #: lib/cannery_web/components/ammo_group_table_component.ex:81
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "CPR" msgid "CPR"
msgstr "" msgstr ""
@ -1015,7 +1015,7 @@ msgstr ""
msgid "CPR:" msgid "CPR:"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:91 #: lib/cannery_web/components/ammo_group_table_component.ex:88
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Original Count" msgid "Original Count"
msgstr "Nombre original:" msgstr "Nombre original:"
@ -1030,12 +1030,7 @@ msgstr "Nombre original:"
msgid "Home" msgid "Home"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:28 #: lib/cannery_web/components/ammo_group_table_component.ex:64
#, elixir-autogen, elixir-format, fuzzy
msgid "Total packs:"
msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:65
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Last used on" msgid "Last used on"
msgstr "" msgstr ""
@ -1045,12 +1040,12 @@ msgstr ""
msgid "Last used on:" msgid "Last used on:"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:198 #: lib/cannery_web/components/ammo_group_table_component.ex:182
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Never used" msgid "Never used"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:64 #: lib/cannery_web/components/ammo_group_table_component.ex:69
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:42 #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:42
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Purchased on" msgid "Purchased on"
@ -1068,17 +1063,17 @@ msgid "Edit ammo"
msgstr "Éditer le type de munition" msgstr "Éditer le type de munition"
#: lib/cannery_web/live/ammo_type_live/index.html.heex:8 #: lib/cannery_web/live/ammo_type_live/index.html.heex:8
#: lib/cannery_web/live/ammo_type_live/index.html.heex:47 #: lib/cannery_web/live/ammo_type_live/index.html.heex:71
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "No Ammo types" msgid "No Ammo types"
msgstr "Aucun type de munition" msgstr "Aucun type de munition"
#: lib/cannery_web/live/ammo_type_live/index.html.heex:34 #: lib/cannery_web/live/ammo_type_live/index.html.heex:58
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Search catalog" msgid "Search catalog"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:59 #: lib/cannery_web/live/ammo_group_live/index.html.heex:79
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Search ammo" msgid "Search ammo"
msgstr "" msgstr ""
@ -1088,12 +1083,12 @@ msgstr ""
msgid "Search containers" msgid "Search containers"
msgstr "" msgstr ""
#: lib/cannery_web/live/tag_live/index.html.heex:37 #: lib/cannery_web/live/tag_live/index.html.heex:36
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Search tags" msgid "Search tags"
msgstr "" msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:91 #: lib/cannery_web/live/range_live/index.html.heex:115
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Search shot records" msgid "Search shot records"
msgstr "" msgstr ""
@ -1202,27 +1197,27 @@ msgstr ""
msgid "Password" msgid "Password"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:130 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:261
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "+P" msgid "+P"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:71 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:75
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid ".223" msgid ".223"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:63 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:56
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "5.56x46mm NATO" msgid "5.56x46mm NATO"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:138 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:300
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Boxer" msgid "Boxer"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:146 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:308
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Centerfire" msgid "Centerfire"
msgstr "" msgstr ""
@ -1234,7 +1229,7 @@ msgid "Really great weather"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:60 #: lib/cannery_web/components/ammo_group_table_component.ex:60
#: lib/cannery_web/components/ammo_type_table_component.ex:121 #: lib/cannery_web/components/ammo_type_table_component.ex:100
#: lib/cannery_web/components/container_table_component.ex:67 #: lib/cannery_web/components/container_table_component.ex:67
#: lib/cannery_web/components/move_ammo_group_component.ex:70 #: lib/cannery_web/components/move_ammo_group_component.ex:70
#: lib/cannery_web/components/shot_group_table_component.ex:45 #: lib/cannery_web/components/shot_group_table_component.ex:45
@ -1253,7 +1248,7 @@ msgstr ""
msgid "Log out" msgid "Log out"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:100 #: lib/cannery_web/components/ammo_group_table_component.ex:92
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Current Count" msgid "Current Count"
msgstr "" msgstr ""
@ -1263,3 +1258,209 @@ msgstr ""
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Close modal" msgid "Close modal"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:56
#: lib/cannery_web/live/ammo_type_live/index.html.heex:35
#: lib/cannery_web/live/container_live/show.html.heex:103
#: lib/cannery_web/live/range_live/index.html.heex:92
#, elixir-autogen, elixir-format
msgid "All"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:313
#, elixir-autogen, elixir-format
msgid "Attributes"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:56
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:89
#, elixir-autogen, elixir-format, fuzzy
msgid "Brass height"
msgstr "Cuivre"
#: lib/cannery_web/live/ammo_type_live/show.ex:128
#, elixir-autogen, elixir-format
msgid "Brass height:"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:57
#: lib/cannery_web/components/ammo_type_table_component.ex:58
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:96
#, elixir-autogen, elixir-format
msgid "Chamber size"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:129
#, elixir-autogen, elixir-format
msgid "Chamber size:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:48
#, elixir-autogen, elixir-format
msgid "Dimensions"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:81
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:266
#, elixir-autogen, elixir-format
msgid "Dram equivalent"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:148
#, elixir-autogen, elixir-format
msgid "Dram equivalent:"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:51
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:67
#, elixir-autogen, elixir-format
msgid "Gauge"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:123
#, elixir-autogen, elixir-format
msgid "Gauge:"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:72
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:207
#, elixir-autogen, elixir-format
msgid "Load grains"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:139
#, elixir-autogen, elixir-format
msgid "Load grains:"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:29
#, elixir-autogen, elixir-format, fuzzy
msgid "No ammo"
msgstr "Aucune munition"
#: lib/cannery_web/live/ammo_type_live/show.html.heex:60
#, elixir-autogen, elixir-format
msgid "None specified"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:59
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:25
#: lib/cannery_web/live/ammo_type_live/index.html.heex:38
#: lib/cannery_web/live/ammo_type_live/show.html.heex:58
#: lib/cannery_web/live/container_live/show.html.heex:106
#: lib/cannery_web/live/range_live/index.html.heex:95
#, elixir-autogen, elixir-format
msgid "Pistol"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:233
#, elixir-autogen, elixir-format, fuzzy
msgid "Powder"
msgstr "Type de poudre"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:293
#, elixir-autogen, elixir-format, fuzzy
msgid "Primer"
msgstr "Type damorce"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:109
#, elixir-autogen, elixir-format
msgid "Projectile"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:57
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:25
#: lib/cannery_web/live/ammo_type_live/index.html.heex:36
#: lib/cannery_web/live/ammo_type_live/show.html.heex:56
#: lib/cannery_web/live/container_live/show.html.heex:104
#: lib/cannery_web/live/range_live/index.html.heex:93
#, elixir-autogen, elixir-format
msgid "Rifle"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:73
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:215
#, elixir-autogen, elixir-format
msgid "Shot charge weight"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:140
#, elixir-autogen, elixir-format
msgid "Shot charge weight:"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:70
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:191
#, elixir-autogen, elixir-format
msgid "Shot material"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:137
#, elixir-autogen, elixir-format
msgid "Shot material:"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:71
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:200
#, elixir-autogen, elixir-format, fuzzy
msgid "Shot size"
msgstr "Tirs réalisés"
#: lib/cannery_web/live/ammo_type_live/show.ex:138
#, elixir-autogen, elixir-format, fuzzy
msgid "Shot size:"
msgstr "Tirs réalisés"
#: lib/cannery_web/components/ammo_type_table_component.ex:69
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:183
#, elixir-autogen, elixir-format
msgid "Shot type"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:136
#, elixir-autogen, elixir-format
msgid "Shot type:"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:58
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:25
#: lib/cannery_web/live/ammo_type_live/index.html.heex:37
#: lib/cannery_web/live/ammo_type_live/show.html.heex:54
#: lib/cannery_web/live/container_live/show.html.heex:105
#: lib/cannery_web/live/range_live/index.html.heex:94
#, elixir-autogen, elixir-format
msgid "Shotgun"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:62
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:143
#, elixir-autogen, elixir-format
msgid "Slug core"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:187
#, elixir-autogen, elixir-format
msgid "Target, bird, buck, etc"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:127
#, elixir-autogen, elixir-format
msgid "Unfired length:"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:55
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:80
#, elixir-autogen, elixir-format
msgid "Unfired shell length"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:68
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:176
#, elixir-autogen, elixir-format
msgid "Wadding"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:135
#, elixir-autogen, elixir-format
msgid "Wadding:"
msgstr ""

View File

@ -69,6 +69,7 @@ msgstr "Mél ou mot de passe invalide"
msgid "Not found" msgid "Not found"
msgstr "Pas trouvé" msgstr "Pas trouvé"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:18
#: lib/cannery_web/templates/user_registration/new.html.heex:13 #: lib/cannery_web/templates/user_registration/new.html.heex:13
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:13 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:13
#: lib/cannery_web/templates/user_settings/edit.html.heex:22 #: lib/cannery_web/templates/user_settings/edit.html.heex:22
@ -171,7 +172,7 @@ msgstr "Impossible d'analyser le nombre de copies"
msgid "Invalid number of copies, must be between 1 and %{max}. Was %{multiplier}" 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}" msgstr "Nombre de copies invalide, doit être 1 et %{max}. Été %{multiplier}"
#: lib/cannery/ammo.ex:1043 #: lib/cannery/ammo.ex:1114
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Invalid multiplier" msgid "Invalid multiplier"
msgstr "Multiplicateur invalide" msgstr "Multiplicateur invalide"

View File

@ -32,7 +32,7 @@ msgid "%{name} created successfully"
msgstr "%{name} créé· avec succès" msgstr "%{name} créé· avec succès"
#: lib/cannery_web/live/ammo_type_live/index.ex:72 #: lib/cannery_web/live/ammo_type_live/index.ex:72
#: lib/cannery_web/live/ammo_type_live/show.ex:49 #: lib/cannery_web/live/ammo_type_live/show.ex:27
#: lib/cannery_web/live/tag_live/index.ex:65 #: lib/cannery_web/live/tag_live/index.ex:65
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "%{name} deleted succesfully" msgid "%{name} deleted succesfully"
@ -66,15 +66,15 @@ msgid "Are you sure you want to delete %{email}? This action is permanent!"
msgstr "" msgstr ""
"Êtes-vous certain·e de supprimer %{email}? Cette action est définitive!" "Êtes-vous certain·e de supprimer %{email}? Cette action est définitive!"
#: lib/cannery_web/live/container_live/index.html.heex:100 #: lib/cannery_web/live/container_live/index.html.heex:99
#: lib/cannery_web/live/container_live/index.html.heex:156 #: lib/cannery_web/live/container_live/index.html.heex:157
#: lib/cannery_web/live/container_live/show.html.heex:52 #: lib/cannery_web/live/container_live/show.html.heex:45
#: lib/cannery_web/live/tag_live/index.html.heex:64 #: lib/cannery_web/live/tag_live/index.html.heex:63
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete %{name}?" msgid "Are you sure you want to delete %{name}?"
msgstr "Êtes-vous certain·e de supprimer %{name}?" msgstr "Êtes-vous certain·e de supprimer %{name}?"
#: lib/cannery_web/live/ammo_group_live/index.html.heex:169 #: lib/cannery_web/live/ammo_group_live/index.html.heex:189
#: lib/cannery_web/live/ammo_group_live/show.html.heex:74 #: lib/cannery_web/live/ammo_group_live/show.html.heex:74
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this ammo?" msgid "Are you sure you want to delete this ammo?"
@ -131,7 +131,7 @@ msgstr "Veuillez vérifier votre mél pour confirmer votre compte"
#: lib/cannery_web/components/add_shot_group_component.html.heex:59 #: lib/cannery_web/components/add_shot_group_component.html.heex:59
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:85 #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:85
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:181 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:351
#: lib/cannery_web/live/container_live/form_component.html.heex:59 #: lib/cannery_web/live/container_live/form_component.html.heex:59
#: lib/cannery_web/live/invite_live/form_component.html.heex:37 #: lib/cannery_web/live/invite_live/form_component.html.heex:37
#: lib/cannery_web/live/range_live/form_component.html.heex:47 #: lib/cannery_web/live/range_live/form_component.html.heex:47
@ -178,7 +178,7 @@ msgid "Are you sure you want to unstage this ammo?"
msgstr "Êtes-vous certain·e de vouloir désélectionner cette munition?" msgstr "Êtes-vous certain·e de vouloir désélectionner cette munition?"
#: lib/cannery_web/live/ammo_group_live/show.ex:159 #: lib/cannery_web/live/ammo_group_live/show.ex:159
#: lib/cannery_web/live/range_live/index.html.heex:128 #: lib/cannery_web/live/range_live/index.html.heex:152
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this shot record?" msgid "Are you sure you want to delete this shot record?"
msgstr "Êtes-vous certain·e de vouloir supprimer cet enregistrement de tir?" msgstr "Êtes-vous certain·e de vouloir supprimer cet enregistrement de tir?"
@ -214,8 +214,8 @@ msgstr "Copié dans le presse-papier"
msgid "%{name} removed successfully" msgid "%{name} removed successfully"
msgstr "%{name} retiré avec succès" msgstr "%{name} retiré avec succès"
#: lib/cannery_web/live/ammo_group_live/index.html.heex:18 #: lib/cannery_web/live/ammo_group_live/index.html.heex:10
#: lib/cannery_web/live/ammo_group_live/index.html.heex:28 #: lib/cannery_web/live/ammo_group_live/index.html.heex:20
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "You'll need to" msgid "You'll need to"
msgstr "Vous aurez besoin de" msgstr "Vous aurez besoin de"
@ -258,7 +258,7 @@ msgid_plural "Ammo added successfully"
msgstr[0] "Groupe de munition mis à jour avec succès" msgstr[0] "Groupe de munition mis à jour avec succès"
msgstr[1] "Groupe de munition mis à jour avec succès" msgstr[1] "Groupe de munition mis à jour avec succès"
#: lib/cannery_web/live/ammo_type_live/index.html.heex:97 #: lib/cannery_web/live/ammo_type_live/index.html.heex:122
#: lib/cannery_web/live/ammo_type_live/show.html.heex:29 #: lib/cannery_web/live/ammo_type_live/show.html.heex:29
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Are you sure you want to delete %{name}? This will delete all %{name} type ammo as well!" msgid "Are you sure you want to delete %{name}? This will delete all %{name} type ammo as well!"

View File

@ -23,12 +23,12 @@ msgstr ""
## effect: edit them in PO (.po) files instead. ## effect: edit them in PO (.po) files instead.
#: lib/cannery_web/live/ammo_group_live/index.ex:54 #: lib/cannery_web/live/ammo_group_live/index.ex:54
#: lib/cannery_web/live/ammo_group_live/index.ex:62 #: lib/cannery_web/live/ammo_group_live/index.ex:62
#: lib/cannery_web/live/ammo_group_live/index.html.heex:41 #: lib/cannery_web/live/ammo_group_live/index.html.heex:38
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Add Ammo" msgid "Add Ammo"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:37 #: lib/cannery_web/live/ammo_group_live/index.html.heex:34
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Add your first box!" msgid "Add your first box!"
msgstr "" msgstr ""
@ -133,7 +133,7 @@ msgstr ""
#: lib/cannery_web/components/add_shot_group_component.html.heex:57 #: lib/cannery_web/components/add_shot_group_component.html.heex:57
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:84 #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:84
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:180 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:350
#: lib/cannery_web/live/container_live/form_component.html.heex:57 #: lib/cannery_web/live/container_live/form_component.html.heex:57
#: lib/cannery_web/live/invite_live/form_component.html.heex:35 #: lib/cannery_web/live/invite_live/form_component.html.heex:35
#: lib/cannery_web/live/range_live/form_component.html.heex:45 #: lib/cannery_web/live/range_live/form_component.html.heex:45
@ -147,7 +147,7 @@ msgstr ""
msgid "Send instructions to reset password" msgid "Send instructions to reset password"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:75 #: lib/cannery_web/live/container_live/show.html.heex:68
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Why not add one?" msgid "Why not add one?"
msgstr "" msgstr ""
@ -167,7 +167,7 @@ msgstr ""
msgid "Why not get some ready to shoot?" msgid "Why not get some ready to shoot?"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:105 #: lib/cannery_web/live/ammo_group_live/index.html.heex:125
#: lib/cannery_web/live/ammo_group_live/show.html.heex:103 #: lib/cannery_web/live/ammo_group_live/show.html.heex:103
#: lib/cannery_web/live/range_live/index.html.heex:45 #: lib/cannery_web/live/range_live/index.html.heex:45
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -189,7 +189,7 @@ msgstr ""
msgid "Copy to clipboard" msgid "Copy to clipboard"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:22 #: lib/cannery_web/live/ammo_group_live/index.html.heex:14
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "add a container first" msgid "add a container first"
msgstr "" msgstr ""
@ -214,13 +214,13 @@ msgstr ""
msgid "View in Catalog" msgid "View in Catalog"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:32 #: lib/cannery_web/live/ammo_group_live/index.html.heex:24
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "add an ammo type first" msgid "add an ammo type first"
msgstr "" msgstr ""
#: lib/cannery_web/components/move_ammo_group_component.ex:80 #: lib/cannery_web/components/move_ammo_group_component.ex:80
#: lib/cannery_web/live/ammo_group_live/index.html.heex:122 #: lib/cannery_web/live/ammo_group_live/index.html.heex:142
#: lib/cannery_web/live/ammo_group_live/show.html.heex:96 #: lib/cannery_web/live/ammo_group_live/show.html.heex:96
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Move ammo" msgid "Move ammo"
@ -248,13 +248,13 @@ msgstr ""
msgid "Export Data as JSON" msgid "Export Data as JSON"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:85 #: lib/cannery_web/live/ammo_type_live/index.html.heex:110
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Clone %{ammo_type_name}" msgid "Clone %{ammo_type_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:88 #: lib/cannery_web/live/container_live/index.html.heex:87
#: lib/cannery_web/live/container_live/index.html.heex:144 #: lib/cannery_web/live/container_live/index.html.heex:145
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Clone %{container_name}" msgid "Clone %{container_name}"
msgstr "" msgstr ""
@ -264,20 +264,20 @@ msgstr ""
msgid "Copy invite link for %{invite_name}" msgid "Copy invite link for %{invite_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:104 #: lib/cannery_web/live/ammo_type_live/index.html.heex:129
#: lib/cannery_web/live/ammo_type_live/show.html.heex:36 #: lib/cannery_web/live/ammo_type_live/show.html.heex:36
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Delete %{ammo_type_name}" msgid "Delete %{ammo_type_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:103 #: lib/cannery_web/live/container_live/index.html.heex:104
#: lib/cannery_web/live/container_live/index.html.heex:159 #: lib/cannery_web/live/container_live/index.html.heex:162
#: lib/cannery_web/live/container_live/show.html.heex:55 #: lib/cannery_web/live/container_live/show.html.heex:48
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Delete %{container_name}" msgid "Delete %{container_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/tag_live/index.html.heex:66 #: lib/cannery_web/live/tag_live/index.html.heex:65
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Delete %{tag_name}" msgid "Delete %{tag_name}"
msgstr "" msgstr ""
@ -288,30 +288,30 @@ msgid "Delete invite for %{invite_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:161 #: lib/cannery_web/live/ammo_group_live/show.ex:161
#: lib/cannery_web/live/range_live/index.html.heex:131 #: lib/cannery_web/live/range_live/index.html.heex:155
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Delete shot record of %{shot_group_count} shots" msgid "Delete shot record of %{shot_group_count} shots"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:75 #: lib/cannery_web/live/ammo_type_live/index.html.heex:100
#: lib/cannery_web/live/ammo_type_live/show.html.heex:19 #: lib/cannery_web/live/ammo_type_live/show.html.heex:19
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit %{ammo_type_name}" msgid "Edit %{ammo_type_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:78 #: lib/cannery_web/live/container_live/index.html.heex:77
#: lib/cannery_web/live/container_live/index.html.heex:134 #: lib/cannery_web/live/container_live/index.html.heex:135
#: lib/cannery_web/live/container_live/show.html.heex:42 #: lib/cannery_web/live/container_live/show.html.heex:35
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit %{container_name}" msgid "Edit %{container_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/tag_live/index.html.heex:53 #: lib/cannery_web/live/tag_live/index.html.heex:52
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit %{tag_name}" msgid "Edit %{tag_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:144 #: lib/cannery_web/live/ammo_group_live/index.html.heex:164
#: lib/cannery_web/live/ammo_group_live/show.html.heex:62 #: lib/cannery_web/live/ammo_group_live/show.html.heex:62
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit ammo group of %{ammo_group_count} bullets" msgid "Edit ammo group of %{ammo_group_count} bullets"
@ -327,45 +327,45 @@ msgstr ""
msgid "Edit shot group of %{shot_group_count} shots" msgid "Edit shot group of %{shot_group_count} shots"
msgstr "" msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:114 #: lib/cannery_web/live/range_live/index.html.heex:138
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit shot record of %{shot_group_count} shots" msgid "Edit shot record of %{shot_group_count} shots"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:98 #: lib/cannery_web/live/ammo_group_live/index.html.heex:118
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Stage" msgid "Stage"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:66 #: lib/cannery_web/live/container_live/index.html.heex:65
#: lib/cannery_web/live/container_live/index.html.heex:123 #: lib/cannery_web/live/container_live/index.html.heex:124
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Tag %{container_name}" msgid "Tag %{container_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:97 #: lib/cannery_web/live/ammo_group_live/index.html.heex:117
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Unstage" msgid "Unstage"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:65 #: lib/cannery_web/live/ammo_type_live/index.html.heex:90
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "View %{ammo_type_name}" msgid "View %{ammo_type_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:156 #: lib/cannery_web/live/ammo_group_live/index.html.heex:176
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Clone ammo group of %{ammo_group_count} bullets" msgid "Clone ammo group of %{ammo_group_count} bullets"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:171 #: lib/cannery_web/live/ammo_group_live/index.html.heex:191
#: lib/cannery_web/live/ammo_group_live/show.html.heex:76 #: lib/cannery_web/live/ammo_group_live/show.html.heex:76
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Delete ammo group of %{ammo_group_count} bullets" msgid "Delete ammo group of %{ammo_group_count} bullets"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:132 #: lib/cannery_web/live/ammo_group_live/index.html.heex:152
#: lib/cannery_web/live/ammo_type_live/show.html.heex:189 #: lib/cannery_web/live/ammo_type_live/show.html.heex:206
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "View ammo group of %{ammo_group_count} bullets" msgid "View ammo group of %{ammo_group_count} bullets"
msgstr "" msgstr ""

View File

@ -36,7 +36,7 @@ msgstr ""
msgid "Ammo" msgid "Ammo"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:108 #: lib/cannery_web/components/ammo_group_table_component.ex:96
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:22 #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:22
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Ammo type" msgid "Ammo type"
@ -47,48 +47,48 @@ msgstr ""
msgid "Background color" msgid "Background color"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:65 #: lib/cannery_web/components/ammo_type_table_component.ex:87
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:158 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:324
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Blank" msgid "Blank"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:79 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:171
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Brass" msgid "Brass"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:47 #: lib/cannery_web/components/ammo_type_table_component.ex:62
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:51 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:144
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Bullet core" msgid "Bullet core"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:46 #: lib/cannery_web/components/ammo_type_table_component.ex:60
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:43 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:121
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Bullet type" msgid "Bullet type"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:49 #: lib/cannery_web/components/ammo_type_table_component.ex:51
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:67 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:68
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Caliber" msgid "Caliber"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:48 #: lib/cannery_web/components/ammo_type_table_component.ex:49
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:59 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:52
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Cartridge" msgid "Cartridge"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:50 #: lib/cannery_web/components/ammo_type_table_component.ex:67
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:75 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:167
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Case material" msgid "Case material"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:72 #: lib/cannery_web/components/ammo_group_table_component.ex:74
#: lib/cannery_web/components/move_ammo_group_component.ex:67 #: lib/cannery_web/components/move_ammo_group_component.ex:67
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:59 #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:59
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -103,13 +103,13 @@ msgstr ""
msgid "Containers" msgid "Containers"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:66 #: lib/cannery_web/components/ammo_type_table_component.ex:88
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:162 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:328
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Corrosive" msgid "Corrosive"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:100 #: lib/cannery_web/components/ammo_group_table_component.ex:92
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:28 #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:28
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Count" msgid "Count"
@ -122,7 +122,7 @@ msgid "Count:"
msgstr "" msgstr ""
#: lib/cannery_web/components/container_table_component.ex:46 #: lib/cannery_web/components/container_table_component.ex:46
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:28 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:38
#: lib/cannery_web/live/container_live/form_component.html.heex:29 #: lib/cannery_web/live/container_live/form_component.html.heex:29
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Description" msgid "Description"
@ -149,24 +149,19 @@ msgstr ""
msgid "Edit Tag" msgid "Edit Tag"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:41 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:135
#, elixir-autogen, elixir-format
msgid "Example bullet type abbreviations"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:47
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "FMJ" msgid "FMJ"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:59 #: lib/cannery_web/components/ammo_type_table_component.ex:59
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:118 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:112
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Grains" msgid "Grains"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:64 #: lib/cannery_web/components/ammo_type_table_component.ex:86
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:154 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:320
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Incendiary" msgid "Incendiary"
msgstr "" msgstr ""
@ -216,8 +211,9 @@ msgstr ""
msgid "Magazine, Clip, Ammo Box, etc" msgid "Magazine, Clip, Ammo Box, etc"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:67 #: lib/cannery_web/components/ammo_type_table_component.ex:89
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:166 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:333
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:336
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Manufacturer" msgid "Manufacturer"
msgstr "" msgstr ""
@ -232,9 +228,9 @@ msgstr ""
msgid "My cool ammo can" msgid "My cool ammo can"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:45 #: lib/cannery_web/components/ammo_type_table_component.ex:153
#: lib/cannery_web/components/container_table_component.ex:45 #: lib/cannery_web/components/container_table_component.ex:45
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:21 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:31
#: lib/cannery_web/live/container_live/form_component.html.heex:21 #: lib/cannery_web/live/container_live/form_component.html.heex:21
#: lib/cannery_web/live/invite_live/form_component.html.heex:21 #: lib/cannery_web/live/invite_live/form_component.html.heex:21
#: lib/cannery_web/live/tag_live/form_component.html.heex:21 #: lib/cannery_web/live/tag_live/form_component.html.heex:21
@ -264,19 +260,18 @@ msgstr ""
msgid "New Tag" msgid "New Tag"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:10 #: lib/cannery_web/live/ammo_group_live/index.html.heex:92
#: lib/cannery_web/live/ammo_group_live/index.html.heex:72
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No Ammo" msgid "No Ammo"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:163 #: lib/cannery_web/live/ammo_type_live/show.html.heex:180
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No ammo for this type" msgid "No ammo for this type"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:8 #: lib/cannery_web/live/container_live/index.html.heex:8
#: lib/cannery_web/live/container_live/index.html.heex:48 #: lib/cannery_web/live/container_live/index.html.heex:47
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No containers" msgid "No containers"
msgstr "" msgstr ""
@ -288,7 +283,7 @@ msgstr ""
#: lib/cannery_web/live/container_live/edit_tags_component.html.heex:29 #: lib/cannery_web/live/container_live/edit_tags_component.html.heex:29
#: lib/cannery_web/live/tag_live/index.html.heex:10 #: lib/cannery_web/live/tag_live/index.html.heex:10
#: lib/cannery_web/live/tag_live/index.html.heex:44 #: lib/cannery_web/live/tag_live/index.html.heex:43
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No tags" msgid "No tags"
msgstr "" msgstr ""
@ -313,13 +308,13 @@ msgstr ""
msgid "On the bookshelf" msgid "On the bookshelf"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:60 #: lib/cannery_web/components/ammo_type_table_component.ex:80
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:126 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:257
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Pressure" msgid "Pressure"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:83 #: lib/cannery_web/components/ammo_group_table_component.ex:82
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:35 #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:35
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Price paid" msgid "Price paid"
@ -330,8 +325,8 @@ msgstr ""
msgid "Price paid:" msgid "Price paid:"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:61 #: lib/cannery_web/components/ammo_type_table_component.ex:83
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:134 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:296
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Primer type" msgid "Primer type"
msgstr "" msgstr ""
@ -362,7 +357,7 @@ msgstr ""
msgid "Simple:" msgid "Simple:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:55 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:151
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Steel" msgid "Steel"
msgstr "" msgstr ""
@ -396,15 +391,22 @@ msgstr ""
msgid "The self-hosted firearm tracker website" msgid "The self-hosted firearm tracker website"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:63 #: lib/cannery_web/components/ammo_type_table_component.ex:85
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:150 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:316
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Tracer" msgid "Tracer"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:150
#: lib/cannery_web/components/container_table_component.ex:48 #: lib/cannery_web/components/container_table_component.ex:48
#: lib/cannery_web/components/move_ammo_group_component.ex:68 #: lib/cannery_web/components/move_ammo_group_component.ex:68
#: lib/cannery_web/live/ammo_group_live/index.html.heex:50
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:21
#: lib/cannery_web/live/ammo_type_live/index.html.heex:29
#: lib/cannery_web/live/ammo_type_live/show.html.heex:48
#: lib/cannery_web/live/container_live/form_component.html.heex:39 #: lib/cannery_web/live/container_live/form_component.html.heex:39
#: lib/cannery_web/live/container_live/show.html.heex:97
#: lib/cannery_web/live/range_live/index.html.heex:86
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Type" msgid "Type"
msgstr "" msgstr ""
@ -430,12 +432,12 @@ msgstr ""
msgid "Your data stays with you, period" msgid "Your data stays with you, period"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:67 #: lib/cannery_web/live/container_live/show.html.heex:60
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No tags for this container" msgid "No tags for this container"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:79 #: lib/cannery_web/components/ammo_group_table_component.ex:78
#: lib/cannery_web/components/core_components/topbar.html.heex:66 #: lib/cannery_web/components/core_components/topbar.html.heex:66
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Range" msgid "Range"
@ -482,7 +484,7 @@ msgid "New Shot Records"
msgstr "" msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:55 #: lib/cannery_web/live/range_live/index.html.heex:55
#: lib/cannery_web/live/range_live/index.html.heex:98 #: lib/cannery_web/live/range_live/index.html.heex:122
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No shots recorded" msgid "No shots recorded"
msgstr "" msgstr ""
@ -521,49 +523,48 @@ msgstr ""
msgid "Shot log" msgid "Shot log"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:180 #: lib/cannery_web/components/ammo_group_table_component.ex:164
#: lib/cannery_web/components/ammo_group_table_component.ex:263 #: lib/cannery_web/components/ammo_group_table_component.ex:247
#: lib/cannery_web/components/ammo_type_table_component.ex:235 #: lib/cannery_web/components/ammo_type_table_component.ex:261
#: lib/cannery_web/components/core_components/ammo_group_card.html.heex:45 #: lib/cannery_web/components/core_components/ammo_group_card.html.heex:45
#: lib/cannery_web/components/core_components/ammo_group_card.html.heex:50 #: lib/cannery_web/components/core_components/ammo_group_card.html.heex:50
#: lib/cannery_web/live/ammo_group_live/show.html.heex:37 #: lib/cannery_web/live/ammo_group_live/show.html.heex:37
#: lib/cannery_web/live/ammo_group_live/show.html.heex:42 #: lib/cannery_web/live/ammo_group_live/show.html.heex:42
#: lib/cannery_web/live/ammo_type_live/show.html.heex:135 #: lib/cannery_web/live/ammo_type_live/show.html.heex:152
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "$%{amount}" msgid "$%{amount}"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:87 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:160
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Bimetal" msgid "Bimetal"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:51 #: lib/cannery_web/components/ammo_type_table_component.ex:66
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:83 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:156
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Jacket type" msgid "Jacket type"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:52 #: lib/cannery_web/components/ammo_type_table_component.ex:82
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:91 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:279
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Muzzle velocity" msgid "Muzzle velocity"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:55 #: lib/cannery_web/components/ammo_type_table_component.ex:76
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:108 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:244
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Powder grains per charge" msgid "Powder grains per charge"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:53 #: lib/cannery_web/components/ammo_type_table_component.ex:74
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:101 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:236
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Powder type" msgid "Powder type"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:68 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:343
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:173
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "UPC" msgid "UPC"
msgstr "" msgstr ""
@ -586,8 +587,8 @@ msgstr ""
msgid "New password" msgid "New password"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:62 #: lib/cannery_web/components/ammo_type_table_component.ex:84
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:142 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:304
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Firing type" msgid "Firing type"
msgstr "" msgstr ""
@ -598,33 +599,33 @@ msgid "Reconnecting..."
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/index.ex:28 #: lib/cannery_web/live/container_live/index.ex:28
#: lib/cannery_web/live/container_live/show.ex:108 #: lib/cannery_web/live/container_live/show.ex:120
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit %{name}" msgid "Edit %{name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/index.ex:63 #: lib/cannery_web/live/container_live/index.ex:63
#: lib/cannery_web/live/container_live/show.ex:109 #: lib/cannery_web/live/container_live/show.ex:121
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit %{name} tags" msgid "Edit %{name} tags"
msgstr "" msgstr ""
#: lib/cannery_web/components/core_components/container_card.html.heex:37 #: lib/cannery_web/components/core_components/container_card.html.heex:37
#: lib/cannery_web/live/ammo_type_live/show.html.heex:70 #: lib/cannery_web/live/ammo_type_live/show.html.heex:87
#: lib/cannery_web/live/container_live/show.html.heex:33 #: lib/cannery_web/live/container_live/show.html.heex:27
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Rounds:" msgid "Rounds:"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:177 #: lib/cannery_web/components/ammo_group_table_component.ex:161
#: lib/cannery_web/components/ammo_group_table_component.ex:259 #: lib/cannery_web/components/ammo_group_table_component.ex:243
#: lib/cannery_web/components/ammo_type_table_component.ex:234 #: lib/cannery_web/components/ammo_type_table_component.ex:260
#: lib/cannery_web/live/ammo_type_live/show.html.heex:139 #: lib/cannery_web/live/ammo_type_live/show.html.heex:156
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No cost information" msgid "No cost information"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:92 #: lib/cannery_web/components/ammo_group_table_component.ex:84
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "% left" msgid "% left"
msgstr "" msgstr ""
@ -690,7 +691,7 @@ msgstr ""
msgid "Copies" msgid "Copies"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:122 #: lib/cannery_web/live/ammo_type_live/show.html.heex:139
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Added on:" msgid "Added on:"
msgstr "" msgstr ""
@ -754,7 +755,7 @@ msgstr ""
msgid "Move Ammo" msgid "Move Ammo"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:112 #: lib/cannery_web/live/container_live/show.html.heex:123
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No ammo in this container" msgid "No ammo in this container"
msgstr "" msgstr ""
@ -770,8 +771,8 @@ msgid "This ammo is not in a container"
msgstr "" msgstr ""
#: lib/cannery_web/components/core_components/container_card.html.heex:32 #: lib/cannery_web/components/core_components/container_card.html.heex:32
#: lib/cannery_web/live/ammo_type_live/show.html.heex:96 #: lib/cannery_web/live/ammo_type_live/show.html.heex:113
#: lib/cannery_web/live/container_live/show.html.heex:23 #: lib/cannery_web/live/container_live/show.html.heex:22
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Packs:" msgid "Packs:"
msgstr "" msgstr ""
@ -797,80 +798,79 @@ msgstr ""
msgid "Container:" msgid "Container:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:65 #: lib/cannery_web/live/ammo_group_live/index.html.heex:85
#: lib/cannery_web/live/ammo_type_live/index.html.heex:40 #: lib/cannery_web/live/ammo_type_live/index.html.heex:64
#: lib/cannery_web/live/ammo_type_live/show.html.heex:149 #: lib/cannery_web/live/ammo_type_live/show.html.heex:166
#: lib/cannery_web/live/container_live/show.html.heex:98
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Show used" msgid "Show used"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:218 #: lib/cannery_web/components/ammo_group_table_component.ex:202
#: lib/cannery_web/live/ammo_group_live/show.html.heex:19 #: lib/cannery_web/live/ammo_group_live/show.html.heex:19
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "%{percentage}%" msgid "%{percentage}%"
msgstr "" msgstr ""
#: lib/cannery_web/live/range_live/index.ex:135 #: lib/cannery_web/live/range_live/index.ex:153
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Rounds shot: %{count}" msgid "Rounds shot: %{count}"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:100 #: lib/cannery_web/components/ammo_type_table_component.ex:123
#: lib/cannery_web/components/container_table_component.ex:64 #: lib/cannery_web/components/container_table_component.ex:64
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Packs" msgid "Packs"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:80 #: lib/cannery_web/components/ammo_type_table_component.ex:144
#: lib/cannery_web/components/container_table_component.ex:65 #: lib/cannery_web/components/container_table_component.ex:65
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Rounds" msgid "Rounds"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:155 #: lib/cannery_web/live/ammo_type_live/show.html.heex:172
#: lib/cannery_web/live/container_live/index.html.heex:40 #: lib/cannery_web/live/container_live/index.html.heex:40
#: lib/cannery_web/live/container_live/show.html.heex:104 #: lib/cannery_web/live/container_live/show.html.heex:115
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "View as table" msgid "View as table"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:110 #: lib/cannery_web/components/ammo_type_table_component.ex:108
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Total ever packs" msgid "Total ever packs"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:113 #: lib/cannery_web/live/ammo_type_live/show.html.heex:130
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Total ever packs:" msgid "Total ever packs:"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:91 #: lib/cannery_web/components/ammo_type_table_component.ex:129
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Total ever rounds" msgid "Total ever rounds"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:87 #: lib/cannery_web/live/ammo_type_live/show.html.heex:104
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Total ever rounds:" msgid "Total ever rounds:"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:105 #: lib/cannery_web/components/ammo_type_table_component.ex:116
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Used packs" msgid "Used packs"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:105 #: lib/cannery_web/live/ammo_type_live/show.html.heex:122
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Used packs:" msgid "Used packs:"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:86 #: lib/cannery_web/components/ammo_type_table_component.ex:137
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Used rounds" msgid "Used rounds"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:79 #: lib/cannery_web/live/ammo_type_live/show.html.heex:96
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Used rounds:" msgid "Used rounds:"
msgstr "" msgstr ""
@ -885,120 +885,120 @@ msgstr ""
msgid "Rounds shot chart" msgid "Rounds shot chart"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:26 #: lib/cannery_web/live/ammo_type_live/show.ex:154
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Blank:" msgid "Blank:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:12 #: lib/cannery_web/live/ammo_type_live/show.ex:132
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Bullet core:" msgid "Bullet core:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:11 #: lib/cannery_web/live/ammo_type_live/show.ex:131
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Bullet type:" msgid "Bullet type:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:14 #: lib/cannery_web/live/ammo_type_live/show.ex:123
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Caliber:" msgid "Caliber:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:13 #: lib/cannery_web/live/ammo_type_live/show.ex:121
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Cartridge:" msgid "Cartridge:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:15 #: lib/cannery_web/live/ammo_type_live/show.ex:134
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Case material:" msgid "Case material:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:27 #: lib/cannery_web/live/ammo_type_live/show.ex:155
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Corrosive:" msgid "Corrosive:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:23 #: lib/cannery_web/live/ammo_type_live/show.ex:151
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Firing type:" msgid "Firing type:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:20 #: lib/cannery_web/live/ammo_type_live/show.ex:130
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Grains:" msgid "Grains:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:25 #: lib/cannery_web/live/ammo_type_live/show.ex:153
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Incendiary:" msgid "Incendiary:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:16 #: lib/cannery_web/live/ammo_type_live/show.ex:133
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Jacket type:" msgid "Jacket type:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:28 #: lib/cannery_web/live/ammo_type_live/show.ex:156
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Manufacturer:" msgid "Manufacturer:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:17 #: lib/cannery_web/live/ammo_type_live/show.ex:149
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Muzzle velocity:" msgid "Muzzle velocity:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:19 #: lib/cannery_web/live/ammo_type_live/show.ex:143
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Powder grains per charge:" msgid "Powder grains per charge:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:18 #: lib/cannery_web/live/ammo_type_live/show.ex:141
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Powder type:" msgid "Powder type:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:21 #: lib/cannery_web/live/ammo_type_live/show.ex:147
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Pressure:" msgid "Pressure:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:22 #: lib/cannery_web/live/ammo_type_live/show.ex:150
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Primer type:" msgid "Primer type:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:24 #: lib/cannery_web/live/ammo_type_live/show.ex:152
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Tracer:" msgid "Tracer:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:29 #: lib/cannery_web/live/ammo_type_live/show.ex:157
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "UPC:" msgid "UPC:"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:120 #: lib/cannery_web/components/ammo_type_table_component.ex:102
#: lib/cannery_web/live/ammo_type_live/show.html.heex:131 #: lib/cannery_web/live/ammo_type_live/show.html.heex:148
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Average CPR" msgid "Average CPR"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.ex:28 #: lib/cannery_web/live/ammo_type_live/index.ex:28
#: lib/cannery_web/live/ammo_type_live/show.ex:104 #: lib/cannery_web/live/ammo_type_live/show.ex:82
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Edit %{ammo_type_name}" msgid "Edit %{ammo_type_name}"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:267 #: lib/cannery_web/components/ammo_group_table_component.ex:251
#: lib/cannery_web/components/core_components/ammo_group_card.html.heex:17 #: lib/cannery_web/components/core_components/ammo_group_card.html.heex:17
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Empty" msgid "Empty"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:84 #: lib/cannery_web/components/ammo_group_table_component.ex:81
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "CPR" msgid "CPR"
msgstr "" msgstr ""
@ -1008,7 +1008,7 @@ msgstr ""
msgid "CPR:" msgid "CPR:"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:91 #: lib/cannery_web/components/ammo_group_table_component.ex:88
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Original Count" msgid "Original Count"
msgstr "" msgstr ""
@ -1023,12 +1023,7 @@ msgstr ""
msgid "Home" msgid "Home"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:28 #: lib/cannery_web/components/ammo_group_table_component.ex:64
#, elixir-autogen, elixir-format, fuzzy
msgid "Total packs:"
msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:65
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Last used on" msgid "Last used on"
msgstr "" msgstr ""
@ -1038,12 +1033,12 @@ msgstr ""
msgid "Last used on:" msgid "Last used on:"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:198 #: lib/cannery_web/components/ammo_group_table_component.ex:182
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Never used" msgid "Never used"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:64 #: lib/cannery_web/components/ammo_group_table_component.ex:69
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:42 #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:42
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Purchased on" msgid "Purchased on"
@ -1061,17 +1056,17 @@ msgid "Edit ammo"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:8 #: lib/cannery_web/live/ammo_type_live/index.html.heex:8
#: lib/cannery_web/live/ammo_type_live/index.html.heex:47 #: lib/cannery_web/live/ammo_type_live/index.html.heex:71
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "No Ammo types" msgid "No Ammo types"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:34 #: lib/cannery_web/live/ammo_type_live/index.html.heex:58
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Search catalog" msgid "Search catalog"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:59 #: lib/cannery_web/live/ammo_group_live/index.html.heex:79
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Search ammo" msgid "Search ammo"
msgstr "" msgstr ""
@ -1081,12 +1076,12 @@ msgstr ""
msgid "Search containers" msgid "Search containers"
msgstr "" msgstr ""
#: lib/cannery_web/live/tag_live/index.html.heex:37 #: lib/cannery_web/live/tag_live/index.html.heex:36
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Search tags" msgid "Search tags"
msgstr "" msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:91 #: lib/cannery_web/live/range_live/index.html.heex:115
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Search shot records" msgid "Search shot records"
msgstr "" msgstr ""
@ -1193,27 +1188,27 @@ msgstr ""
msgid "Password" msgid "Password"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:130 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:261
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "+P" msgid "+P"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:71 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:75
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid ".223" msgid ".223"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:63 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:56
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "5.56x46mm NATO" msgid "5.56x46mm NATO"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:138 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:300
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Boxer" msgid "Boxer"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:146 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:308
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Centerfire" msgid "Centerfire"
msgstr "" msgstr ""
@ -1225,7 +1220,7 @@ msgid "Really great weather"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:60 #: lib/cannery_web/components/ammo_group_table_component.ex:60
#: lib/cannery_web/components/ammo_type_table_component.ex:121 #: lib/cannery_web/components/ammo_type_table_component.ex:100
#: lib/cannery_web/components/container_table_component.ex:67 #: lib/cannery_web/components/container_table_component.ex:67
#: lib/cannery_web/components/move_ammo_group_component.ex:70 #: lib/cannery_web/components/move_ammo_group_component.ex:70
#: lib/cannery_web/components/shot_group_table_component.ex:45 #: lib/cannery_web/components/shot_group_table_component.ex:45
@ -1244,7 +1239,7 @@ msgstr ""
msgid "Log out" msgid "Log out"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:100 #: lib/cannery_web/components/ammo_group_table_component.ex:92
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Current Count" msgid "Current Count"
msgstr "" msgstr ""
@ -1254,3 +1249,209 @@ msgstr ""
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Close modal" msgid "Close modal"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:56
#: lib/cannery_web/live/ammo_type_live/index.html.heex:35
#: lib/cannery_web/live/container_live/show.html.heex:103
#: lib/cannery_web/live/range_live/index.html.heex:92
#, elixir-autogen, elixir-format
msgid "All"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:313
#, elixir-autogen, elixir-format
msgid "Attributes"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:56
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:89
#, elixir-autogen, elixir-format, fuzzy
msgid "Brass height"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:128
#, elixir-autogen, elixir-format
msgid "Brass height:"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:57
#: lib/cannery_web/components/ammo_type_table_component.ex:58
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:96
#, elixir-autogen, elixir-format
msgid "Chamber size"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:129
#, elixir-autogen, elixir-format
msgid "Chamber size:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:48
#, elixir-autogen, elixir-format
msgid "Dimensions"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:81
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:266
#, elixir-autogen, elixir-format
msgid "Dram equivalent"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:148
#, elixir-autogen, elixir-format
msgid "Dram equivalent:"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:51
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:67
#, elixir-autogen, elixir-format
msgid "Gauge"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:123
#, elixir-autogen, elixir-format
msgid "Gauge:"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:72
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:207
#, elixir-autogen, elixir-format
msgid "Load grains"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:139
#, elixir-autogen, elixir-format
msgid "Load grains:"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:29
#, elixir-autogen, elixir-format, fuzzy
msgid "No ammo"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:60
#, elixir-autogen, elixir-format
msgid "None specified"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:59
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:25
#: lib/cannery_web/live/ammo_type_live/index.html.heex:38
#: lib/cannery_web/live/ammo_type_live/show.html.heex:58
#: lib/cannery_web/live/container_live/show.html.heex:106
#: lib/cannery_web/live/range_live/index.html.heex:95
#, elixir-autogen, elixir-format
msgid "Pistol"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:233
#, elixir-autogen, elixir-format, fuzzy
msgid "Powder"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:293
#, elixir-autogen, elixir-format, fuzzy
msgid "Primer"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:109
#, elixir-autogen, elixir-format
msgid "Projectile"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:57
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:25
#: lib/cannery_web/live/ammo_type_live/index.html.heex:36
#: lib/cannery_web/live/ammo_type_live/show.html.heex:56
#: lib/cannery_web/live/container_live/show.html.heex:104
#: lib/cannery_web/live/range_live/index.html.heex:93
#, elixir-autogen, elixir-format
msgid "Rifle"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:73
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:215
#, elixir-autogen, elixir-format
msgid "Shot charge weight"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:140
#, elixir-autogen, elixir-format
msgid "Shot charge weight:"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:70
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:191
#, elixir-autogen, elixir-format
msgid "Shot material"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:137
#, elixir-autogen, elixir-format
msgid "Shot material:"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:71
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:200
#, elixir-autogen, elixir-format, fuzzy
msgid "Shot size"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:138
#, elixir-autogen, elixir-format, fuzzy
msgid "Shot size:"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:69
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:183
#, elixir-autogen, elixir-format
msgid "Shot type"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:136
#, elixir-autogen, elixir-format
msgid "Shot type:"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:58
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:25
#: lib/cannery_web/live/ammo_type_live/index.html.heex:37
#: lib/cannery_web/live/ammo_type_live/show.html.heex:54
#: lib/cannery_web/live/container_live/show.html.heex:105
#: lib/cannery_web/live/range_live/index.html.heex:94
#, elixir-autogen, elixir-format
msgid "Shotgun"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:62
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:143
#, elixir-autogen, elixir-format
msgid "Slug core"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:187
#, elixir-autogen, elixir-format
msgid "Target, bird, buck, etc"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:127
#, elixir-autogen, elixir-format
msgid "Unfired length:"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:55
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:80
#, elixir-autogen, elixir-format
msgid "Unfired shell length"
msgstr ""
#: lib/cannery_web/components/ammo_type_table_component.ex:68
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:176
#, elixir-autogen, elixir-format
msgid "Wadding"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:135
#, elixir-autogen, elixir-format
msgid "Wadding:"
msgstr ""

View File

@ -70,6 +70,7 @@ msgstr "Seoladh email nó pasfhocal neamhbhailí"
msgid "Not found" msgid "Not found"
msgstr "Ní feidir é a fáil" msgstr "Ní feidir é a fáil"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:18
#: lib/cannery_web/templates/user_registration/new.html.heex:13 #: lib/cannery_web/templates/user_registration/new.html.heex:13
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:13 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:13
#: lib/cannery_web/templates/user_settings/edit.html.heex:22 #: lib/cannery_web/templates/user_settings/edit.html.heex:22
@ -170,7 +171,7 @@ msgstr ""
msgid "Invalid number of copies, must be between 1 and %{max}. Was %{multiplier}" msgid "Invalid number of copies, must be between 1 and %{max}. Was %{multiplier}"
msgstr "" msgstr ""
#: lib/cannery/ammo.ex:1043 #: lib/cannery/ammo.ex:1114
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Invalid multiplier" msgid "Invalid multiplier"
msgstr "" msgstr ""

View File

@ -30,7 +30,7 @@ msgid "%{name} created successfully"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.ex:72 #: lib/cannery_web/live/ammo_type_live/index.ex:72
#: lib/cannery_web/live/ammo_type_live/show.ex:49 #: lib/cannery_web/live/ammo_type_live/show.ex:27
#: lib/cannery_web/live/tag_live/index.ex:65 #: lib/cannery_web/live/tag_live/index.ex:65
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "%{name} deleted succesfully" msgid "%{name} deleted succesfully"
@ -61,15 +61,15 @@ msgstr ""
msgid "Are you sure you want to delete %{email}? This action is permanent!" msgid "Are you sure you want to delete %{email}? This action is permanent!"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:100 #: lib/cannery_web/live/container_live/index.html.heex:99
#: lib/cannery_web/live/container_live/index.html.heex:156 #: lib/cannery_web/live/container_live/index.html.heex:157
#: lib/cannery_web/live/container_live/show.html.heex:52 #: lib/cannery_web/live/container_live/show.html.heex:45
#: lib/cannery_web/live/tag_live/index.html.heex:64 #: lib/cannery_web/live/tag_live/index.html.heex:63
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete %{name}?" msgid "Are you sure you want to delete %{name}?"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:169 #: lib/cannery_web/live/ammo_group_live/index.html.heex:189
#: lib/cannery_web/live/ammo_group_live/show.html.heex:74 #: lib/cannery_web/live/ammo_group_live/show.html.heex:74
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this ammo?" msgid "Are you sure you want to delete this ammo?"
@ -122,7 +122,7 @@ msgstr ""
#: lib/cannery_web/components/add_shot_group_component.html.heex:59 #: lib/cannery_web/components/add_shot_group_component.html.heex:59
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:85 #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:85
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:181 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:351
#: lib/cannery_web/live/container_live/form_component.html.heex:59 #: lib/cannery_web/live/container_live/form_component.html.heex:59
#: lib/cannery_web/live/invite_live/form_component.html.heex:37 #: lib/cannery_web/live/invite_live/form_component.html.heex:37
#: lib/cannery_web/live/range_live/form_component.html.heex:47 #: lib/cannery_web/live/range_live/form_component.html.heex:47
@ -167,7 +167,7 @@ msgid "Are you sure you want to unstage this ammo?"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:159 #: lib/cannery_web/live/ammo_group_live/show.ex:159
#: lib/cannery_web/live/range_live/index.html.heex:128 #: lib/cannery_web/live/range_live/index.html.heex:152
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this shot record?" msgid "Are you sure you want to delete this shot record?"
msgstr "" msgstr ""
@ -203,8 +203,8 @@ msgstr ""
msgid "%{name} removed successfully" msgid "%{name} removed successfully"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:18 #: lib/cannery_web/live/ammo_group_live/index.html.heex:10
#: lib/cannery_web/live/ammo_group_live/index.html.heex:28 #: lib/cannery_web/live/ammo_group_live/index.html.heex:20
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "You'll need to" msgid "You'll need to"
msgstr "" msgstr ""
@ -250,7 +250,7 @@ msgstr[2] ""
msgstr[3] "" msgstr[3] ""
msgstr[4] "" msgstr[4] ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:97 #: lib/cannery_web/live/ammo_type_live/index.html.heex:122
#: lib/cannery_web/live/ammo_type_live/show.html.heex:29 #: lib/cannery_web/live/ammo_type_live/show.html.heex:29
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete %{name}? This will delete all %{name} type ammo as well!" msgid "Are you sure you want to delete %{name}? This will delete all %{name} type ammo as well!"

View File

@ -19,7 +19,7 @@ msgid "%{name} created successfully"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.ex:72 #: lib/cannery_web/live/ammo_type_live/index.ex:72
#: lib/cannery_web/live/ammo_type_live/show.ex:49 #: lib/cannery_web/live/ammo_type_live/show.ex:27
#: lib/cannery_web/live/tag_live/index.ex:65 #: lib/cannery_web/live/tag_live/index.ex:65
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "%{name} deleted succesfully" msgid "%{name} deleted succesfully"
@ -50,15 +50,15 @@ msgstr ""
msgid "Are you sure you want to delete %{email}? This action is permanent!" msgid "Are you sure you want to delete %{email}? This action is permanent!"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:100 #: lib/cannery_web/live/container_live/index.html.heex:99
#: lib/cannery_web/live/container_live/index.html.heex:156 #: lib/cannery_web/live/container_live/index.html.heex:157
#: lib/cannery_web/live/container_live/show.html.heex:52 #: lib/cannery_web/live/container_live/show.html.heex:45
#: lib/cannery_web/live/tag_live/index.html.heex:64 #: lib/cannery_web/live/tag_live/index.html.heex:63
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete %{name}?" msgid "Are you sure you want to delete %{name}?"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:169 #: lib/cannery_web/live/ammo_group_live/index.html.heex:189
#: lib/cannery_web/live/ammo_group_live/show.html.heex:74 #: lib/cannery_web/live/ammo_group_live/show.html.heex:74
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this ammo?" msgid "Are you sure you want to delete this ammo?"
@ -111,7 +111,7 @@ msgstr ""
#: lib/cannery_web/components/add_shot_group_component.html.heex:59 #: lib/cannery_web/components/add_shot_group_component.html.heex:59
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:85 #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:85
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:181 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:351
#: lib/cannery_web/live/container_live/form_component.html.heex:59 #: lib/cannery_web/live/container_live/form_component.html.heex:59
#: lib/cannery_web/live/invite_live/form_component.html.heex:37 #: lib/cannery_web/live/invite_live/form_component.html.heex:37
#: lib/cannery_web/live/range_live/form_component.html.heex:47 #: lib/cannery_web/live/range_live/form_component.html.heex:47
@ -156,7 +156,7 @@ msgid "Are you sure you want to unstage this ammo?"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:159 #: lib/cannery_web/live/ammo_group_live/show.ex:159
#: lib/cannery_web/live/range_live/index.html.heex:128 #: lib/cannery_web/live/range_live/index.html.heex:152
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this shot record?" msgid "Are you sure you want to delete this shot record?"
msgstr "" msgstr ""
@ -192,8 +192,8 @@ msgstr ""
msgid "%{name} removed successfully" msgid "%{name} removed successfully"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:18 #: lib/cannery_web/live/ammo_group_live/index.html.heex:10
#: lib/cannery_web/live/ammo_group_live/index.html.heex:28 #: lib/cannery_web/live/ammo_group_live/index.html.heex:20
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "You'll need to" msgid "You'll need to"
msgstr "" msgstr ""
@ -236,7 +236,7 @@ msgid_plural "Ammo added successfully"
msgstr[0] "" msgstr[0] ""
msgstr[1] "" msgstr[1] ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:97 #: lib/cannery_web/live/ammo_type_live/index.html.heex:122
#: lib/cannery_web/live/ammo_type_live/show.html.heex:29 #: lib/cannery_web/live/ammo_type_live/show.html.heex:29
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete %{name}? This will delete all %{name} type ammo as well!" msgid "Are you sure you want to delete %{name}? This will delete all %{name} type ammo as well!"

View File

@ -2,7 +2,7 @@ defmodule Cannery.Repo.Migrations.AddLocaleSetting do
use Ecto.Migration use Ecto.Migration
def change do def change do
alter table("users") do alter table(:users) do
add :locale, :string add :locale, :string
end end
end end

View File

@ -0,0 +1,98 @@
defmodule Cannery.Repo.Migrations.AddAmmoTypeTypesAndShotgunFields do
use Ecto.Migration
def change do
alter table(:ammo_types) do
# rifle/shotgun/pistol
add :type, :string, default: "rifle"
add :wadding, :string
# target/bird/buck/slug/special
add :shot_type, :string
add :shot_material, :string
add :shot_size, :string
add :unfired_length, :string
add :brass_height, :string
add :chamber_size, :string
add :load_grains, :integer
add :shot_charge_weight, :string
add :dram_equivalent, :string
end
create index(:ammo_types, [:type])
execute(&add_fields_to_search/0, &remove_fields_from_search/0)
end
defp add_fields_to_search() do
execute """
ALTER TABLE ammo_types
ALTER COLUMN search tsvector
GENERATED ALWAYS AS (
setweight(to_tsvector('english', coalesce("name", '')), 'A') ||
setweight(to_tsvector('english', coalesce("desc", '')), 'B') ||
setweight(to_tsvector('english', coalesce("type", '')), 'B') ||
setweight(to_tsvector('english', coalesce("manufacturer", '')), 'C') ||
setweight(to_tsvector('english', coalesce("upc", '')), 'C') ||
setweight(to_tsvector('english', coalesce("bullet_type", '')), 'D') ||
setweight(to_tsvector('english', coalesce("bullet_core", '')), 'D') ||
setweight(to_tsvector('english', coalesce("cartridge", '')), 'D') ||
setweight(to_tsvector('english', coalesce("caliber", '')), 'D') ||
setweight(to_tsvector('english', coalesce("case_material", '')), 'D') ||
setweight(to_tsvector('english', coalesce("jacket_type", '')), 'D') ||
setweight(to_tsvector('english', immutable_to_string("muzzle_velocity", '')), 'D') ||
setweight(to_tsvector('english', coalesce("powder_type", '')), 'D') ||
setweight(to_tsvector('english', immutable_to_string("powder_grains_per_charge", '')), 'D') ||
setweight(to_tsvector('english', immutable_to_string("grains", '')), 'D') ||
setweight(to_tsvector('english', coalesce("pressure", '')), 'D') ||
setweight(to_tsvector('english', coalesce("primer_type", '')), 'D') ||
setweight(to_tsvector('english', coalesce("firing_type", '')), 'D') ||
setweight(to_tsvector('english', coalesce("wadding", '')), 'D') ||
setweight(to_tsvector('english', coalesce("shot_type", '')), 'D') ||
setweight(to_tsvector('english', coalesce("shot_material", '')), 'D') ||
setweight(to_tsvector('english', coalesce("shot_size", '')), 'D') ||
setweight(to_tsvector('english', coalesce("unfired_length", '')), 'D') ||
setweight(to_tsvector('english', coalesce("brass_height", '')), 'D') ||
setweight(to_tsvector('english', coalesce("chamber_size", '')), 'D') ||
setweight(to_tsvector('english', coalesce("load_grains", '')), 'D') ||
setweight(to_tsvector('english', coalesce("shot_charge_weight,", '')), 'D') ||
setweight(to_tsvector('english', coalesce("dram_equivalent", '')), 'D') ||
setweight(to_tsvector('english', boolean_to_string("tracer", 'tracer', '')), 'D') ||
setweight(to_tsvector('english', boolean_to_string("incendiary", 'incendiary', '')), 'D') ||
setweight(to_tsvector('english', boolean_to_string("blank", 'blank', '')), 'D') ||
setweight(to_tsvector('english', boolean_to_string("corrosive", 'corrosive', '')), 'D')
setwe
) STORED
"""
end
defp remove_fields_from_search() do
execute """
ALTER TABLE ammo_types
ALTER COLUMN search tsvector
GENERATED ALWAYS AS (
setweight(to_tsvector('english', coalesce("name", '')), 'A') ||
setweight(to_tsvector('english', coalesce("desc", '')), 'B') ||
setweight(to_tsvector('english', coalesce("bullet_type", '')), 'C') ||
setweight(to_tsvector('english', coalesce("bullet_core", '')), 'C') ||
setweight(to_tsvector('english', coalesce("cartridge", '')), 'C') ||
setweight(to_tsvector('english', coalesce("caliber", '')), 'C') ||
setweight(to_tsvector('english', coalesce("case_material", '')), 'C') ||
setweight(to_tsvector('english', coalesce("jacket_type", '')), 'C') ||
setweight(to_tsvector('english', immutable_to_string("muzzle_velocity", '')), 'C') ||
setweight(to_tsvector('english', coalesce("powder_type", '')), 'C') ||
setweight(to_tsvector('english', immutable_to_string("powder_grains_per_charge", '')), 'C') ||
setweight(to_tsvector('english', immutable_to_string("grains", '')), 'C') ||
setweight(to_tsvector('english', coalesce("pressure", '')), 'C') ||
setweight(to_tsvector('english', coalesce("primer_type", '')), 'C') ||
setweight(to_tsvector('english', coalesce("firing_type", '')), 'C') ||
setweight(to_tsvector('english', boolean_to_string("tracer", 'tracer', '')), 'C') ||
setweight(to_tsvector('english', boolean_to_string("incendiary", 'incendiary', '')), 'C') ||
setweight(to_tsvector('english', boolean_to_string("blank", 'blank', '')), 'C') ||
setweight(to_tsvector('english', boolean_to_string("corrosive", 'corrosive', '')), 'C') ||
setweight(to_tsvector('english', coalesce("manufacturer", '')), 'D') ||
setweight(to_tsvector('english', coalesce("upc", '')), 'D')
) STORED
"""
end
end

View File

@ -38,50 +38,6 @@ defmodule Cannery.ActivityLogTest do
] ]
end end
test "list_shot_groups/1 returns all shot_groups",
%{shot_group: shot_group, current_user: current_user} do
assert ActivityLog.list_shot_groups(current_user) == [shot_group]
end
test "list_shot_groups/2 returns relevant shot_groups for a user", %{
ammo_type: ammo_type,
ammo_group: ammo_group,
container: container,
current_user: current_user
} do
shot_group_a = shot_group_fixture(%{"notes" => "amazing"}, current_user, ammo_group)
{1, [another_ammo_group]} =
ammo_group_fixture(%{"notes" => "stupendous"}, ammo_type, container, current_user)
shot_group_b = shot_group_fixture(current_user, another_ammo_group)
another_ammo_type = ammo_type_fixture(%{"name" => "fabulous ammo"}, current_user)
{1, [yet_another_ammo_group]} =
ammo_group_fixture(another_ammo_type, container, current_user)
shot_group_c = shot_group_fixture(current_user, yet_another_ammo_group)
random_user = user_fixture()
random_container = container_fixture(random_user)
random_ammo_type = ammo_type_fixture(random_user)
{1, [random_ammo_group]} =
ammo_group_fixture(random_ammo_type, random_container, random_user)
_shouldnt_return = shot_group_fixture(random_user, random_ammo_group)
# notes
assert ActivityLog.list_shot_groups("amazing", current_user) == [shot_group_a]
# ammo group attributes
assert ActivityLog.list_shot_groups("stupendous", current_user) == [shot_group_b]
# ammo type attributes
assert ActivityLog.list_shot_groups("fabulous", current_user) == [shot_group_c]
end
test "get_shot_group!/2 returns the shot_group with given id", test "get_shot_group!/2 returns the shot_group with given id",
%{shot_group: shot_group, current_user: current_user} do %{shot_group: shot_group, current_user: current_user} do
assert ActivityLog.get_shot_group!(shot_group.id, current_user) == shot_group assert ActivityLog.get_shot_group!(shot_group.id, current_user) == shot_group
@ -371,4 +327,99 @@ defmodule Cannery.ActivityLogTest do
assert %{^another_ammo_type_id => 6} = used_counts assert %{^another_ammo_type_id => 6} = used_counts
end end
end end
describe "list_shot_groups/3" do
setup do
current_user = user_fixture()
container = container_fixture(current_user)
ammo_type = ammo_type_fixture(current_user)
{1, [ammo_group]} = ammo_group_fixture(ammo_type, container, current_user)
[
current_user: current_user,
container: container,
ammo_type: ammo_type,
ammo_group: ammo_group
]
end
test "list_shot_groups/3 returns relevant shot_groups for a type",
%{current_user: current_user, container: container} do
other_user = user_fixture()
other_container = container_fixture(other_user)
for type <- ["rifle", "shotgun", "pistol"] do
other_ammo_type = ammo_type_fixture(%{"type" => type}, other_user)
{1, [other_ammo_group]} = ammo_group_fixture(other_ammo_type, other_container, other_user)
shot_group_fixture(other_user, other_ammo_group)
end
rifle_ammo_type = ammo_type_fixture(%{"type" => "rifle"}, current_user)
{1, [rifle_ammo_group]} = ammo_group_fixture(rifle_ammo_type, container, current_user)
rifle_shot_group = shot_group_fixture(current_user, rifle_ammo_group)
shotgun_ammo_type = ammo_type_fixture(%{"type" => "shotgun"}, current_user)
{1, [shotgun_ammo_group]} = ammo_group_fixture(shotgun_ammo_type, container, current_user)
shotgun_shot_group = shot_group_fixture(current_user, shotgun_ammo_group)
pistol_ammo_type = ammo_type_fixture(%{"type" => "pistol"}, current_user)
{1, [pistol_ammo_group]} = ammo_group_fixture(pistol_ammo_type, container, current_user)
pistol_shot_group = shot_group_fixture(current_user, pistol_ammo_group)
assert [^rifle_shot_group] = ActivityLog.list_shot_groups(:rifle, current_user)
assert [^shotgun_shot_group] = ActivityLog.list_shot_groups(:shotgun, current_user)
assert [^pistol_shot_group] = ActivityLog.list_shot_groups(:pistol, current_user)
shot_groups = ActivityLog.list_shot_groups(:all, current_user)
assert Enum.count(shot_groups) == 3
assert rifle_shot_group in shot_groups
assert shotgun_shot_group in shot_groups
assert pistol_shot_group in shot_groups
shot_groups = ActivityLog.list_shot_groups(nil, current_user)
assert Enum.count(shot_groups) == 3
assert rifle_shot_group in shot_groups
assert shotgun_shot_group in shot_groups
assert pistol_shot_group in shot_groups
end
test "list_shot_groups/3 returns relevant shot_groups for a search", %{
ammo_type: ammo_type,
ammo_group: ammo_group,
container: container,
current_user: current_user
} do
shot_group_a = shot_group_fixture(%{"notes" => "amazing"}, current_user, ammo_group)
{1, [another_ammo_group]} =
ammo_group_fixture(%{"notes" => "stupendous"}, ammo_type, container, current_user)
shot_group_b = shot_group_fixture(current_user, another_ammo_group)
another_ammo_type = ammo_type_fixture(%{"name" => "fabulous ammo"}, current_user)
{1, [yet_another_ammo_group]} =
ammo_group_fixture(another_ammo_type, container, current_user)
shot_group_c = shot_group_fixture(current_user, yet_another_ammo_group)
another_user = user_fixture()
another_container = container_fixture(another_user)
another_ammo_type = ammo_type_fixture(another_user)
{1, [another_ammo_group]} =
ammo_group_fixture(another_ammo_type, another_container, another_user)
_shouldnt_return = shot_group_fixture(another_user, another_ammo_group)
# notes
assert ActivityLog.list_shot_groups("amazing", :all, current_user) == [shot_group_a]
# ammo group attributes
assert ActivityLog.list_shot_groups("stupendous", :all, current_user) == [shot_group_b]
# ammo type attributes
assert ActivityLog.list_shot_groups("fabulous", :all, current_user) == [shot_group_c]
end
end
end end

View File

@ -9,54 +9,55 @@ defmodule Cannery.AmmoTest do
@moduletag :ammo_test @moduletag :ammo_test
describe "ammo_types" do @valid_attrs %{
@valid_attrs %{ "bullet_type" => "some bullet_type",
"bullet_type" => "some bullet_type", "case_material" => "some case_material",
"case_material" => "some case_material", "desc" => "some desc",
"desc" => "some desc", "manufacturer" => "some manufacturer",
"manufacturer" => "some manufacturer", "name" => "some name",
"name" => "some name", "grains" => 120
"grains" => 120 }
} @update_attrs %{
@update_attrs %{ "bullet_type" => "some updated bullet_type",
"bullet_type" => "some updated bullet_type", "case_material" => "some updated case_material",
"case_material" => "some updated case_material", "desc" => "some updated desc",
"desc" => "some updated desc", "manufacturer" => "some updated manufacturer",
"manufacturer" => "some updated manufacturer", "name" => "some updated name",
"name" => "some updated name", "grains" => 456
"grains" => 456 }
} @invalid_attrs %{
@invalid_attrs %{ "bullet_type" => nil,
"bullet_type" => nil, "case_material" => nil,
"case_material" => nil, "desc" => nil,
"desc" => nil, "manufacturer" => nil,
"manufacturer" => nil, "name" => nil,
"name" => nil, "grains" => nil
"grains" => nil }
}
describe "list_ammo_types/2" do
setup do setup do
current_user = user_fixture() current_user = user_fixture()
[ammo_type: ammo_type_fixture(current_user), current_user: current_user]
end
test "list_ammo_types/1 returns all ammo_types", rifle_ammo_type =
%{ammo_type: ammo_type, current_user: current_user} do
assert Ammo.list_ammo_types(current_user) == [ammo_type]
end
test "list_ammo_types/2 returns relevant ammo_types for a user",
%{current_user: current_user} do
ammo_type_a =
%{"name" => "bullets", "desc" => "has some pews in it", "grains" => 5}
|> ammo_type_fixture(current_user)
ammo_type_b =
%{"name" => "hollows", "grains" => 3}
|> ammo_type_fixture(current_user)
ammo_type_c =
%{ %{
"name" => "bullets",
"type" => "rifle",
"desc" => "has some pews in it",
"grains" => 5
}
|> ammo_type_fixture(current_user)
shotgun_ammo_type =
%{
"name" => "hollows",
"type" => "shotgun",
"grains" => 3
}
|> ammo_type_fixture(current_user)
pistol_ammo_type =
%{
"type" => "pistol",
"name" => "jackets", "name" => "jackets",
"desc" => "brass shell", "desc" => "brass shell",
"tracer" => true "tracer" => true
@ -70,23 +71,78 @@ defmodule Cannery.AmmoTest do
} }
|> ammo_type_fixture(user_fixture()) |> ammo_type_fixture(user_fixture())
[
rifle_ammo_type: rifle_ammo_type,
shotgun_ammo_type: shotgun_ammo_type,
pistol_ammo_type: pistol_ammo_type,
current_user: current_user
]
end
test "list_ammo_types/2 returns all ammo_types", %{
rifle_ammo_type: rifle_ammo_type,
shotgun_ammo_type: shotgun_ammo_type,
pistol_ammo_type: pistol_ammo_type,
current_user: current_user
} do
results = Ammo.list_ammo_types(current_user, :all)
assert results |> Enum.count() == 3
assert rifle_ammo_type in results
assert shotgun_ammo_type in results
assert pistol_ammo_type in results
end
test "list_ammo_types/2 returns rifle ammo_types", %{
rifle_ammo_type: rifle_ammo_type,
current_user: current_user
} do
assert [^rifle_ammo_type] = Ammo.list_ammo_types(current_user, :rifle)
end
test "list_ammo_types/2 returns shotgun ammo_types", %{
shotgun_ammo_type: shotgun_ammo_type,
current_user: current_user
} do
assert [^shotgun_ammo_type] = Ammo.list_ammo_types(current_user, :shotgun)
end
test "list_ammo_types/2 returns pistol ammo_types", %{
pistol_ammo_type: pistol_ammo_type,
current_user: current_user
} do
assert [^pistol_ammo_type] = Ammo.list_ammo_types(current_user, :pistol)
end
test "list_ammo_types/2 returns relevant ammo_types for a user", %{
rifle_ammo_type: rifle_ammo_type,
shotgun_ammo_type: shotgun_ammo_type,
pistol_ammo_type: pistol_ammo_type,
current_user: current_user
} do
# name # name
assert Ammo.list_ammo_types("bullet", current_user) == [ammo_type_a] assert Ammo.list_ammo_types("bullet", current_user, :all) == [rifle_ammo_type]
assert Ammo.list_ammo_types("bullets", current_user) == [ammo_type_a] assert Ammo.list_ammo_types("bullets", current_user, :all) == [rifle_ammo_type]
assert Ammo.list_ammo_types("hollow", current_user) == [ammo_type_b] assert Ammo.list_ammo_types("hollow", current_user, :all) == [shotgun_ammo_type]
assert Ammo.list_ammo_types("jacket", current_user) == [ammo_type_c] assert Ammo.list_ammo_types("jacket", current_user, :all) == [pistol_ammo_type]
# desc # desc
assert Ammo.list_ammo_types("pew", current_user) == [ammo_type_a] assert Ammo.list_ammo_types("pew", current_user, :all) == [rifle_ammo_type]
assert Ammo.list_ammo_types("brass", current_user) == [ammo_type_c] assert Ammo.list_ammo_types("brass", current_user, :all) == [pistol_ammo_type]
assert Ammo.list_ammo_types("shell", current_user) == [ammo_type_c] assert Ammo.list_ammo_types("shell", current_user, :all) == [pistol_ammo_type]
# grains (integer) # grains (integer)
assert Ammo.list_ammo_types("5", current_user) == [ammo_type_a] assert Ammo.list_ammo_types("5", current_user, :all) == [rifle_ammo_type]
assert Ammo.list_ammo_types("3", current_user) == [ammo_type_b] assert Ammo.list_ammo_types("3", current_user, :all) == [shotgun_ammo_type]
# tracer (boolean) # tracer (boolean)
assert Ammo.list_ammo_types("tracer", current_user) == [ammo_type_c] assert Ammo.list_ammo_types("tracer", current_user, :all) == [pistol_ammo_type]
end
end
describe "ammo types" do
setup do
current_user = user_fixture()
[ammo_type: ammo_type_fixture(current_user), current_user: current_user]
end end
test "get_ammo_type!/2 returns the ammo_type with given id", test "get_ammo_type!/2 returns the ammo_type with given id",
@ -94,6 +150,23 @@ defmodule Cannery.AmmoTest do
assert Ammo.get_ammo_type!(ammo_type.id, current_user) == ammo_type assert Ammo.get_ammo_type!(ammo_type.id, current_user) == ammo_type
end end
test "get_ammo_types_count!/1 returns the correct amount of ammo",
%{current_user: current_user} do
assert Ammo.get_ammo_types_count!(current_user) == 1
ammo_type_fixture(current_user)
assert Ammo.get_ammo_types_count!(current_user) == 2
ammo_type_fixture(current_user)
assert Ammo.get_ammo_types_count!(current_user) == 3
other_user = user_fixture()
assert Ammo.get_ammo_types_count!(other_user) == 0
ammo_type_fixture(other_user)
assert Ammo.get_ammo_types_count!(other_user) == 1
end
test "create_ammo_type/2 with valid data creates a ammo_type", test "create_ammo_type/2 with valid data creates a ammo_type",
%{current_user: current_user} do %{current_user: current_user} do
assert {:ok, %AmmoType{} = ammo_type} = Ammo.create_ammo_type(@valid_attrs, current_user) assert {:ok, %AmmoType{} = ammo_type} = Ammo.create_ammo_type(@valid_attrs, current_user)
@ -653,32 +726,85 @@ defmodule Cannery.AmmoTest do
] ]
end end
test "list_ammo_groups/3 returns all ammo_groups", test "get_ammo_groups_count!/2 returns the correct amount of ammo",
%{ %{ammo_type: ammo_type, container: container, current_user: current_user} do
ammo_type: ammo_type, assert Ammo.get_ammo_groups_count!(current_user) == 1
ammo_group: ammo_group,
container: container, ammo_group_fixture(ammo_type, container, current_user)
current_user: current_user assert Ammo.get_ammo_groups_count!(current_user) == 2
} do
ammo_group_fixture(ammo_type, container, current_user)
assert Ammo.get_ammo_groups_count!(current_user) == 3
other_user = user_fixture()
assert Ammo.get_ammo_groups_count!(other_user) == 0
assert Ammo.get_ammo_groups_count!(other_user, true) == 0
other_ammo_type = ammo_type_fixture(other_user)
other_container = container_fixture(other_user)
{1, [another_ammo_group]} =
ammo_group_fixture(%{"count" => 30}, other_ammo_type, other_container, other_user)
shot_group_fixture(%{"count" => 30}, other_user, another_ammo_group)
assert Ammo.get_ammo_groups_count!(other_user) == 0
assert Ammo.get_ammo_groups_count!(other_user, true) == 1
end
test "list_ammo_groups/4 returns all ammo_groups for a type" do
current_user = user_fixture()
container = container_fixture(current_user)
rifle_ammo_type = ammo_type_fixture(%{"type" => "rifle"}, current_user)
{1, [rifle_ammo_group]} = ammo_group_fixture(rifle_ammo_type, container, current_user)
shotgun_ammo_type = ammo_type_fixture(%{"type" => "shotgun"}, current_user)
{1, [shotgun_ammo_group]} = ammo_group_fixture(shotgun_ammo_type, container, current_user)
pistol_ammo_type = ammo_type_fixture(%{"type" => "pistol"}, current_user)
{1, [pistol_ammo_group]} = ammo_group_fixture(pistol_ammo_type, container, current_user)
assert [^rifle_ammo_group] = Ammo.list_ammo_groups(nil, :rifle, current_user, false)
assert [^shotgun_ammo_group] = Ammo.list_ammo_groups(nil, :shotgun, current_user, false)
assert [^pistol_ammo_group] = Ammo.list_ammo_groups(nil, :pistol, current_user, false)
ammo_groups = Ammo.list_ammo_groups(nil, :all, current_user, false)
assert Enum.count(ammo_groups) == 3
assert rifle_ammo_group in ammo_groups
assert shotgun_ammo_group in ammo_groups
assert pistol_ammo_group in ammo_groups
ammo_groups = Ammo.list_ammo_groups(nil, nil, current_user, false)
assert Enum.count(ammo_groups) == 3
assert rifle_ammo_group in ammo_groups
assert shotgun_ammo_group in ammo_groups
assert pistol_ammo_group in ammo_groups
end
test "list_ammo_groups/4 returns all relevant ammo_groups including used", %{
ammo_type: ammo_type,
ammo_group: ammo_group,
container: container,
current_user: current_user
} do
{1, [%{id: another_ammo_group_id} = another_ammo_group]} = {1, [%{id: another_ammo_group_id} = another_ammo_group]} =
ammo_group_fixture(%{"count" => 30}, ammo_type, container, current_user) ammo_group_fixture(%{"count" => 30}, ammo_type, container, current_user)
shot_group_fixture(%{"count" => 30}, current_user, another_ammo_group) shot_group_fixture(%{"count" => 30}, current_user, another_ammo_group)
another_ammo_group = Ammo.get_ammo_group!(another_ammo_group_id, current_user) another_ammo_group = Ammo.get_ammo_group!(another_ammo_group_id, current_user)
assert Ammo.list_ammo_groups(nil, false, current_user) == [ammo_group] assert Ammo.list_ammo_groups(nil, :all, current_user, false) == [ammo_group]
assert Ammo.list_ammo_groups(nil, true, current_user) ammo_groups = Ammo.list_ammo_groups(nil, :all, current_user, true)
|> Enum.sort_by(fn %{count: count} -> count end) == [another_ammo_group, ammo_group] assert Enum.count(ammo_groups) == 2
assert another_ammo_group in ammo_groups
assert ammo_group in ammo_groups
end end
test "list_ammo_groups/3 returns relevant ammo groups when searched", test "list_ammo_groups/4 returns relevant ammo groups when searched", %{
%{ ammo_type: ammo_type,
ammo_type: ammo_type, ammo_group: ammo_group,
ammo_group: ammo_group, container: container,
container: container, current_user: current_user
current_user: current_user } do
} do
{1, [another_ammo_group]} = {1, [another_ammo_group]} =
%{"count" => 49, "notes" => "cool ammo group"} %{"count" => 49, "notes" => "cool ammo group"}
|> ammo_group_fixture(ammo_type, container, current_user) |> ammo_group_fixture(ammo_type, container, current_user)
@ -695,49 +821,80 @@ defmodule Cannery.AmmoTest do
{1, [fantastic_ammo_group]} = {1, [fantastic_ammo_group]} =
ammo_group_fixture(%{"count" => 47}, ammo_type, another_container, current_user) ammo_group_fixture(%{"count" => 47}, ammo_type, another_container, current_user)
assert Ammo.list_ammo_groups(nil, false, current_user) ammo_groups = Ammo.list_ammo_groups(nil, :all, current_user, false)
|> Enum.sort_by(fn %{count: count} -> count end) == assert Enum.count(ammo_groups) == 4
[fantastic_ammo_group, amazing_ammo_group, another_ammo_group, ammo_group] assert fantastic_ammo_group in ammo_groups
assert amazing_ammo_group in ammo_groups
assert another_ammo_group in ammo_groups
assert ammo_group in ammo_groups
# search works for ammo group attributes # search works for ammo group attributes
assert Ammo.list_ammo_groups("cool", true, current_user) == [another_ammo_group] assert Ammo.list_ammo_groups("cool", :all, current_user, true) == [another_ammo_group]
# search works for ammo type attributes # search works for ammo type attributes
assert Ammo.list_ammo_groups("amazing", true, current_user) == [amazing_ammo_group] assert Ammo.list_ammo_groups("amazing", :all, current_user, true) == [amazing_ammo_group]
# search works for container attributes # search works for container attributes
assert Ammo.list_ammo_groups("fantastic", true, current_user) == [fantastic_ammo_group] assert Ammo.list_ammo_groups("fantastic", :all, current_user, true) ==
[fantastic_ammo_group]
# search works for container tag attributes # search works for container tag attributes
assert Ammo.list_ammo_groups("stupendous", true, current_user) == [fantastic_ammo_group] assert Ammo.list_ammo_groups("stupendous", :all, current_user, true) ==
[fantastic_ammo_group]
assert Ammo.list_ammo_groups("random", true, current_user) == [] assert Ammo.list_ammo_groups("random", :all, current_user, true) == []
end end
test "list_ammo_groups_for_type/2 returns all ammo_groups for a type", test "list_ammo_groups_for_type/3 returns all ammo_groups for a type", %{
%{ container: container,
ammo_type: ammo_type, current_user: current_user
container: container, } do
ammo_group: ammo_group, ammo_type = ammo_type_fixture(current_user)
current_user: current_user {1, [ammo_group]} = ammo_group_fixture(ammo_type, container, current_user)
} do assert [^ammo_group] = Ammo.list_ammo_groups_for_type(ammo_type, current_user)
another_ammo_type = ammo_type_fixture(current_user)
{1, [_another]} = ammo_group_fixture(another_ammo_type, container, current_user)
assert Ammo.list_ammo_groups_for_type(ammo_type, current_user) == [ammo_group] shot_group_fixture(current_user, ammo_group)
ammo_group = Ammo.get_ammo_group!(ammo_group.id, current_user)
assert [] == Ammo.list_ammo_groups_for_type(ammo_type, current_user)
assert [^ammo_group] = Ammo.list_ammo_groups_for_type(ammo_type, current_user, true)
end end
test "list_ammo_groups_for_container/2 returns all ammo_groups for a container", test "list_ammo_groups_for_container/3 returns all ammo_groups for a container" do
%{ current_user = user_fixture()
ammo_type: ammo_type, container = container_fixture(current_user)
container: container,
ammo_group: ammo_group, rifle_ammo_type = ammo_type_fixture(%{"type" => "rifle"}, current_user)
current_user: current_user {1, [rifle_ammo_group]} = ammo_group_fixture(rifle_ammo_type, container, current_user)
} do shotgun_ammo_type = ammo_type_fixture(%{"type" => "shotgun"}, current_user)
{1, [shotgun_ammo_group]} = ammo_group_fixture(shotgun_ammo_type, container, current_user)
pistol_ammo_type = ammo_type_fixture(%{"type" => "pistol"}, current_user)
{1, [pistol_ammo_group]} = ammo_group_fixture(pistol_ammo_type, container, current_user)
another_container = container_fixture(current_user) another_container = container_fixture(current_user)
{1, [_another]} = ammo_group_fixture(ammo_type, another_container, current_user) ammo_group_fixture(rifle_ammo_type, another_container, current_user)
ammo_group_fixture(shotgun_ammo_type, another_container, current_user)
ammo_group_fixture(pistol_ammo_type, another_container, current_user)
assert Ammo.list_ammo_groups_for_container(container, current_user) == [ammo_group] assert [^rifle_ammo_group] =
Ammo.list_ammo_groups_for_container(container, :rifle, current_user)
assert [^shotgun_ammo_group] =
Ammo.list_ammo_groups_for_container(container, :shotgun, current_user)
assert [^pistol_ammo_group] =
Ammo.list_ammo_groups_for_container(container, :pistol, current_user)
ammo_groups = Ammo.list_ammo_groups_for_container(container, :all, current_user)
assert Enum.count(ammo_groups) == 3
assert rifle_ammo_group in ammo_groups
assert shotgun_ammo_group in ammo_groups
assert pistol_ammo_group in ammo_groups
ammo_groups = Ammo.list_ammo_groups_for_container(container, nil, current_user)
assert Enum.count(ammo_groups) == 3
assert rifle_ammo_group in ammo_groups
assert shotgun_ammo_group in ammo_groups
assert pistol_ammo_group in ammo_groups
end end
test "get_ammo_groups_count_for_type/2 returns count of ammo_groups for a type", %{ test "get_ammo_groups_count_for_type/2 returns count of ammo_groups for a type", %{
@ -785,12 +942,11 @@ defmodule Cannery.AmmoTest do
assert %{^another_ammo_type_id => 1} = ammo_groups_count assert %{^another_ammo_type_id => 1} = ammo_groups_count
end end
test "list_staged_ammo_groups/1 returns all ammo_groups that are staged", test "list_staged_ammo_groups/1 returns all ammo_groups that are staged", %{
%{ ammo_type: ammo_type,
ammo_type: ammo_type, container: container,
container: container, current_user: current_user
current_user: current_user } do
} do
{1, [another_ammo_group]} = {1, [another_ammo_group]} =
ammo_group_fixture(%{"staged" => true}, ammo_type, container, current_user) ammo_group_fixture(%{"staged" => true}, ammo_type, container, current_user)
@ -816,12 +972,11 @@ defmodule Cannery.AmmoTest do
assert %{^another_ammo_group_id => ^another_ammo_group} = ammo_groups assert %{^another_ammo_group_id => ^another_ammo_group} = ammo_groups
end end
test "create_ammo_groups/3 with valid data creates a ammo_group", test "create_ammo_groups/3 with valid data creates a ammo_group", %{
%{ ammo_type: ammo_type,
ammo_type: ammo_type, container: container,
container: container, current_user: current_user
current_user: current_user } do
} do
assert {:ok, {1, [%AmmoGroup{} = ammo_group]}} = assert {:ok, {1, [%AmmoGroup{} = ammo_group]}} =
@valid_attrs @valid_attrs
|> Map.merge(%{"ammo_type_id" => ammo_type.id, "container_id" => container.id}) |> Map.merge(%{"ammo_type_id" => ammo_type.id, "container_id" => container.id})
@ -832,12 +987,11 @@ defmodule Cannery.AmmoTest do
assert ammo_group.price_paid == 120.5 assert ammo_group.price_paid == 120.5
end end
test "create_ammo_groups/3 with valid data creates multiple ammo_groups", test "create_ammo_groups/3 with valid data creates multiple ammo_groups", %{
%{ ammo_type: ammo_type,
ammo_type: ammo_type, container: container,
container: container, current_user: current_user
current_user: current_user } do
} do
assert {:ok, {3, ammo_groups}} = assert {:ok, {3, ammo_groups}} =
@valid_attrs @valid_attrs
|> Map.merge(%{"ammo_type_id" => ammo_type.id, "container_id" => container.id}) |> Map.merge(%{"ammo_type_id" => ammo_type.id, "container_id" => container.id})

View File

@ -66,6 +66,60 @@ defmodule CanneryWeb.AmmoGroupLiveTest do
assert html =~ ammo_group.ammo_type.name assert html =~ ammo_group.ammo_type.name
end end
test "can sort by type",
%{conn: conn, container: container, current_user: current_user} do
rifle_type = ammo_type_fixture(%{"type" => "rifle"}, current_user)
{1, [rifle_ammo_group]} = ammo_group_fixture(rifle_type, container, current_user)
shotgun_type = ammo_type_fixture(%{"type" => "shotgun"}, current_user)
{1, [shotgun_ammo_group]} = ammo_group_fixture(shotgun_type, container, current_user)
pistol_type = ammo_type_fixture(%{"type" => "pistol"}, current_user)
{1, [pistol_ammo_group]} = ammo_group_fixture(pistol_type, container, current_user)
{:ok, index_live, html} = live(conn, Routes.ammo_group_index_path(conn, :index))
assert html =~ "All"
assert html =~ rifle_ammo_group.ammo_type.name
assert html =~ shotgun_ammo_group.ammo_type.name
assert html =~ pistol_ammo_group.ammo_type.name
html =
index_live
|> form(~s/form[phx-change="change_type"]/)
|> render_change(ammo_type: %{type: :rifle})
assert html =~ rifle_ammo_group.ammo_type.name
refute html =~ shotgun_ammo_group.ammo_type.name
refute html =~ pistol_ammo_group.ammo_type.name
html =
index_live
|> form(~s/form[phx-change="change_type"]/)
|> render_change(ammo_type: %{type: :shotgun})
refute html =~ rifle_ammo_group.ammo_type.name
assert html =~ shotgun_ammo_group.ammo_type.name
refute html =~ pistol_ammo_group.ammo_type.name
html =
index_live
|> form(~s/form[phx-change="change_type"]/)
|> render_change(ammo_type: %{type: :pistol})
refute html =~ rifle_ammo_group.ammo_type.name
refute html =~ shotgun_ammo_group.ammo_type.name
assert html =~ pistol_ammo_group.ammo_type.name
html =
index_live
|> form(~s/form[phx-change="change_type"]/)
|> render_change(ammo_type: %{type: :all})
assert html =~ rifle_ammo_group.ammo_type.name
assert html =~ shotgun_ammo_group.ammo_type.name
assert html =~ pistol_ammo_group.ammo_type.name
end
test "can search for ammo_groups", %{conn: conn, ammo_group: ammo_group} do test "can search for ammo_groups", %{conn: conn, ammo_group: ammo_group} do
{:ok, index_live, html} = live(conn, Routes.ammo_group_index_path(conn, :index)) {:ok, index_live, html} = live(conn, Routes.ammo_group_index_path(conn, :index))
@ -142,7 +196,7 @@ defmodule CanneryWeb.AmmoGroupLiveTest do
|> follow_redirect(conn, Routes.ammo_group_index_path(conn, :index)) |> follow_redirect(conn, Routes.ammo_group_index_path(conn, :index))
assert html =~ dgettext("prompts", "Ammo added successfully") assert html =~ dgettext("prompts", "Ammo added successfully")
assert Ammo.list_ammo_groups(nil, false, current_user) |> Enum.count() == multiplier + 1 assert Ammo.list_ammo_groups(nil, :all, current_user) |> Enum.count() == multiplier + 1
end end
test "does not save invalid number of new ammo_groups", %{conn: conn} do test "does not save invalid number of new ammo_groups", %{conn: conn} do

View File

@ -74,28 +74,77 @@ defmodule CanneryWeb.AmmoTypeLiveTest do
assert html =~ ammo_type.bullet_type assert html =~ ammo_type.bullet_type
end end
test "can sort by type", %{conn: conn, current_user: current_user} do
rifle_type = ammo_type_fixture(%{"type" => "rifle"}, current_user)
shotgun_type = ammo_type_fixture(%{"type" => "shotgun"}, current_user)
pistol_type = ammo_type_fixture(%{"type" => "pistol"}, current_user)
{:ok, index_live, html} = live(conn, Routes.ammo_type_index_path(conn, :index))
assert html =~ "All"
assert html =~ rifle_type.name
assert html =~ shotgun_type.name
assert html =~ pistol_type.name
html =
index_live
|> form(~s/form[phx-change="change_type"]/)
|> render_change(ammo_type: %{type: :rifle})
assert html =~ rifle_type.name
refute html =~ shotgun_type.name
refute html =~ pistol_type.name
html =
index_live
|> form(~s/form[phx-change="change_type"]/)
|> render_change(ammo_type: %{type: :shotgun})
refute html =~ rifle_type.name
assert html =~ shotgun_type.name
refute html =~ pistol_type.name
html =
index_live
|> form(~s/form[phx-change="change_type"]/)
|> render_change(ammo_type: %{type: :pistol})
refute html =~ rifle_type.name
refute html =~ shotgun_type.name
assert html =~ pistol_type.name
html =
index_live
|> form(~s/form[phx-change="change_type"]/)
|> render_change(ammo_type: %{type: :all})
assert html =~ rifle_type.name
assert html =~ shotgun_type.name
assert html =~ pistol_type.name
end
test "can search for ammo_type", %{conn: conn, ammo_type: ammo_type} do test "can search for ammo_type", %{conn: conn, ammo_type: ammo_type} do
{:ok, index_live, html} = live(conn, Routes.ammo_type_index_path(conn, :index)) {:ok, index_live, html} = live(conn, Routes.ammo_type_index_path(conn, :index))
assert html =~ ammo_type.bullet_type assert html =~ ammo_type.bullet_type
assert index_live assert index_live
|> form(~s/form[phx-change="search"]/, |> form(~s/form[phx-change="search"]/)
search: %{search_term: ammo_type.bullet_type} |> render_change(search: %{search_term: ammo_type.bullet_type}) =~
) ammo_type.bullet_type
|> render_change() =~ ammo_type.bullet_type
assert_patch(index_live, Routes.ammo_type_index_path(conn, :search, ammo_type.bullet_type)) assert_patch(index_live, Routes.ammo_type_index_path(conn, :search, ammo_type.bullet_type))
refute index_live refute index_live
|> form(~s/form[phx-change="search"]/, search: %{search_term: "something_else"}) |> form(~s/form[phx-change="search"]/)
|> render_change() =~ ammo_type.bullet_type |> render_change(search: %{search_term: "something_else"}) =~ ammo_type.bullet_type
assert_patch(index_live, Routes.ammo_type_index_path(conn, :search, "something_else")) assert_patch(index_live, Routes.ammo_type_index_path(conn, :search, "something_else"))
assert index_live assert index_live
|> form(~s/form[phx-change="search"]/, search: %{search_term: ""}) |> form(~s/form[phx-change="search"]/)
|> render_change() =~ ammo_type.bullet_type |> render_change(search: %{search_term: ""}) =~ ammo_type.bullet_type
assert_patch(index_live, Routes.ammo_type_index_path(conn, :index)) assert_patch(index_live, Routes.ammo_type_index_path(conn, :index))
end end
@ -114,8 +163,8 @@ defmodule CanneryWeb.AmmoTypeLiveTest do
{:ok, _view, html} = {:ok, _view, html} =
index_live index_live
|> form("#ammo_type-form", ammo_type: @create_attrs) |> form("#ammo_type-form")
|> render_submit() |> render_submit(ammo_type: @create_attrs)
|> follow_redirect(conn, Routes.ammo_type_index_path(conn, :index)) |> follow_redirect(conn, Routes.ammo_type_index_path(conn, :index))
ammo_type = ammo_type.id |> Ammo.get_ammo_type!(current_user) ammo_type = ammo_type.id |> Ammo.get_ammo_type!(current_user)
@ -138,8 +187,8 @@ defmodule CanneryWeb.AmmoTypeLiveTest do
{:ok, _view, html} = {:ok, _view, html} =
index_live index_live
|> form("#ammo_type-form", ammo_type: @update_attrs) |> form("#ammo_type-form")
|> render_submit() |> render_submit(ammo_type: @update_attrs)
|> follow_redirect(conn, Routes.ammo_type_index_path(conn, :index)) |> follow_redirect(conn, Routes.ammo_type_index_path(conn, :index))
ammo_type = ammo_type.id |> Ammo.get_ammo_type!(current_user) ammo_type = ammo_type.id |> Ammo.get_ammo_type!(current_user)
@ -163,8 +212,8 @@ defmodule CanneryWeb.AmmoTypeLiveTest do
{:ok, _view, html} = {:ok, _view, html} =
index_live index_live
|> form("#ammo_type-form", ammo_type: @create_attrs) |> form("#ammo_type-form")
|> render_submit() |> render_submit(ammo_type: @create_attrs)
|> follow_redirect(conn, Routes.ammo_type_index_path(conn, :index)) |> follow_redirect(conn, Routes.ammo_type_index_path(conn, :index))
ammo_type = ammo_type.id |> Ammo.get_ammo_type!(current_user) ammo_type = ammo_type.id |> Ammo.get_ammo_type!(current_user)
@ -188,10 +237,10 @@ defmodule CanneryWeb.AmmoTypeLiveTest do
{:ok, _view, html} = {:ok, _view, html} =
index_live index_live
|> form("#ammo_type-form", |> form("#ammo_type-form")
|> render_submit(
ammo_type: Map.merge(@create_attrs, %{"bullet_type" => "some updated bullet_type"}) ammo_type: Map.merge(@create_attrs, %{"bullet_type" => "some updated bullet_type"})
) )
|> render_submit()
|> follow_redirect(conn, Routes.ammo_type_index_path(conn, :index)) |> follow_redirect(conn, Routes.ammo_type_index_path(conn, :index))
ammo_type = ammo_type.id |> Ammo.get_ammo_type!(current_user) ammo_type = ammo_type.id |> Ammo.get_ammo_type!(current_user)
@ -276,8 +325,8 @@ defmodule CanneryWeb.AmmoTypeLiveTest do
{:ok, _view, html} = {:ok, _view, html} =
show_live show_live
|> form("#ammo_type-form", ammo_type: @update_attrs) |> form("#ammo_type-form")
|> render_submit() |> render_submit(ammo_type: @update_attrs)
|> follow_redirect(conn, Routes.ammo_type_show_path(conn, :show, ammo_type)) |> follow_redirect(conn, Routes.ammo_type_show_path(conn, :show, ammo_type))
ammo_type = ammo_type.id |> Ammo.get_ammo_type!(current_user) ammo_type = ammo_type.id |> Ammo.get_ammo_type!(current_user)

View File

@ -6,7 +6,7 @@ defmodule CanneryWeb.ContainerLiveTest do
use CanneryWeb.ConnCase use CanneryWeb.ConnCase
import Phoenix.LiveViewTest import Phoenix.LiveViewTest
import CanneryWeb.Gettext import CanneryWeb.Gettext
alias Cannery.{Containers, Repo} alias Cannery.Containers
@moduletag :container_live_test @moduletag :container_live_test
@ -34,10 +34,6 @@ defmodule CanneryWeb.ContainerLiveTest do
"notes" => "some ammo group", "notes" => "some ammo group",
"count" => 20 "count" => 20
} }
@shot_group_attrs %{
"notes" => "some shot group",
"count" => 20
}
# @invalid_attrs %{desc: nil, location: nil, name: nil, type: nil} # @invalid_attrs %{desc: nil, location: nil, name: nil, type: nil}
@ -53,15 +49,6 @@ defmodule CanneryWeb.ContainerLiveTest do
%{ammo_type: ammo_type, ammo_group: ammo_group} %{ammo_type: ammo_type, ammo_group: ammo_group}
end end
defp create_empty_ammo_group(%{container: container, current_user: current_user}) do
ammo_type = ammo_type_fixture(@ammo_type_attrs, current_user)
{1, [ammo_group]} = ammo_group_fixture(@ammo_group_attrs, ammo_type, container, current_user)
shot_group = shot_group_fixture(@shot_group_attrs, current_user, ammo_group)
ammo_group = ammo_group |> Repo.reload!()
%{ammo_type: ammo_type, ammo_group: ammo_group, shot_group: shot_group}
end
describe "Index" do describe "Index" do
setup [:register_and_log_in_user, :create_container] setup [:register_and_log_in_user, :create_container]
@ -263,6 +250,60 @@ defmodule CanneryWeb.ContainerLiveTest do
assert html =~ dgettext("prompts", "%{name} updated successfully", name: container.name) assert html =~ dgettext("prompts", "%{name} updated successfully", name: container.name)
assert html =~ "some updated location" assert html =~ "some updated location"
end end
test "can sort by type",
%{conn: conn, container: container, current_user: current_user} do
rifle_type = ammo_type_fixture(%{"type" => "rifle"}, current_user)
{1, [rifle_ammo_group]} = ammo_group_fixture(rifle_type, container, current_user)
shotgun_type = ammo_type_fixture(%{"type" => "shotgun"}, current_user)
{1, [shotgun_ammo_group]} = ammo_group_fixture(shotgun_type, container, current_user)
pistol_type = ammo_type_fixture(%{"type" => "pistol"}, current_user)
{1, [pistol_ammo_group]} = ammo_group_fixture(pistol_type, container, current_user)
{:ok, index_live, html} = live(conn, Routes.container_show_path(conn, :show, container))
assert html =~ "All"
assert html =~ rifle_ammo_group.ammo_type.name
assert html =~ shotgun_ammo_group.ammo_type.name
assert html =~ pistol_ammo_group.ammo_type.name
html =
index_live
|> form(~s/form[phx-change="change_type"]/)
|> render_change(ammo_type: %{type: :rifle})
assert html =~ rifle_ammo_group.ammo_type.name
refute html =~ shotgun_ammo_group.ammo_type.name
refute html =~ pistol_ammo_group.ammo_type.name
html =
index_live
|> form(~s/form[phx-change="change_type"]/)
|> render_change(ammo_type: %{type: :shotgun})
refute html =~ rifle_ammo_group.ammo_type.name
assert html =~ shotgun_ammo_group.ammo_type.name
refute html =~ pistol_ammo_group.ammo_type.name
html =
index_live
|> form(~s/form[phx-change="change_type"]/)
|> render_change(ammo_type: %{type: :pistol})
refute html =~ rifle_ammo_group.ammo_type.name
refute html =~ shotgun_ammo_group.ammo_type.name
assert html =~ pistol_ammo_group.ammo_type.name
html =
index_live
|> form(~s/form[phx-change="change_type"]/)
|> render_change(ammo_type: %{type: :all})
assert html =~ rifle_ammo_group.ammo_type.name
assert html =~ shotgun_ammo_group.ammo_type.name
assert html =~ pistol_ammo_group.ammo_type.name
end
end end
describe "Show with ammo group" do describe "Show with ammo group" do
@ -289,47 +330,4 @@ defmodule CanneryWeb.ContainerLiveTest do
assert html =~ "\n20\n" assert html =~ "\n20\n"
end end
end end
describe "Show with empty ammo group" do
setup [:register_and_log_in_user, :create_container, :create_empty_ammo_group]
test "hides empty ammo groups by default",
%{conn: conn, ammo_type: %{name: ammo_type_name}, container: container} do
{:ok, show_live, html} = live(conn, Routes.container_show_path(conn, :show, container))
assert html =~ dgettext("actions", "Show used")
refute html =~ "\n20\n"
html =
show_live
|> element(~s/input[type="checkbox"][aria-labelledby="toggle_show_used-label"}]/)
|> render_click()
assert html =~ ammo_type_name
assert html =~ "\n20\n"
assert html =~ "Empty"
end
test "displays empty ammo groups in table on toggle",
%{conn: conn, ammo_type: %{name: ammo_type_name}, container: container} do
{:ok, show_live, _html} = live(conn, Routes.container_show_path(conn, :show, container))
html =
show_live
|> element(~s/input[type="checkbox"][aria-labelledby="toggle_table-label"}]/)
|> render_click()
assert html =~ dgettext("actions", "Show used")
refute html =~ "\n20\n"
html =
show_live
|> element(~s/input[type="checkbox"][aria-labelledby="toggle_show_used-label"}]/)
|> render_click()
assert html =~ ammo_type_name
assert html =~ "\n20\n"
assert html =~ "Empty"
end
end
end end

View File

@ -24,7 +24,12 @@ defmodule CanneryWeb.RangeLiveTest do
%{"count" => 5, "date" => ~N[2022-02-13 03:17:00], "notes" => "some notes"} %{"count" => 5, "date" => ~N[2022-02-13 03:17:00], "notes" => "some notes"}
|> shot_group_fixture(current_user, ammo_group) |> shot_group_fixture(current_user, ammo_group)
%{shot_group: shot_group, ammo_group: ammo_group} [
container: container,
ammo_type: ammo_type,
ammo_group: ammo_group,
shot_group: shot_group
]
end end
describe "Index" do describe "Index" do
@ -37,6 +42,71 @@ defmodule CanneryWeb.RangeLiveTest do
assert html =~ shot_group.notes assert html =~ shot_group.notes
end end
test "can sort by type",
%{conn: conn, container: container, current_user: current_user} do
rifle_ammo_type = ammo_type_fixture(%{"type" => "rifle"}, current_user)
{1, [rifle_ammo_group]} = ammo_group_fixture(rifle_ammo_type, container, current_user)
rifle_shot_group =
shot_group_fixture(%{"notes" => "group_one"}, current_user, rifle_ammo_group)
shotgun_ammo_type = ammo_type_fixture(%{"type" => "shotgun"}, current_user)
{1, [shotgun_ammo_group]} = ammo_group_fixture(shotgun_ammo_type, container, current_user)
shotgun_shot_group =
shot_group_fixture(%{"notes" => "group_two"}, current_user, shotgun_ammo_group)
pistol_ammo_type = ammo_type_fixture(%{"type" => "pistol"}, current_user)
{1, [pistol_ammo_group]} = ammo_group_fixture(pistol_ammo_type, container, current_user)
pistol_shot_group =
shot_group_fixture(%{"notes" => "group_three"}, current_user, pistol_ammo_group)
{:ok, index_live, html} = live(conn, Routes.range_index_path(conn, :index))
assert html =~ "All"
assert html =~ rifle_shot_group.notes
assert html =~ shotgun_shot_group.notes
assert html =~ pistol_shot_group.notes
html =
index_live
|> form(~s/form[phx-change="change_type"]/)
|> render_change(ammo_type: %{type: :rifle})
assert html =~ rifle_shot_group.notes
refute html =~ shotgun_shot_group.notes
refute html =~ pistol_shot_group.notes
html =
index_live
|> form(~s/form[phx-change="change_type"]/)
|> render_change(ammo_type: %{type: :shotgun})
refute html =~ rifle_shot_group.notes
assert html =~ shotgun_shot_group.notes
refute html =~ pistol_shot_group.notes
html =
index_live
|> form(~s/form[phx-change="change_type"]/)
|> render_change(ammo_type: %{type: :pistol})
refute html =~ rifle_shot_group.notes
refute html =~ shotgun_shot_group.notes
assert html =~ pistol_shot_group.notes
html =
index_live
|> form(~s/form[phx-change="change_type"]/)
|> render_change(ammo_type: %{type: :all})
assert html =~ rifle_shot_group.notes
assert html =~ shotgun_shot_group.notes
assert html =~ pistol_shot_group.notes
end
test "can search for shot_group", %{conn: conn, shot_group: shot_group} do test "can search for shot_group", %{conn: conn, shot_group: shot_group} do
{:ok, index_live, html} = live(conn, Routes.range_index_path(conn, :index)) {:ok, index_live, html} = live(conn, Routes.range_index_path(conn, :index))

View File

@ -26,7 +26,7 @@ defmodule CanneryWeb.ConnCase do
import Plug.Conn import Plug.Conn
import Phoenix.ConnTest import Phoenix.ConnTest
# credo:disable-for-next-line Credo.Check.Consistency.MultiAliasImportRequireUse # credo:disable-for-next-line Credo.Check.Consistency.MultiAliasImportRequireUse
import Cannery.Fixtures import Cannery.{DataCase, Fixtures}
import CanneryWeb.ConnCase import CanneryWeb.ConnCase
alias CanneryWeb.Router.Helpers, as: Routes alias CanneryWeb.Router.Helpers, as: Routes

View File

@ -48,4 +48,15 @@ defmodule Cannery.DataCase do
end) end)
end) end)
end end
@doc """
Generates a random string of any length, default of 12
"""
@spec random_string(length :: non_neg_integer()) :: String.t()
def random_string(length \\ 12) do
:crypto.strong_rand_bytes(length) |> Base.url_encode64() |> binary_part(0, length)
end
def unique_user_email, do: "user#{System.unique_integer()}@example.com"
def valid_user_password, do: "hello world!"
end end

View File

@ -3,6 +3,8 @@ defmodule Cannery.Fixtures do
This module defines test helpers for creating entities This module defines test helpers for creating entities
""" """
import Cannery.DataCase
alias Cannery.{ alias Cannery.{
Accounts, Accounts,
Accounts.User, Accounts.User,
@ -17,9 +19,6 @@ defmodule Cannery.Fixtures do
Repo Repo
} }
def unique_user_email, do: "user#{System.unique_integer()}@example.com"
def valid_user_password, do: "hello world!"
@spec user_fixture() :: User.t() @spec user_fixture() :: User.t()
@spec user_fixture(attrs :: map()) :: User.t() @spec user_fixture(attrs :: map()) :: User.t()
def user_fixture(attrs \\ %{}) do def user_fixture(attrs \\ %{}) do
@ -79,7 +78,7 @@ defmodule Cannery.Fixtures do
|> Enum.into(%{ |> Enum.into(%{
"count" => 20, "count" => 20,
"date" => ~N[2022-02-13 03:17:00], "date" => ~N[2022-02-13 03:17:00],
"notes" => "some notes" "notes" => random_string()
}) })
|> Cannery.ActivityLog.create_shot_group(user, ammo_group) |> Cannery.ActivityLog.create_shot_group(user, ammo_group)
|> unwrap_ok_tuple() |> unwrap_ok_tuple()
@ -92,7 +91,7 @@ defmodule Cannery.Fixtures do
@spec container_fixture(attrs :: map(), User.t()) :: Container.t() @spec container_fixture(attrs :: map(), User.t()) :: Container.t()
def container_fixture(attrs \\ %{}, %User{} = user) do def container_fixture(attrs \\ %{}, %User{} = user) do
attrs attrs
|> Enum.into(%{"name" => "My container", "type" => "Ammo can"}) |> Enum.into(%{"name" => random_string(), "type" => "Ammo can"})
|> Containers.create_container(user) |> Containers.create_container(user)
|> unwrap_ok_tuple() |> unwrap_ok_tuple()
end end
@ -104,7 +103,7 @@ defmodule Cannery.Fixtures do
@spec ammo_type_fixture(attrs :: map(), User.t()) :: AmmoType.t() @spec ammo_type_fixture(attrs :: map(), User.t()) :: AmmoType.t()
def ammo_type_fixture(attrs \\ %{}, %User{} = user) do def ammo_type_fixture(attrs \\ %{}, %User{} = user) do
attrs attrs
|> Enum.into(%{"name" => "ammo_type"}) |> Enum.into(%{"name" => random_string(), "type" => "rifle"})
|> Ammo.create_ammo_type(user) |> Ammo.create_ammo_type(user)
|> unwrap_ok_tuple() |> unwrap_ok_tuple()
end end
@ -150,7 +149,7 @@ defmodule Cannery.Fixtures do
attrs attrs
|> Enum.into(%{ |> Enum.into(%{
"bg_color" => "#100000", "bg_color" => "#100000",
"name" => "some name", "name" => random_string(),
"text_color" => "#000000" "text_color" => "#000000"
}) })
|> Containers.create_tag(user) |> Containers.create_tag(user)