Compare commits

...

7 Commits

45 changed files with 585 additions and 397 deletions

View File

@ -1,3 +1,12 @@
# v0.8.6
- Fix duplicate entries showing up
- Show ammo packs under a type in a table by default
- Only show historical ammo type information when displaying "Show used" in table
- Only show historical ammo pack information when displaying "Show used" in table
- Fix some values not being sorted in tables properly
- Code quality improvements
- Show link to ammo pack in ammo pack table while viewing ammo type
# v0.8.5 # v0.8.5
- Add link in readme to github mirror - Add link in readme to github mirror
- Fix tables unable to sort on empty dates - Fix tables unable to sort on empty dates

View File

@ -60,7 +60,8 @@ defmodule Cannery.ActivityLog do
sg.search, sg.search,
^trimmed_search ^trimmed_search
) )
} },
distinct: sg.id
) )
end end

View File

@ -715,6 +715,7 @@ defmodule Cannery.Ammo do
on: c.user_id == t.user_id, on: c.user_id == t.user_id,
as: :t, as: :t,
where: ag.user_id == ^user_id, where: ag.user_id == ^user_id,
distinct: ag.id,
preload: ^@ammo_group_preloads preload: ^@ammo_group_preloads
) )
|> list_ammo_groups_include_empty(include_empty) |> list_ammo_groups_include_empty(include_empty)
@ -842,12 +843,39 @@ defmodule Cannery.Ammo do
""" """
@spec get_percentage_remaining(AmmoGroup.t(), User.t()) :: non_neg_integer() @spec get_percentage_remaining(AmmoGroup.t(), User.t()) :: non_neg_integer()
def get_percentage_remaining(%AmmoGroup{count: 0, user_id: user_id}, %User{id: user_id}) do def get_percentage_remaining(%AmmoGroup{id: ammo_group_id} = ammo_group, user) do
0 [ammo_group]
|> get_percentages_remaining(user)
|> Map.fetch!(ammo_group_id)
end end
def get_percentage_remaining(%AmmoGroup{count: count} = ammo_group, current_user) do @doc """
round(count / get_original_count(ammo_group, current_user) * 100) Calculates the percentages remaining of multiple ammo groups out of 100
## Examples
iex> get_percentages_remaining(
...> [%AmmoGroup{id: 123, count: 5, user_id: 456}],
...> %User{id: 456}
...> )
%{123 => 100}
"""
@spec get_percentages_remaining([AmmoGroup.t()], User.t()) ::
%{optional(AmmoGroup.id()) => non_neg_integer()}
def get_percentages_remaining(ammo_groups, %User{id: user_id} = user) do
original_counts = get_original_counts(ammo_groups, user)
ammo_groups
|> Map.new(fn %AmmoGroup{id: ammo_group_id, count: count, user_id: ^user_id} ->
percentage =
case count do
0 -> 0
count -> round(count / Map.fetch!(original_counts, ammo_group_id) * 100)
end
{ammo_group_id, percentage}
end)
end end
@doc """ @doc """

View File

@ -32,6 +32,7 @@ defmodule Cannery.Containers do
as: :t, as: :t,
where: c.user_id == ^user_id, where: c.user_id == ^user_id,
order_by: c.name, order_by: c.name,
distinct: c.id,
preload: ^@container_preloads preload: ^@container_preloads
) )
|> list_containers_search(search) |> list_containers_search(search)
@ -91,7 +92,7 @@ defmodule Cannery.Containers do
@doc """ @doc """
Gets a single container. Gets a single container.
Raises `Ecto.NoResultsError` if the Container does not exist. Raises `KeyError` if the Container does not exist.
## Examples ## Examples
@ -99,18 +100,37 @@ defmodule Cannery.Containers do
%Container{} %Container{}
iex> get_container!(456, %User{id: 123}) iex> get_container!(456, %User{id: 123})
** (Ecto.NoResultsError) ** (KeyError)
""" """
@spec get_container!(Container.id(), User.t()) :: Container.t() @spec get_container!(Container.id(), User.t()) :: Container.t()
def get_container!(id, %User{id: user_id}) do def get_container!(id, user) do
Repo.one!( [id]
|> get_containers(user)
|> Map.fetch!(id)
end
@doc """
Gets multiple containers.
## Examples
iex> get_containers([123], %User{id: 123})
%{123 => %Container{}}
"""
@spec get_containers([Container.id()], User.t()) :: %{optional(Container.id()) => Container.t()}
def get_containers(ids, %User{id: user_id}) do
Repo.all(
from c in Container, from c in Container,
where: c.user_id == ^user_id, where: c.user_id == ^user_id,
where: c.id == ^id, where: c.id in ^ids,
order_by: c.name, order_by: c.name,
preload: ^@container_preloads preload: ^@container_preloads,
select: {c.id, c}
) )
|> Map.new()
end end
@doc """ @doc """

View File

@ -14,6 +14,7 @@ defmodule CanneryWeb.Components.AmmoGroupTableComponent do
required(:id) => UUID.t(), required(:id) => UUID.t(),
required(:current_user) => User.t(), required(:current_user) => User.t(),
required(:ammo_groups) => [AmmoGroup.t()], required(:ammo_groups) => [AmmoGroup.t()],
required(:show_used) => boolean(),
optional(:ammo_type) => Rendered.t(), optional(:ammo_type) => Rendered.t(),
optional(:range) => Rendered.t(), optional(:range) => Rendered.t(),
optional(:container) => Rendered.t(), optional(:container) => Rendered.t(),
@ -22,7 +23,11 @@ defmodule CanneryWeb.Components.AmmoGroupTableComponent do
}, },
Socket.t() Socket.t()
) :: {:ok, Socket.t()} ) :: {:ok, Socket.t()}
def update(%{id: _id, ammo_groups: _ammo_group, current_user: _current_user} = assigns, socket) do def update(
%{id: _id, ammo_groups: _ammo_group, current_user: _current_user, show_used: _show_used} =
assigns,
socket
) do
socket = socket =
socket socket
|> assign(assigns) |> assign(assigns)
@ -43,7 +48,8 @@ defmodule CanneryWeb.Components.AmmoGroupTableComponent do
ammo_type: ammo_type, ammo_type: ammo_type,
range: range, range: range,
container: container, container: container,
actions: actions actions: actions,
show_used: show_used
} }
} = socket } = socket
) do ) do
@ -74,12 +80,24 @@ defmodule CanneryWeb.Components.AmmoGroupTableComponent do
end end
columns = [ columns = [
%{label: gettext("Count"), key: :count},
%{label: gettext("Original Count"), key: :original_count},
%{label: gettext("Price paid"), key: :price_paid}, %{label: gettext("Price paid"), key: :price_paid},
%{label: gettext("CPR"), key: :cpr}, %{label: gettext("CPR"), key: :cpr}
%{label: gettext("% left"), key: :remaining}, | columns
%{label: gettext("Notes"), key: :notes} ]
columns =
if show_used do
[
%{label: gettext("Original Count"), key: :original_count},
%{label: gettext("% left"), key: :remaining}
| columns
]
else
columns
end
columns = [
%{label: if(show_used, do: gettext("Current Count"), else: gettext("Count")), key: :count}
| columns | columns
] ]
@ -90,14 +108,21 @@ defmodule CanneryWeb.Components.AmmoGroupTableComponent do
[%{label: gettext("Ammo type"), key: :ammo_type} | columns] [%{label: gettext("Ammo type"), key: :ammo_type} | columns]
end end
containers =
ammo_groups
|> Enum.map(fn %{container_id: container_id} -> container_id end)
|> Containers.get_containers(current_user)
extra_data = %{ extra_data = %{
current_user: current_user, current_user: current_user,
ammo_type: ammo_type, ammo_type: ammo_type,
columns: columns, columns: columns,
container: container, container: container,
containers: containers,
original_counts: Ammo.get_original_counts(ammo_groups, current_user), original_counts: Ammo.get_original_counts(ammo_groups, current_user),
cprs: Ammo.get_cprs(ammo_groups, current_user), cprs: Ammo.get_cprs(ammo_groups, current_user),
last_used_dates: ActivityLog.get_last_used_dates(ammo_groups, current_user), last_used_dates: ActivityLog.get_last_used_dates(ammo_groups, current_user),
percentages_remaining: Ammo.get_percentages_remaining(ammo_groups, current_user),
actions: actions, actions: actions,
range: range range: range
} }
@ -148,10 +173,11 @@ defmodule CanneryWeb.Components.AmmoGroupTableComponent do
"""} """}
end end
defp get_value_for_key(:price_paid, %{price_paid: nil}, _additional_data), do: {"", nil} defp get_value_for_key(:price_paid, %{price_paid: nil}, _additional_data),
do: {0, gettext("No cost information")}
defp get_value_for_key(:price_paid, %{price_paid: price_paid}, _additional_data), defp get_value_for_key(:price_paid, %{price_paid: price_paid}, _additional_data),
do: gettext("$%{amount}", amount: display_currency(price_paid)) do: {price_paid, gettext("$%{amount}", amount: display_currency(price_paid))}
defp get_value_for_key(:purchased_on, %{purchased_on: purchased_on} = assigns, _additional_data) do defp get_value_for_key(:purchased_on, %{purchased_on: purchased_on} = assigns, _additional_data) do
{purchased_on, {purchased_on,
@ -183,11 +209,14 @@ defmodule CanneryWeb.Components.AmmoGroupTableComponent do
"""} """}
end end
defp get_value_for_key(:remaining, ammo_group, %{current_user: current_user}), defp get_value_for_key(
do: :remaining,
gettext("%{percentage}%", %{id: ammo_group_id},
percentage: ammo_group |> Ammo.get_percentage_remaining(current_user) %{percentages_remaining: percentages_remaining}
) ) do
percentage = Map.fetch!(percentages_remaining, ammo_group_id)
{percentage, gettext("%{percentage}%", percentage: percentage)}
end
defp get_value_for_key(:actions, ammo_group, %{actions: actions}) do defp get_value_for_key(:actions, ammo_group, %{actions: actions}) do
assigns = %{actions: actions, ammo_group: ammo_group} assigns = %{actions: actions, ammo_group: ammo_group}
@ -202,12 +231,13 @@ defmodule CanneryWeb.Components.AmmoGroupTableComponent do
defp get_value_for_key( defp get_value_for_key(
:container, :container,
%{container_id: container_id} = ammo_group, %{container_id: container_id} = ammo_group,
%{container: container, current_user: current_user} %{container: container_block, containers: containers}
) do ) do
container = %{name: container_name} = Map.fetch!(containers, container_id)
assigns = %{ assigns = %{
container: container: container,
%{name: container_name} = container_id |> Containers.get_container!(current_user), container_block: container_block,
container_block: container,
ammo_group: ammo_group ammo_group: ammo_group
} }
@ -217,21 +247,24 @@ defmodule CanneryWeb.Components.AmmoGroupTableComponent do
"""} """}
end end
defp get_value_for_key(:original_count, %{id: ammo_group_id}, %{ defp get_value_for_key(
original_counts: original_counts :original_count,
}) do %{id: ammo_group_id},
%{original_counts: original_counts}
) do
Map.fetch!(original_counts, ammo_group_id) Map.fetch!(original_counts, ammo_group_id)
end end
defp get_value_for_key(:cpr, %{price_paid: nil}, _additional_data), defp get_value_for_key(:cpr, %{price_paid: nil}, _additional_data),
do: gettext("No cost information") do: {0, gettext("No cost information")}
defp get_value_for_key(:cpr, %{id: ammo_group_id}, %{cprs: cprs}) do defp get_value_for_key(:cpr, %{id: ammo_group_id}, %{cprs: cprs}) do
gettext("$%{amount}", amount: display_currency(Map.fetch!(cprs, ammo_group_id))) amount = Map.fetch!(cprs, ammo_group_id)
{amount, gettext("$%{amount}", amount: display_currency(amount))}
end end
defp get_value_for_key(:count, %{count: count}, _additional_data), defp get_value_for_key(:count, %{count: count}, _additional_data),
do: if(count == 0, do: gettext("Empty"), else: count) do: if(count == 0, do: {0, gettext("Empty")}, else: count)
defp get_value_for_key(key, ammo_group, _additional_data), do: ammo_group |> Map.get(key) defp get_value_for_key(key, ammo_group, _additional_data), do: ammo_group |> Map.get(key)

View File

@ -103,13 +103,13 @@ defmodule CanneryWeb.Components.AmmoTypeTableComponent do
[ [
%{ %{
label: gettext("Used packs"), label: gettext("Used packs"),
key: :used_packs_count, key: :used_pack_count,
type: :used_packs_count type: :used_pack_count
}, },
%{ %{
label: gettext("Total ever packs"), label: gettext("Total ever packs"),
key: :historical_packs_count, key: :historical_pack_count,
type: :historical_packs_count type: :historical_pack_count
} }
] ]
else else
@ -122,23 +122,21 @@ defmodule CanneryWeb.Components.AmmoTypeTableComponent do
]) ])
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)
used_counts =
show_used && ammo_types |> ActivityLog.get_used_count_for_ammo_types(current_user)
historical_round_counts =
show_used && ammo_types |> Ammo.get_historical_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)
historical_packs_count =
show_used && ammo_types |> Ammo.get_ammo_groups_count_for_types(current_user, true)
used_packs_count =
show_used && ammo_types |> Ammo.get_used_ammo_groups_count_for_types(current_user)
average_costs = ammo_types |> Ammo.get_average_cost_for_ammo_types(current_user) average_costs = ammo_types |> Ammo.get_average_cost_for_ammo_types(current_user)
[used_counts, historical_round_counts, historical_pack_counts, used_pack_counts] =
if show_used do
[
ammo_types |> ActivityLog.get_used_count_for_ammo_types(current_user),
ammo_types |> Ammo.get_historical_count_for_ammo_types(current_user),
ammo_types |> Ammo.get_ammo_groups_count_for_types(current_user, true),
ammo_types |> Ammo.get_used_ammo_groups_count_for_types(current_user)
]
else
[nil, nil, nil, nil]
end
extra_data = %{ extra_data = %{
actions: actions, actions: actions,
current_user: current_user, current_user: current_user,
@ -146,8 +144,8 @@ defmodule CanneryWeb.Components.AmmoTypeTableComponent do
round_counts: round_counts, round_counts: round_counts,
historical_round_counts: historical_round_counts, historical_round_counts: historical_round_counts,
packs_count: packs_count, packs_count: packs_count,
used_packs_count: used_packs_count, used_pack_counts: used_pack_counts,
historical_packs_count: historical_packs_count, historical_pack_counts: historical_pack_counts,
average_costs: average_costs average_costs: average_costs
} }
@ -185,54 +183,68 @@ defmodule CanneryWeb.Components.AmmoTypeTableComponent do
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}),
do: Map.get(round_counts, ammo_type_id) do: Map.get(round_counts, ammo_type_id, 0)
defp get_ammo_type_value( defp get_ammo_type_value(
:historical_round_count, :historical_round_count,
_key, _key,
%{id: ammo_type_id}, %{id: ammo_type_id},
%{historical_round_counts: historical_round_counts} %{historical_round_counts: historical_round_counts}
), ) do
do: Map.get(historical_round_counts, ammo_type_id) Map.get(historical_round_counts, ammo_type_id, 0)
end
defp get_ammo_type_value(:used_round_count, _key, %{id: ammo_type_id}, %{
used_counts: used_counts
}),
do: Map.get(used_counts, ammo_type_id)
defp get_ammo_type_value( defp get_ammo_type_value(
:historical_packs_count, :used_round_count,
_key, _key,
%{id: ammo_type_id}, %{id: ammo_type_id},
%{historical_packs_count: historical_packs_count} %{used_counts: used_counts}
), ) do
do: Map.get(historical_packs_count, ammo_type_id) Map.get(used_counts, ammo_type_id, 0)
end
defp get_ammo_type_value(:used_packs_count, _key, %{id: ammo_type_id}, %{ defp get_ammo_type_value(
used_packs_count: used_packs_count :historical_pack_count,
}), _key,
do: Map.get(used_packs_count, ammo_type_id) %{id: ammo_type_id},
%{historical_pack_counts: historical_pack_counts}
) do
Map.get(historical_pack_counts, ammo_type_id, 0)
end
defp get_ammo_type_value(
:used_pack_count,
_key,
%{id: ammo_type_id},
%{used_pack_counts: used_pack_counts}
) do
Map.get(used_pack_counts, ammo_type_id, 0)
end
defp get_ammo_type_value(:ammo_count, _key, %{id: ammo_type_id}, %{packs_count: packs_count}), defp get_ammo_type_value(:ammo_count, _key, %{id: ammo_type_id}, %{packs_count: packs_count}),
do: Map.get(packs_count, ammo_type_id) do: Map.get(packs_count, ammo_type_id)
defp get_ammo_type_value(:avg_price_paid, _key, %{id: ammo_type_id}, %{ defp get_ammo_type_value(
average_costs: average_costs :avg_price_paid,
}) do _key,
%{id: ammo_type_id},
%{average_costs: average_costs}
) do
case Map.get(average_costs, ammo_type_id) do case Map.get(average_costs, ammo_type_id) do
nil -> gettext("No cost information") nil -> {0, gettext("No cost information")}
count -> gettext("$%{amount}", amount: display_currency(count)) count -> {count, gettext("$%{amount}", amount: display_currency(count))}
end end
end end
defp get_ammo_type_value(:name, _key, ammo_type, _other_data) do defp get_ammo_type_value(:name, _key, %{name: ammo_type_name} = ammo_type, _other_data) do
assigns = %{ammo_type: ammo_type} assigns = %{ammo_type: ammo_type}
~H""" {ammo_type_name,
<.link navigate={Routes.ammo_type_show_path(Endpoint, :show, @ammo_type)} class="link"> ~H"""
<%= @ammo_type.name %> <.link navigate={Routes.ammo_type_show_path(Endpoint, :show, @ammo_type)} class="link">
</.link> <%= @ammo_type.name %>
""" </.link>
"""}
end end
defp get_ammo_type_value(:actions, _key, ammo_type, %{actions: actions}) do defp get_ammo_type_value(:actions, _key, ammo_type, %{actions: actions}) do

View File

@ -6,7 +6,7 @@ defmodule CanneryWeb.CoreComponents do
import CanneryWeb.{Gettext, ViewHelpers} import CanneryWeb.{Gettext, ViewHelpers}
alias Cannery.{Accounts, Accounts.Invite, Accounts.User} alias Cannery.{Accounts, Accounts.Invite, Accounts.User}
alias Cannery.{Ammo, Ammo.AmmoGroup} alias Cannery.{Ammo, Ammo.AmmoGroup}
alias Cannery.{Containers, Containers.Container, Containers.Tag} alias Cannery.{Containers.Container, Containers.Tag}
alias CanneryWeb.{Endpoint, HomeLive} alias CanneryWeb.{Endpoint, HomeLive}
alias CanneryWeb.Router.Helpers, as: Routes alias CanneryWeb.Router.Helpers, as: Routes
alias Phoenix.LiveView.{JS, Rendered} alias Phoenix.LiveView.{JS, Rendered}
@ -91,7 +91,7 @@ defmodule CanneryWeb.CoreComponents do
attr :original_count, :integer, default: nil attr :original_count, :integer, default: nil
attr :cpr, :integer, default: nil attr :cpr, :integer, default: nil
attr :last_used_date, Date, default: nil attr :last_used_date, Date, default: nil
attr :show_container, :boolean, default: false attr :container, Container, default: nil
slot(:inner_block) slot(:inner_block)
def ammo_group_card(assigns) def ammo_group_card(assigns)

View File

@ -50,17 +50,11 @@
<%= gettext("$%{amount}", amount: display_currency(@cpr)) %> <%= gettext("$%{amount}", amount: display_currency(@cpr)) %>
</span> </span>
<span <span :if={@container} class="rounded-lg title text-lg">
:if={@show_container && Containers.get_container!(@ammo_group.container_id, @current_user)}
class="rounded-lg title text-lg"
>
<%= gettext("Container:") %> <%= gettext("Container:") %>
<.link <.link navigate={Routes.container_show_path(Endpoint, :show, @container)} class="link">
navigate={Routes.container_show_path(Endpoint, :show, @ammo_group.container_id)} <%= @container.name %>
class="link"
>
<%= Containers.get_container!(@ammo_group.container_id, @current_user).name %>
</.link> </.link>
</span> </span>
</div> </div>

View File

@ -32,18 +32,17 @@ defmodule CanneryWeb.ExportController do
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)
percentages_remaining = ammo_groups |> Ammo.get_percentages_remaining(current_user)
ammo_groups = ammo_groups =
ammo_groups ammo_groups
|> Enum.map(fn %{id: ammo_group_id} = ammo_group -> |> Enum.map(fn %{id: ammo_group_id} = ammo_group ->
percentage_remaining = ammo_group |> Ammo.get_percentage_remaining(current_user)
ammo_group ammo_group
|> Jason.encode!() |> Jason.encode!()
|> Jason.decode!() |> Jason.decode!()
|> Map.merge(%{ |> Map.merge(%{
"used_count" => Map.get(used_counts, ammo_group_id), "used_count" => Map.get(used_counts, ammo_group_id),
"percentage_remaining" => percentage_remaining, "percentage_remaining" => Map.fetch!(percentages_remaining, ammo_group_id),
"original_count" => Map.get(original_counts, ammo_group_id), "original_count" => Map.get(original_counts, ammo_group_id),
"cpr" => Map.get(cprs, ammo_group_id) "cpr" => Map.get(cprs, ammo_group_id)
}) })

View File

@ -78,6 +78,7 @@
id="ammo-group-index-table" id="ammo-group-index-table"
ammo_groups={@ammo_groups} ammo_groups={@ammo_groups}
current_user={@current_user} current_user={@current_user}
show_used={@show_used}
> >
<: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

@ -4,7 +4,7 @@ defmodule CanneryWeb.AmmoTypeLive.Show do
""" """
use CanneryWeb, :live_view use CanneryWeb, :live_view
alias Cannery.{ActivityLog, Ammo, Ammo.AmmoType} alias Cannery.{ActivityLog, Ammo, Ammo.AmmoType, Containers}
alias CanneryWeb.Endpoint alias CanneryWeb.Endpoint
@fields_list [ @fields_list [
@ -30,17 +30,12 @@ defmodule CanneryWeb.AmmoTypeLive.Show do
] ]
@impl true @impl true
def mount(_params, _session, %{assigns: %{live_action: live_action}} = socket), def mount(_params, _session, socket),
do: {:ok, socket |> assign(show_used: false, view_table: live_action == :table)} do: {:ok, socket |> assign(show_used: false, view_table: true)}
@impl true @impl true
def handle_params(%{"id" => id}, _params, %{assigns: %{live_action: live_action}} = socket) do def handle_params(%{"id" => id}, _params, socket) do
socket = {:noreply, socket |> display_ammo_type(id)}
socket
|> assign(view_table: live_action == :table)
|> display_ammo_type(id)
{:noreply, socket}
end end
@impl true @impl true
@ -61,23 +56,14 @@ defmodule CanneryWeb.AmmoTypeLive.Show do
{:noreply, socket |> assign(:show_used, !show_used) |> display_ammo_type()} {:noreply, socket |> assign(:show_used, !show_used) |> display_ammo_type()}
end end
def handle_event( def handle_event("toggle_table", _params, %{assigns: %{view_table: view_table}} = socket) do
"toggle_table", {:noreply, socket |> assign(:view_table, !view_table)}
_params,
%{assigns: %{view_table: view_table, ammo_type: ammo_type}} = socket
) do
new_path =
if view_table,
do: Routes.ammo_type_show_path(Endpoint, :show, ammo_type),
else: Routes.ammo_type_show_path(Endpoint, :table, ammo_type)
{:noreply, socket |> push_patch(to: new_path)}
end end
defp display_ammo_type( defp display_ammo_type(
%{assigns: %{live_action: live_action, current_user: current_user, show_used: show_used}} = %{assigns: %{live_action: live_action, current_user: current_user, show_used: show_used}} =
socket, socket,
%AmmoType{} = ammo_type %AmmoType{name: ammo_type_name} = ammo_type
) do ) do
fields_to_display = fields_to_display =
@fields_list @fields_list
@ -112,11 +98,23 @@ defmodule CanneryWeb.AmmoTypeLive.Show do
[nil, nil, nil, nil, nil] [nil, nil, nil, nil, nil]
end end
page_title =
case live_action do
:show -> ammo_type_name
:edit -> gettext("Edit %{ammo_type_name}", ammo_type_name: ammo_type_name)
end
containers =
ammo_groups
|> Enum.map(fn %{container_id: container_id} -> container_id end)
|> Containers.get_containers(current_user)
socket socket
|> assign( |> assign(
page_title: page_title(live_action, ammo_type), page_title: page_title,
ammo_type: ammo_type, ammo_type: ammo_type,
ammo_groups: ammo_groups, ammo_groups: ammo_groups,
containers: containers,
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),
avg_cost_per_round: ammo_type |> Ammo.get_average_cost_for_ammo_type(current_user), avg_cost_per_round: ammo_type |> Ammo.get_average_cost_for_ammo_type(current_user),
@ -142,10 +140,4 @@ defmodule CanneryWeb.AmmoTypeLive.Show do
@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)
defp page_title(action, %{name: ammo_type_name}) when action in [:show, :table],
do: ammo_type_name
defp page_title(:edit, %{name: ammo_type_name}),
do: gettext("Edit %{ammo_type_name}", ammo_type_name: ammo_type_name)
end end

View File

@ -170,6 +170,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}
> >
<:container :let={{_ammo_group, %{name: container_name} = container}}> <:container :let={{_ammo_group, %{name: container_name} = container}}>
<.link <.link
@ -179,17 +180,32 @@
<%= container_name %> <%= container_name %>
</.link> </.link>
</:container> </:container>
<:actions :let={%{count: ammo_group_count} = ammo_group}>
<div class="py-2 px-4 h-full space-x-4 flex justify-center items-center">
<.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>
</div>
</:actions>
</.live_component> </.live_component>
<% else %> <% else %>
<div class="flex flex-wrap justify-center items-stretch"> <div class="flex flex-wrap justify-center items-stretch">
<.ammo_group_card <.ammo_group_card
:for={%{id: ammo_group_id} = ammo_group <- @ammo_groups} :for={%{id: ammo_group_id, container_id: container_id} = ammo_group <- @ammo_groups}
ammo_group={ammo_group} ammo_group={ammo_group}
original_count={@original_counts && Map.fetch!(@original_counts, ammo_group_id)} original_count={@original_counts && Map.fetch!(@original_counts, ammo_group_id)}
cpr={Map.get(@cprs, ammo_group_id)} cpr={Map.get(@cprs, ammo_group_id)}
last_used_date={Map.get(@last_used_dates, ammo_group_id)} last_used_date={Map.get(@last_used_dates, ammo_group_id)}
current_user={@current_user} current_user={@current_user}
show_container={true} container={Map.fetch!(@containers, container_id)}
/> />
</div> </div>
<% end %> <% end %>

View File

@ -104,7 +104,7 @@ defmodule CanneryWeb.ContainerLive.Show do
page_title = page_title =
case live_action do case live_action do
action when action in [:show, :table] -> container_name :show -> container_name
:edit -> gettext("Edit %{name}", name: container_name) :edit -> gettext("Edit %{name}", name: container_name)
:edit_tags -> gettext("Edit %{name} tags", name: container_name) :edit_tags -> gettext("Edit %{name} tags", name: container_name)
end end

View File

@ -118,6 +118,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}
> >
<: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

@ -77,7 +77,6 @@ defmodule CanneryWeb.Router do
live "/type/:id", AmmoTypeLive.Show, :show live "/type/:id", AmmoTypeLive.Show, :show
live "/type/:id/edit", AmmoTypeLive.Show, :edit live "/type/:id/edit", AmmoTypeLive.Show, :edit
live "/type/:id/table", AmmoTypeLive.Show, :table
live "/containers", ContainerLive.Index, :index live "/containers", ContainerLive.Index, :index
live "/containers/new", ContainerLive.Index, :new live "/containers/new", ContainerLive.Index, :new

View File

@ -4,7 +4,7 @@ defmodule Cannery.MixProject do
def project do def project do
[ [
app: :cannery, app: :cannery,
version: "0.8.5", version: "0.8.6",
elixir: "1.14.1", elixir: "1.14.1",
elixirc_paths: elixirc_paths(Mix.env()), elixirc_paths: elixirc_paths(Mix.env()),
compilers: Mix.compilers(), compilers: Mix.compilers(),

View File

@ -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:104 #: lib/cannery_web/live/ammo_group_live/index.html.heex:105
#: 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
@ -209,7 +209,7 @@ 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:121 #: lib/cannery_web/live/ammo_group_live/index.html.heex:122
#: 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"
@ -300,7 +300,7 @@ msgstr ""
msgid "Edit %{tag_name}" msgid "Edit %{tag_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:143 #: lib/cannery_web/live/ammo_group_live/index.html.heex:144
#: 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"
@ -321,7 +321,7 @@ msgstr ""
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:97 #: lib/cannery_web/live/ammo_group_live/index.html.heex:98
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Stage" msgid "Stage"
msgstr "" msgstr ""
@ -332,7 +332,7 @@ msgstr ""
msgid "Tag %{container_name}" msgid "Tag %{container_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:96 #: lib/cannery_web/live/ammo_group_live/index.html.heex:97
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Unstage" msgid "Unstage"
msgstr "" msgstr ""
@ -342,18 +342,19 @@ msgstr ""
msgid "View %{ammo_type_name}" msgid "View %{ammo_type_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:155 #: lib/cannery_web/live/ammo_group_live/index.html.heex:156
#, 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:170 #: lib/cannery_web/live/ammo_group_live/index.html.heex:171
#: 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:131 #: lib/cannery_web/live/ammo_group_live/index.html.heex:132
#: lib/cannery_web/live/ammo_type_live/show.html.heex:189
#, 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

@ -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:104 #: lib/cannery_web/live/ammo_group_live/index.html.heex:105
#: 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
@ -222,7 +222,7 @@ 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:121 #: lib/cannery_web/live/ammo_group_live/index.html.heex:122
#: 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"
@ -313,7 +313,7 @@ msgstr ""
msgid "Edit %{tag_name}" msgid "Edit %{tag_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:143 #: lib/cannery_web/live/ammo_group_live/index.html.heex:144
#: 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"
@ -334,7 +334,7 @@ msgstr ""
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:97 #: lib/cannery_web/live/ammo_group_live/index.html.heex:98
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Stage" msgid "Stage"
msgstr "Munition markieren" msgstr "Munition markieren"
@ -345,7 +345,7 @@ msgstr "Munition markieren"
msgid "Tag %{container_name}" msgid "Tag %{container_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:96 #: lib/cannery_web/live/ammo_group_live/index.html.heex:97
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Unstage" msgid "Unstage"
msgstr "" msgstr ""
@ -355,18 +355,19 @@ msgstr ""
msgid "View %{ammo_type_name}" msgid "View %{ammo_type_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:155 #: lib/cannery_web/live/ammo_group_live/index.html.heex:156
#, 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:170 #: lib/cannery_web/live/ammo_group_live/index.html.heex:171
#: 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:131 #: lib/cannery_web/live/ammo_group_live/index.html.heex:132
#: lib/cannery_web/live/ammo_type_live/show.html.heex:189
#, 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:90 #: lib/cannery_web/components/ammo_group_table_component.ex:108
#: 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"
@ -90,7 +90,7 @@ msgstr "Patrone"
msgid "Case material" msgid "Case material"
msgstr "Gehäusematerial" msgstr "Gehäusematerial"
#: lib/cannery_web/components/ammo_group_table_component.ex:66 #: lib/cannery_web/components/ammo_group_table_component.ex:72
#: 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
@ -111,7 +111,7 @@ msgstr "Behälter"
msgid "Corrosive" msgid "Corrosive"
msgstr "Korrosiv" msgstr "Korrosiv"
#: lib/cannery_web/components/ammo_group_table_component.ex:77 #: lib/cannery_web/components/ammo_group_table_component.ex:100
#: 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"
@ -296,7 +296,6 @@ msgid "No tags"
msgstr "Keine Tags" msgstr "Keine Tags"
#: lib/cannery_web/components/add_shot_group_component.html.heex:38 #: lib/cannery_web/components/add_shot_group_component.html.heex:38
#: lib/cannery_web/components/ammo_group_table_component.ex:82
#: lib/cannery_web/components/shot_group_table_component.ex:43 #: lib/cannery_web/components/shot_group_table_component.ex:43
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:50 #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:50
#: lib/cannery_web/live/ammo_group_live/show.ex:92 #: lib/cannery_web/live/ammo_group_live/show.ex:92
@ -322,7 +321,7 @@ msgstr "Auf dem Bücherregal"
msgid "Pressure" msgid "Pressure"
msgstr "Druck" msgstr "Druck"
#: lib/cannery_web/components/ammo_group_table_component.ex:79 #: lib/cannery_web/components/ammo_group_table_component.ex:83
#: 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"
@ -440,7 +439,7 @@ msgstr "Ihre Daten bleiben bei Ihnen, Punkt"
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:73 #: lib/cannery_web/components/ammo_group_table_component.ex:79
#: 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"
@ -526,9 +525,9 @@ 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:154 #: lib/cannery_web/components/ammo_group_table_component.ex:180
#: lib/cannery_web/components/ammo_group_table_component.ex:230 #: lib/cannery_web/components/ammo_group_table_component.ex:263
#: lib/cannery_web/components/ammo_type_table_component.ex:224 #: lib/cannery_web/components/ammo_type_table_component.ex:235
#: 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
@ -621,14 +620,15 @@ msgstr "Editiere %{name} Tags"
msgid "Rounds:" msgid "Rounds:"
msgstr "Patronen:" msgstr "Patronen:"
#: lib/cannery_web/components/ammo_group_table_component.ex:227 #: lib/cannery_web/components/ammo_group_table_component.ex:177
#: lib/cannery_web/components/ammo_type_table_component.ex:223 #: lib/cannery_web/components/ammo_group_table_component.ex:259
#: lib/cannery_web/components/ammo_type_table_component.ex:234
#: lib/cannery_web/live/ammo_type_live/show.html.heex:139 #: lib/cannery_web/live/ammo_type_live/show.html.heex:139
#, 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:81 #: lib/cannery_web/components/ammo_group_table_component.ex:92
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "% left" msgid "% left"
msgstr "% verbleibend" msgstr "% verbleibend"
@ -796,7 +796,7 @@ msgstr ""
msgid "Leave \"Uses left\" blank to make invite unlimited" msgid "Leave \"Uses left\" blank to make invite unlimited"
msgstr "" msgstr ""
#: lib/cannery_web/components/core_components/ammo_group_card.html.heex:57 #: lib/cannery_web/components/core_components/ammo_group_card.html.heex:54
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Container:" msgid "Container:"
msgstr "Behälter" msgstr "Behälter"
@ -809,7 +809,7 @@ msgstr "Behälter"
msgid "Show used" msgid "Show used"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:188 #: lib/cannery_web/components/ammo_group_table_component.ex:218
#: 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}%"
@ -991,18 +991,18 @@ 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:150 #: lib/cannery_web/live/ammo_type_live/show.ex:104
#, 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:234 #: lib/cannery_web/components/ammo_group_table_component.ex:267
#: 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:80 #: lib/cannery_web/components/ammo_group_table_component.ex:84
#, 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:78 #: lib/cannery_web/components/ammo_group_table_component.ex:91
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Original Count" msgid "Original Count"
msgstr "Ursprüngliche Anzahl:" msgstr "Ursprüngliche Anzahl:"
@ -1032,7 +1032,7 @@ msgstr ""
msgid "Total packs:" msgid "Total packs:"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:59 #: 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 +1042,12 @@ msgstr ""
msgid "Last used on:" msgid "Last used on:"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:172 #: lib/cannery_web/components/ammo_group_table_component.ex:198
#, 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:58 #: lib/cannery_web/components/ammo_group_table_component.ex:64
#: 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"
@ -1230,7 +1230,7 @@ msgstr ""
msgid "Really great weather" msgid "Really great weather"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:54 #: 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:121
#: 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
@ -1249,3 +1249,8 @@ msgstr ""
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Log out" msgid "Log out"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:100
#, elixir-autogen, elixir-format
msgid "Current Count"
msgstr ""

View File

@ -23,7 +23,7 @@ msgstr ""
## Run "mix gettext.extract" to bring this file up to ## Run "mix gettext.extract" to bring this file up to
## date. Leave "msgstr"s empty as changing them here has no ## date. Leave "msgstr"s empty as changing them here has no
## effect: edit them in PO (.po) files instead. ## effect: edit them in PO (.po) files instead.
#: lib/cannery/containers.ex:200 #: lib/cannery/containers.ex:220
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Container must be empty before deleting" msgid "Container must be empty before deleting"
msgstr "Behälter muss vor dem Löschen leer sein" msgstr "Behälter muss vor dem Löschen leer sein"
@ -172,7 +172,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:1015 #: lib/cannery/ammo.ex:1043
#, 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:54 #: lib/cannery_web/live/ammo_type_live/show.ex:49
#: 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"
@ -73,7 +73,7 @@ msgstr ""
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:168 #: lib/cannery_web/live/ammo_group_live/index.html.heex:169
#: 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?"

View File

@ -34,7 +34,7 @@ msgstr ""
msgid "Ammo" msgid "Ammo"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:90 #: lib/cannery_web/components/ammo_group_table_component.ex:108
#: 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"
@ -86,7 +86,7 @@ msgstr ""
msgid "Case material" msgid "Case material"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:66 #: lib/cannery_web/components/ammo_group_table_component.ex:72
#: 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
@ -107,7 +107,7 @@ msgstr ""
msgid "Corrosive" msgid "Corrosive"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:77 #: lib/cannery_web/components/ammo_group_table_component.ex:100
#: 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"
@ -292,7 +292,6 @@ msgid "No tags"
msgstr "" msgstr ""
#: lib/cannery_web/components/add_shot_group_component.html.heex:38 #: lib/cannery_web/components/add_shot_group_component.html.heex:38
#: lib/cannery_web/components/ammo_group_table_component.ex:82
#: lib/cannery_web/components/shot_group_table_component.ex:43 #: lib/cannery_web/components/shot_group_table_component.ex:43
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:50 #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:50
#: lib/cannery_web/live/ammo_group_live/show.ex:92 #: lib/cannery_web/live/ammo_group_live/show.ex:92
@ -318,7 +317,7 @@ msgstr ""
msgid "Pressure" msgid "Pressure"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:79 #: lib/cannery_web/components/ammo_group_table_component.ex:83
#: 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"
@ -434,7 +433,7 @@ msgstr ""
msgid "No tags for this container" msgid "No tags for this container"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:73 #: lib/cannery_web/components/ammo_group_table_component.ex:79
#: 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"
@ -520,9 +519,9 @@ msgstr ""
msgid "Shot log" msgid "Shot log"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:154 #: lib/cannery_web/components/ammo_group_table_component.ex:180
#: lib/cannery_web/components/ammo_group_table_component.ex:230 #: lib/cannery_web/components/ammo_group_table_component.ex:263
#: lib/cannery_web/components/ammo_type_table_component.ex:224 #: lib/cannery_web/components/ammo_type_table_component.ex:235
#: 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
@ -615,14 +614,15 @@ msgstr ""
msgid "Rounds:" msgid "Rounds:"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:227 #: lib/cannery_web/components/ammo_group_table_component.ex:177
#: lib/cannery_web/components/ammo_type_table_component.ex:223 #: lib/cannery_web/components/ammo_group_table_component.ex:259
#: lib/cannery_web/components/ammo_type_table_component.ex:234
#: lib/cannery_web/live/ammo_type_live/show.html.heex:139 #: lib/cannery_web/live/ammo_type_live/show.html.heex:139
#, 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:81 #: lib/cannery_web/components/ammo_group_table_component.ex:92
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "% left" msgid "% left"
msgstr "" msgstr ""
@ -790,7 +790,7 @@ msgstr ""
msgid "Leave \"Uses left\" blank to make invite unlimited" msgid "Leave \"Uses left\" blank to make invite unlimited"
msgstr "" msgstr ""
#: lib/cannery_web/components/core_components/ammo_group_card.html.heex:57 #: lib/cannery_web/components/core_components/ammo_group_card.html.heex:54
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Container:" msgid "Container:"
msgstr "" msgstr ""
@ -803,7 +803,7 @@ msgstr ""
msgid "Show used" msgid "Show used"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:188 #: lib/cannery_web/components/ammo_group_table_component.ex:218
#: 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}%"
@ -985,18 +985,18 @@ 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:150 #: lib/cannery_web/live/ammo_type_live/show.ex:104
#, 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:234 #: lib/cannery_web/components/ammo_group_table_component.ex:267
#: 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:80 #: lib/cannery_web/components/ammo_group_table_component.ex:84
#, 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:78 #: lib/cannery_web/components/ammo_group_table_component.ex:91
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Original Count" msgid "Original Count"
msgstr "" msgstr ""
@ -1026,7 +1026,7 @@ msgstr ""
msgid "Total packs:" msgid "Total packs:"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:59 #: 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 +1036,12 @@ msgstr ""
msgid "Last used on:" msgid "Last used on:"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:172 #: lib/cannery_web/components/ammo_group_table_component.ex:198
#, 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:58 #: lib/cannery_web/components/ammo_group_table_component.ex:64
#: 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"
@ -1213,7 +1213,7 @@ msgstr ""
msgid "Really great weather" msgid "Really great weather"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:54 #: 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:121
#: 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
@ -1232,3 +1232,8 @@ msgstr ""
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Log out" msgid "Log out"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:100
#, elixir-autogen, elixir-format
msgid "Current Count"
msgstr ""

View File

@ -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:104 #: lib/cannery_web/live/ammo_group_live/index.html.heex:105
#: 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
@ -209,7 +209,7 @@ 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:121 #: lib/cannery_web/live/ammo_group_live/index.html.heex:122
#: 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"
@ -300,7 +300,7 @@ msgstr ""
msgid "Edit %{tag_name}" msgid "Edit %{tag_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:143 #: lib/cannery_web/live/ammo_group_live/index.html.heex:144
#: 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"
@ -321,7 +321,7 @@ msgstr ""
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:97 #: lib/cannery_web/live/ammo_group_live/index.html.heex:98
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Stage" msgid "Stage"
msgstr "" msgstr ""
@ -332,7 +332,7 @@ msgstr ""
msgid "Tag %{container_name}" msgid "Tag %{container_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:96 #: lib/cannery_web/live/ammo_group_live/index.html.heex:97
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Unstage" msgid "Unstage"
msgstr "" msgstr ""
@ -342,18 +342,19 @@ msgstr ""
msgid "View %{ammo_type_name}" msgid "View %{ammo_type_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:155 #: lib/cannery_web/live/ammo_group_live/index.html.heex:156
#, 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:170 #: lib/cannery_web/live/ammo_group_live/index.html.heex:171
#: 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:131 #: lib/cannery_web/live/ammo_group_live/index.html.heex:132
#: lib/cannery_web/live/ammo_type_live/show.html.heex:189
#, 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:90 #: lib/cannery_web/components/ammo_group_table_component.ex:108
#: 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"
@ -86,7 +86,7 @@ msgstr ""
msgid "Case material" msgid "Case material"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:66 #: lib/cannery_web/components/ammo_group_table_component.ex:72
#: 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
@ -107,7 +107,7 @@ msgstr ""
msgid "Corrosive" msgid "Corrosive"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:77 #: lib/cannery_web/components/ammo_group_table_component.ex:100
#: 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"
@ -292,7 +292,6 @@ msgid "No tags"
msgstr "" msgstr ""
#: lib/cannery_web/components/add_shot_group_component.html.heex:38 #: lib/cannery_web/components/add_shot_group_component.html.heex:38
#: lib/cannery_web/components/ammo_group_table_component.ex:82
#: lib/cannery_web/components/shot_group_table_component.ex:43 #: lib/cannery_web/components/shot_group_table_component.ex:43
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:50 #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:50
#: lib/cannery_web/live/ammo_group_live/show.ex:92 #: lib/cannery_web/live/ammo_group_live/show.ex:92
@ -318,7 +317,7 @@ msgstr ""
msgid "Pressure" msgid "Pressure"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:79 #: lib/cannery_web/components/ammo_group_table_component.ex:83
#: 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"
@ -434,7 +433,7 @@ msgstr ""
msgid "No tags for this container" msgid "No tags for this container"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:73 #: lib/cannery_web/components/ammo_group_table_component.ex:79
#: 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"
@ -520,9 +519,9 @@ msgstr ""
msgid "Shot log" msgid "Shot log"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:154 #: lib/cannery_web/components/ammo_group_table_component.ex:180
#: lib/cannery_web/components/ammo_group_table_component.ex:230 #: lib/cannery_web/components/ammo_group_table_component.ex:263
#: lib/cannery_web/components/ammo_type_table_component.ex:224 #: lib/cannery_web/components/ammo_type_table_component.ex:235
#: 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
@ -615,14 +614,15 @@ msgstr ""
msgid "Rounds:" msgid "Rounds:"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:227 #: lib/cannery_web/components/ammo_group_table_component.ex:177
#: lib/cannery_web/components/ammo_type_table_component.ex:223 #: lib/cannery_web/components/ammo_group_table_component.ex:259
#: lib/cannery_web/components/ammo_type_table_component.ex:234
#: lib/cannery_web/live/ammo_type_live/show.html.heex:139 #: lib/cannery_web/live/ammo_type_live/show.html.heex:139
#, 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:81 #: lib/cannery_web/components/ammo_group_table_component.ex:92
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "% left" msgid "% left"
msgstr "" msgstr ""
@ -790,7 +790,7 @@ msgstr ""
msgid "Leave \"Uses left\" blank to make invite unlimited" msgid "Leave \"Uses left\" blank to make invite unlimited"
msgstr "" msgstr ""
#: lib/cannery_web/components/core_components/ammo_group_card.html.heex:57 #: lib/cannery_web/components/core_components/ammo_group_card.html.heex:54
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Container:" msgid "Container:"
msgstr "" msgstr ""
@ -803,7 +803,7 @@ msgstr ""
msgid "Show used" msgid "Show used"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:188 #: lib/cannery_web/components/ammo_group_table_component.ex:218
#: 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}%"
@ -985,18 +985,18 @@ 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:150 #: lib/cannery_web/live/ammo_type_live/show.ex:104
#, 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:234 #: lib/cannery_web/components/ammo_group_table_component.ex:267
#: 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:80 #: lib/cannery_web/components/ammo_group_table_component.ex:84
#, 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:78 #: lib/cannery_web/components/ammo_group_table_component.ex:91
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Original Count" msgid "Original Count"
msgstr "" msgstr ""
@ -1026,7 +1026,7 @@ msgstr ""
msgid "Total packs:" msgid "Total packs:"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:59 #: 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 +1036,12 @@ msgstr ""
msgid "Last used on:" msgid "Last used on:"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:172 #: lib/cannery_web/components/ammo_group_table_component.ex:198
#, 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:58 #: lib/cannery_web/components/ammo_group_table_component.ex:64
#: 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"
@ -1213,7 +1213,7 @@ msgstr ""
msgid "Really great weather" msgid "Really great weather"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:54 #: 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:121
#: 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
@ -1232,3 +1232,8 @@ msgstr ""
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Log out" msgid "Log out"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:100
#, elixir-autogen, elixir-format
msgid "Current Count"
msgstr ""

View File

@ -10,7 +10,7 @@ msgid ""
msgstr "" msgstr ""
"Language: en\n" "Language: en\n"
#: lib/cannery/containers.ex:200 #: lib/cannery/containers.ex:220
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Container must be empty before deleting" msgid "Container must be empty before deleting"
msgstr "" msgstr ""
@ -155,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:1015 #: lib/cannery/ammo.ex:1043
#, 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:54 #: lib/cannery_web/live/ammo_type_live/show.ex:49
#: 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"
@ -58,7 +58,7 @@ msgstr ""
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:168 #: lib/cannery_web/live/ammo_group_live/index.html.heex:169
#: 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?"

View File

@ -10,7 +10,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
#: lib/cannery/containers.ex:200 #: lib/cannery/containers.ex:220
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Container must be empty before deleting" msgid "Container must be empty before deleting"
msgstr "" msgstr ""
@ -154,7 +154,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:1015 #: lib/cannery/ammo.ex:1043
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Invalid multiplier" msgid "Invalid multiplier"
msgstr "" msgstr ""

View File

@ -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:104 #: lib/cannery_web/live/ammo_group_live/index.html.heex:105
#: 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
@ -222,7 +222,7 @@ 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:121 #: lib/cannery_web/live/ammo_group_live/index.html.heex:122
#: 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"
@ -313,7 +313,7 @@ msgstr ""
msgid "Edit %{tag_name}" msgid "Edit %{tag_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:143 #: lib/cannery_web/live/ammo_group_live/index.html.heex:144
#: 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"
@ -334,7 +334,7 @@ msgstr ""
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:97 #: lib/cannery_web/live/ammo_group_live/index.html.heex:98
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Stage" msgid "Stage"
msgstr "Preparar munición" msgstr "Preparar munición"
@ -345,7 +345,7 @@ msgstr "Preparar munición"
msgid "Tag %{container_name}" msgid "Tag %{container_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:96 #: lib/cannery_web/live/ammo_group_live/index.html.heex:97
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Unstage" msgid "Unstage"
msgstr "" msgstr ""
@ -355,18 +355,19 @@ msgstr ""
msgid "View %{ammo_type_name}" msgid "View %{ammo_type_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:155 #: lib/cannery_web/live/ammo_group_live/index.html.heex:156
#, 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:170 #: lib/cannery_web/live/ammo_group_live/index.html.heex:171
#: 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:131 #: lib/cannery_web/live/ammo_group_live/index.html.heex:132
#: lib/cannery_web/live/ammo_type_live/show.html.heex:189
#, 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:90 #: lib/cannery_web/components/ammo_group_table_component.ex:108
#: 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"
@ -90,7 +90,7 @@ msgstr "Cartucho"
msgid "Case material" msgid "Case material"
msgstr "Material del casquillo" msgstr "Material del casquillo"
#: lib/cannery_web/components/ammo_group_table_component.ex:66 #: lib/cannery_web/components/ammo_group_table_component.ex:72
#: 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
@ -111,7 +111,7 @@ msgstr "Contenedores"
msgid "Corrosive" msgid "Corrosive"
msgstr "Corrosiva" msgstr "Corrosiva"
#: lib/cannery_web/components/ammo_group_table_component.ex:77 #: lib/cannery_web/components/ammo_group_table_component.ex:100
#: 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"
@ -296,7 +296,6 @@ msgid "No tags"
msgstr "Sin etiquetas" msgstr "Sin etiquetas"
#: lib/cannery_web/components/add_shot_group_component.html.heex:38 #: lib/cannery_web/components/add_shot_group_component.html.heex:38
#: lib/cannery_web/components/ammo_group_table_component.ex:82
#: lib/cannery_web/components/shot_group_table_component.ex:43 #: lib/cannery_web/components/shot_group_table_component.ex:43
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:50 #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:50
#: lib/cannery_web/live/ammo_group_live/show.ex:92 #: lib/cannery_web/live/ammo_group_live/show.ex:92
@ -322,7 +321,7 @@ msgstr "En la estantería"
msgid "Pressure" msgid "Pressure"
msgstr "Presión" msgstr "Presión"
#: lib/cannery_web/components/ammo_group_table_component.ex:79 #: lib/cannery_web/components/ammo_group_table_component.ex:83
#: 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"
@ -441,7 +440,7 @@ msgstr "Tus datos se quedan contigo, sin excepciones"
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:73 #: lib/cannery_web/components/ammo_group_table_component.ex:79
#: 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"
@ -527,9 +526,9 @@ 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:154 #: lib/cannery_web/components/ammo_group_table_component.ex:180
#: lib/cannery_web/components/ammo_group_table_component.ex:230 #: lib/cannery_web/components/ammo_group_table_component.ex:263
#: lib/cannery_web/components/ammo_type_table_component.ex:224 #: lib/cannery_web/components/ammo_type_table_component.ex:235
#: 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
@ -622,14 +621,15 @@ msgstr "Editar etiquetas de %{name}"
msgid "Rounds:" msgid "Rounds:"
msgstr "Balas:" msgstr "Balas:"
#: lib/cannery_web/components/ammo_group_table_component.ex:227 #: lib/cannery_web/components/ammo_group_table_component.ex:177
#: lib/cannery_web/components/ammo_type_table_component.ex:223 #: lib/cannery_web/components/ammo_group_table_component.ex:259
#: lib/cannery_web/components/ammo_type_table_component.ex:234
#: lib/cannery_web/live/ammo_type_live/show.html.heex:139 #: lib/cannery_web/live/ammo_type_live/show.html.heex:139
#, 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:81 #: lib/cannery_web/components/ammo_group_table_component.ex:92
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "% left" msgid "% left"
msgstr "% restantes" msgstr "% restantes"
@ -798,7 +798,7 @@ msgid "Leave \"Uses left\" blank to make invite unlimited"
msgstr "" msgstr ""
"Deje \"Usos restantes\" en blanco para hacer las invitaciónes ilimitadas" "Deje \"Usos restantes\" en blanco para hacer las invitaciónes ilimitadas"
#: lib/cannery_web/components/core_components/ammo_group_card.html.heex:57 #: lib/cannery_web/components/core_components/ammo_group_card.html.heex:54
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Container:" msgid "Container:"
msgstr "Contenedor:" msgstr "Contenedor:"
@ -811,7 +811,7 @@ msgstr "Contenedor:"
msgid "Show used" msgid "Show used"
msgstr "Mostrar usadas" msgstr "Mostrar usadas"
#: lib/cannery_web/components/ammo_group_table_component.ex:188 #: lib/cannery_web/components/ammo_group_table_component.ex:218
#: 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}%"
@ -993,18 +993,18 @@ 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:150 #: lib/cannery_web/live/ammo_type_live/show.ex:104
#, 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:234 #: lib/cannery_web/components/ammo_group_table_component.ex:267
#: 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:80 #: lib/cannery_web/components/ammo_group_table_component.ex:84
#, 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:78 #: lib/cannery_web/components/ammo_group_table_component.ex:91
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Original Count" msgid "Original Count"
msgstr "Cantidad Original" msgstr "Cantidad Original"
@ -1034,7 +1034,7 @@ msgstr "Menu principal"
msgid "Total packs:" msgid "Total packs:"
msgstr "Paquetes totales:" msgstr "Paquetes totales:"
#: lib/cannery_web/components/ammo_group_table_component.ex:59 #: 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 +1044,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:172 #: lib/cannery_web/components/ammo_group_table_component.ex:198
#, 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:58 #: lib/cannery_web/components/ammo_group_table_component.ex:64
#: 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"
@ -1232,7 +1232,7 @@ msgstr ""
msgid "Really great weather" msgid "Really great weather"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:54 #: 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:121
#: 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
@ -1251,3 +1251,8 @@ msgstr ""
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Log out" msgid "Log out"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:100
#, elixir-autogen, elixir-format
msgid "Current Count"
msgstr ""

View File

@ -23,7 +23,7 @@ msgstr ""
## Run "mix gettext.extract" to bring this file up to ## Run "mix gettext.extract" to bring this file up to
## date. Leave "msgstr"s empty as changing them here has no ## date. Leave "msgstr"s empty as changing them here has no
## effect: edit them in PO (.po) files instead. ## effect: edit them in PO (.po) files instead.
#: lib/cannery/containers.ex:200 #: lib/cannery/containers.ex:220
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Container must be empty before deleting" msgid "Container must be empty before deleting"
msgstr "El contenedor debe estar vacío antes de ser borrado" msgstr "El contenedor debe estar vacío antes de ser borrado"
@ -170,7 +170,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:1015 #: lib/cannery/ammo.ex:1043
#, 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:54 #: lib/cannery_web/live/ammo_type_live/show.ex:49
#: 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"
@ -73,7 +73,7 @@ msgstr "Está seguro que desea eliminar %{email}? Esta acción es permanente!"
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:168 #: lib/cannery_web/live/ammo_group_live/index.html.heex:169
#: 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?"

View File

@ -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:104 #: lib/cannery_web/live/ammo_group_live/index.html.heex:105
#: 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
@ -222,7 +222,7 @@ 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:121 #: lib/cannery_web/live/ammo_group_live/index.html.heex:122
#: 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"
@ -313,7 +313,7 @@ msgstr ""
msgid "Edit %{tag_name}" msgid "Edit %{tag_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:143 #: lib/cannery_web/live/ammo_group_live/index.html.heex:144
#: 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"
@ -334,7 +334,7 @@ msgstr ""
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:97 #: lib/cannery_web/live/ammo_group_live/index.html.heex:98
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Stage" msgid "Stage"
msgstr "Munition préparée" msgstr "Munition préparée"
@ -345,7 +345,7 @@ msgstr "Munition préparée"
msgid "Tag %{container_name}" msgid "Tag %{container_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:96 #: lib/cannery_web/live/ammo_group_live/index.html.heex:97
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Unstage" msgid "Unstage"
msgstr "" msgstr ""
@ -355,18 +355,19 @@ msgstr ""
msgid "View %{ammo_type_name}" msgid "View %{ammo_type_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:155 #: lib/cannery_web/live/ammo_group_live/index.html.heex:156
#, 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:170 #: lib/cannery_web/live/ammo_group_live/index.html.heex:171
#: 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:131 #: lib/cannery_web/live/ammo_group_live/index.html.heex:132
#: lib/cannery_web/live/ammo_type_live/show.html.heex:189
#, 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:90 #: lib/cannery_web/components/ammo_group_table_component.ex:108
#: 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"
@ -90,7 +90,7 @@ msgstr "Cartouche"
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:66 #: lib/cannery_web/components/ammo_group_table_component.ex:72
#: 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
@ -111,7 +111,7 @@ msgstr "Conteneurs"
msgid "Corrosive" msgid "Corrosive"
msgstr "Corrosive" msgstr "Corrosive"
#: lib/cannery_web/components/ammo_group_table_component.ex:77 #: lib/cannery_web/components/ammo_group_table_component.ex:100
#: 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"
@ -296,7 +296,6 @@ msgid "No tags"
msgstr "Aucun tag" msgstr "Aucun tag"
#: lib/cannery_web/components/add_shot_group_component.html.heex:38 #: lib/cannery_web/components/add_shot_group_component.html.heex:38
#: lib/cannery_web/components/ammo_group_table_component.ex:82
#: lib/cannery_web/components/shot_group_table_component.ex:43 #: lib/cannery_web/components/shot_group_table_component.ex:43
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:50 #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:50
#: lib/cannery_web/live/ammo_group_live/show.ex:92 #: lib/cannery_web/live/ammo_group_live/show.ex:92
@ -322,7 +321,7 @@ msgstr "Sur létagère"
msgid "Pressure" msgid "Pressure"
msgstr "Pression" msgstr "Pression"
#: lib/cannery_web/components/ammo_group_table_component.ex:79 #: lib/cannery_web/components/ammo_group_table_component.ex:83
#: 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"
@ -442,7 +441,7 @@ msgstr "Vos données restent avec vous, point final"
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:73 #: lib/cannery_web/components/ammo_group_table_component.ex:79
#: 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"
@ -528,9 +527,9 @@ 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:154 #: lib/cannery_web/components/ammo_group_table_component.ex:180
#: lib/cannery_web/components/ammo_group_table_component.ex:230 #: lib/cannery_web/components/ammo_group_table_component.ex:263
#: lib/cannery_web/components/ammo_type_table_component.ex:224 #: lib/cannery_web/components/ammo_type_table_component.ex:235
#: 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
@ -623,14 +622,15 @@ msgstr "Éditer les tags de %{name}"
msgid "Rounds:" msgid "Rounds:"
msgstr "Cartouches:" msgstr "Cartouches:"
#: lib/cannery_web/components/ammo_group_table_component.ex:227 #: lib/cannery_web/components/ammo_group_table_component.ex:177
#: lib/cannery_web/components/ammo_type_table_component.ex:223 #: lib/cannery_web/components/ammo_group_table_component.ex:259
#: lib/cannery_web/components/ammo_type_table_component.ex:234
#: lib/cannery_web/live/ammo_type_live/show.html.heex:139 #: lib/cannery_web/live/ammo_type_live/show.html.heex:139
#, 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:81 #: lib/cannery_web/components/ammo_group_table_component.ex:92
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "% left" msgid "% left"
msgstr "%restante" msgstr "%restante"
@ -799,7 +799,7 @@ msgid "Leave \"Uses left\" blank to make invite unlimited"
msgstr "" msgstr ""
"Laissez \"Utilisations restantes\" vide pour rendre l'invitation illimitée" "Laissez \"Utilisations restantes\" vide pour rendre l'invitation illimitée"
#: lib/cannery_web/components/core_components/ammo_group_card.html.heex:57 #: lib/cannery_web/components/core_components/ammo_group_card.html.heex:54
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Container:" msgid "Container:"
msgstr "Conteneur" msgstr "Conteneur"
@ -812,7 +812,7 @@ msgstr "Conteneur"
msgid "Show used" msgid "Show used"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:188 #: lib/cannery_web/components/ammo_group_table_component.ex:218
#: 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}%"
@ -994,18 +994,18 @@ 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:150 #: lib/cannery_web/live/ammo_type_live/show.ex:104
#, 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:234 #: lib/cannery_web/components/ammo_group_table_component.ex:267
#: 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:80 #: lib/cannery_web/components/ammo_group_table_component.ex:84
#, 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:78 #: lib/cannery_web/components/ammo_group_table_component.ex:91
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Original Count" msgid "Original Count"
msgstr "Nombre original:" msgstr "Nombre original:"
@ -1035,7 +1035,7 @@ msgstr ""
msgid "Total packs:" msgid "Total packs:"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:59 #: 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 +1045,12 @@ msgstr ""
msgid "Last used on:" msgid "Last used on:"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:172 #: lib/cannery_web/components/ammo_group_table_component.ex:198
#, 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:58 #: lib/cannery_web/components/ammo_group_table_component.ex:64
#: 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"
@ -1233,7 +1233,7 @@ msgstr ""
msgid "Really great weather" msgid "Really great weather"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:54 #: 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:121
#: 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
@ -1252,3 +1252,8 @@ msgstr ""
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Log out" msgid "Log out"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:100
#, elixir-autogen, elixir-format
msgid "Current Count"
msgstr ""

View File

@ -23,7 +23,7 @@ msgstr ""
# # Run "mix gettext.extract" to bring this file up to # # Run "mix gettext.extract" to bring this file up to
# # date. Leave "msgstr"s empty as changing them here has no # # date. Leave "msgstr"s empty as changing them here has no
# # effect: edit them in PO (.po) files instead. # # effect: edit them in PO (.po) files instead.
#: lib/cannery/containers.ex:200 #: lib/cannery/containers.ex:220
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Container must be empty before deleting" msgid "Container must be empty before deleting"
msgstr "Le conteneur doit être vide pour être supprimé" msgstr "Le conteneur doit être vide pour être supprimé"
@ -171,7 +171,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:1015 #: lib/cannery/ammo.ex:1043
#, 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:54 #: lib/cannery_web/live/ammo_type_live/show.ex:49
#: 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"
@ -74,7 +74,7 @@ msgstr ""
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:168 #: lib/cannery_web/live/ammo_group_live/index.html.heex:169
#: 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?"

View File

@ -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:104 #: lib/cannery_web/live/ammo_group_live/index.html.heex:105
#: 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
@ -220,7 +220,7 @@ 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:121 #: lib/cannery_web/live/ammo_group_live/index.html.heex:122
#: 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"
@ -311,7 +311,7 @@ msgstr ""
msgid "Edit %{tag_name}" msgid "Edit %{tag_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:143 #: lib/cannery_web/live/ammo_group_live/index.html.heex:144
#: 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"
@ -332,7 +332,7 @@ msgstr ""
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:97 #: lib/cannery_web/live/ammo_group_live/index.html.heex:98
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Stage" msgid "Stage"
msgstr "" msgstr ""
@ -343,7 +343,7 @@ msgstr ""
msgid "Tag %{container_name}" msgid "Tag %{container_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:96 #: lib/cannery_web/live/ammo_group_live/index.html.heex:97
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Unstage" msgid "Unstage"
msgstr "" msgstr ""
@ -353,18 +353,19 @@ msgstr ""
msgid "View %{ammo_type_name}" msgid "View %{ammo_type_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:155 #: lib/cannery_web/live/ammo_group_live/index.html.heex:156
#, 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:170 #: lib/cannery_web/live/ammo_group_live/index.html.heex:171
#: 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:131 #: lib/cannery_web/live/ammo_group_live/index.html.heex:132
#: lib/cannery_web/live/ammo_type_live/show.html.heex:189
#, 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:90 #: lib/cannery_web/components/ammo_group_table_component.ex:108
#: 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"
@ -88,7 +88,7 @@ msgstr ""
msgid "Case material" msgid "Case material"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:66 #: lib/cannery_web/components/ammo_group_table_component.ex:72
#: 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
@ -109,7 +109,7 @@ msgstr ""
msgid "Corrosive" msgid "Corrosive"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:77 #: lib/cannery_web/components/ammo_group_table_component.ex:100
#: 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"
@ -294,7 +294,6 @@ msgid "No tags"
msgstr "" msgstr ""
#: lib/cannery_web/components/add_shot_group_component.html.heex:38 #: lib/cannery_web/components/add_shot_group_component.html.heex:38
#: lib/cannery_web/components/ammo_group_table_component.ex:82
#: lib/cannery_web/components/shot_group_table_component.ex:43 #: lib/cannery_web/components/shot_group_table_component.ex:43
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:50 #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:50
#: lib/cannery_web/live/ammo_group_live/show.ex:92 #: lib/cannery_web/live/ammo_group_live/show.ex:92
@ -320,7 +319,7 @@ msgstr ""
msgid "Pressure" msgid "Pressure"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:79 #: lib/cannery_web/components/ammo_group_table_component.ex:83
#: 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"
@ -436,7 +435,7 @@ msgstr ""
msgid "No tags for this container" msgid "No tags for this container"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:73 #: lib/cannery_web/components/ammo_group_table_component.ex:79
#: 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"
@ -522,9 +521,9 @@ msgstr ""
msgid "Shot log" msgid "Shot log"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:154 #: lib/cannery_web/components/ammo_group_table_component.ex:180
#: lib/cannery_web/components/ammo_group_table_component.ex:230 #: lib/cannery_web/components/ammo_group_table_component.ex:263
#: lib/cannery_web/components/ammo_type_table_component.ex:224 #: lib/cannery_web/components/ammo_type_table_component.ex:235
#: 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
@ -617,14 +616,15 @@ msgstr ""
msgid "Rounds:" msgid "Rounds:"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:227 #: lib/cannery_web/components/ammo_group_table_component.ex:177
#: lib/cannery_web/components/ammo_type_table_component.ex:223 #: lib/cannery_web/components/ammo_group_table_component.ex:259
#: lib/cannery_web/components/ammo_type_table_component.ex:234
#: lib/cannery_web/live/ammo_type_live/show.html.heex:139 #: lib/cannery_web/live/ammo_type_live/show.html.heex:139
#, 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:81 #: lib/cannery_web/components/ammo_group_table_component.ex:92
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "% left" msgid "% left"
msgstr "" msgstr ""
@ -792,7 +792,7 @@ msgstr ""
msgid "Leave \"Uses left\" blank to make invite unlimited" msgid "Leave \"Uses left\" blank to make invite unlimited"
msgstr "" msgstr ""
#: lib/cannery_web/components/core_components/ammo_group_card.html.heex:57 #: lib/cannery_web/components/core_components/ammo_group_card.html.heex:54
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Container:" msgid "Container:"
msgstr "" msgstr ""
@ -805,7 +805,7 @@ msgstr ""
msgid "Show used" msgid "Show used"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:188 #: lib/cannery_web/components/ammo_group_table_component.ex:218
#: 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}%"
@ -987,18 +987,18 @@ 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:150 #: lib/cannery_web/live/ammo_type_live/show.ex:104
#, 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:234 #: lib/cannery_web/components/ammo_group_table_component.ex:267
#: 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:80 #: lib/cannery_web/components/ammo_group_table_component.ex:84
#, 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:78 #: lib/cannery_web/components/ammo_group_table_component.ex:91
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Original Count" msgid "Original Count"
msgstr "" msgstr ""
@ -1028,7 +1028,7 @@ msgstr ""
msgid "Total packs:" msgid "Total packs:"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:59 #: 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 +1038,12 @@ msgstr ""
msgid "Last used on:" msgid "Last used on:"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:172 #: lib/cannery_web/components/ammo_group_table_component.ex:198
#, 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:58 #: lib/cannery_web/components/ammo_group_table_component.ex:64
#: 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"
@ -1224,7 +1224,7 @@ msgstr ""
msgid "Really great weather" msgid "Really great weather"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:54 #: 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:121
#: 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
@ -1243,3 +1243,8 @@ msgstr ""
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Log out" msgid "Log out"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:100
#, elixir-autogen, elixir-format
msgid "Current Count"
msgstr ""

View File

@ -24,7 +24,7 @@ msgstr ""
## Run "mix gettext.extract" to bring this file up to ## Run "mix gettext.extract" to bring this file up to
## date. Leave "msgstr"s empty as changing them here has no ## date. Leave "msgstr"s empty as changing them here has no
## effect: edit them in PO (.po) files instead. ## effect: edit them in PO (.po) files instead.
#: lib/cannery/containers.ex:200 #: lib/cannery/containers.ex:220
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Container must be empty before deleting" msgid "Container must be empty before deleting"
msgstr "Caithfidh an coimeádán a bheidh follamh roimh scriosadh" msgstr "Caithfidh an coimeádán a bheidh follamh roimh scriosadh"
@ -170,7 +170,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:1015 #: lib/cannery/ammo.ex:1043
#, 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:54 #: lib/cannery_web/live/ammo_type_live/show.ex:49
#: 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"
@ -69,7 +69,7 @@ msgstr ""
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:168 #: lib/cannery_web/live/ammo_group_live/index.html.heex:169
#: 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?"

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:54 #: lib/cannery_web/live/ammo_type_live/show.ex:49
#: 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"
@ -58,7 +58,7 @@ msgstr ""
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:168 #: lib/cannery_web/live/ammo_group_live/index.html.heex:169
#: 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?"

View File

@ -45,7 +45,7 @@ defmodule Cannery.AmmoTest do
assert Ammo.list_ammo_types(current_user) == [ammo_type] assert Ammo.list_ammo_types(current_user) == [ammo_type]
end end
test "list_ammo_types/1 returns relevant ammo_types for a user", test "list_ammo_types/2 returns relevant ammo_types for a user",
%{current_user: current_user} do %{current_user: current_user} do
ammo_type_a = ammo_type_a =
%{"name" => "bullets", "desc" => "has some pews in it", "grains" => 5} %{"name" => "bullets", "desc" => "has some pews in it", "grains" => 5}
@ -89,12 +89,12 @@ defmodule Cannery.AmmoTest do
assert Ammo.list_ammo_types("tracer", current_user) == [ammo_type_c] assert Ammo.list_ammo_types("tracer", current_user) == [ammo_type_c]
end end
test "get_ammo_type!/1 returns the ammo_type with given id", test "get_ammo_type!/2 returns the ammo_type with given id",
%{ammo_type: ammo_type, current_user: current_user} do %{ammo_type: ammo_type, current_user: current_user} 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 "create_ammo_type/1 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)
assert ammo_type.bullet_type == "some bullet_type" assert ammo_type.bullet_type == "some bullet_type"
@ -105,12 +105,12 @@ defmodule Cannery.AmmoTest do
assert ammo_type.grains == 120 assert ammo_type.grains == 120
end end
test "create_ammo_type/1 with invalid data returns error changeset", test "create_ammo_type/2 with invalid data returns error changeset",
%{current_user: current_user} do %{current_user: current_user} do
assert {:error, %Changeset{}} = Ammo.create_ammo_type(@invalid_attrs, current_user) assert {:error, %Changeset{}} = Ammo.create_ammo_type(@invalid_attrs, current_user)
end end
test "update_ammo_type/2 with valid data updates the ammo_type", test "update_ammo_type/3 with valid data updates the ammo_type",
%{ammo_type: ammo_type, current_user: current_user} do %{ammo_type: ammo_type, current_user: current_user} do
assert {:ok, %AmmoType{} = ammo_type} = assert {:ok, %AmmoType{} = ammo_type} =
Ammo.update_ammo_type(ammo_type, @update_attrs, current_user) Ammo.update_ammo_type(ammo_type, @update_attrs, current_user)
@ -123,7 +123,7 @@ defmodule Cannery.AmmoTest do
assert ammo_type.grains == 456 assert ammo_type.grains == 456
end end
test "update_ammo_type/2 with invalid data returns error changeset", test "update_ammo_type/3 with invalid data returns error changeset",
%{ammo_type: ammo_type, current_user: current_user} do %{ammo_type: ammo_type, current_user: current_user} do
assert {:error, %Changeset{}} = assert {:error, %Changeset{}} =
Ammo.update_ammo_type(ammo_type, @invalid_attrs, current_user) Ammo.update_ammo_type(ammo_type, @invalid_attrs, current_user)
@ -131,7 +131,7 @@ defmodule Cannery.AmmoTest do
assert ammo_type == Ammo.get_ammo_type!(ammo_type.id, current_user) assert ammo_type == Ammo.get_ammo_type!(ammo_type.id, current_user)
end end
test "delete_ammo_type/1 deletes the ammo_type", test "delete_ammo_type/2 deletes the ammo_type",
%{ammo_type: ammo_type, current_user: current_user} do %{ammo_type: ammo_type, current_user: current_user} do
assert {:ok, %AmmoType{}} = Ammo.delete_ammo_type(ammo_type, current_user) assert {:ok, %AmmoType{}} = Ammo.delete_ammo_type(ammo_type, current_user)
assert_raise Ecto.NoResultsError, fn -> Ammo.get_ammo_type!(ammo_type.id, current_user) end assert_raise Ecto.NoResultsError, fn -> Ammo.get_ammo_type!(ammo_type.id, current_user) end
@ -785,7 +785,7 @@ 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/2 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,
@ -797,7 +797,7 @@ defmodule Cannery.AmmoTest do
assert Ammo.list_staged_ammo_groups(current_user) == [another_ammo_group] assert Ammo.list_staged_ammo_groups(current_user) == [another_ammo_group]
end end
test "get_ammo_group!/1 returns the ammo_group with given id", test "get_ammo_group!/2 returns the ammo_group with given id",
%{ammo_group: %{id: ammo_group_id} = ammo_group, current_user: current_user} do %{ammo_group: %{id: ammo_group_id} = ammo_group, current_user: current_user} do
assert Ammo.get_ammo_group!(ammo_group_id, current_user) == ammo_group assert Ammo.get_ammo_group!(ammo_group_id, current_user) == ammo_group
end end
@ -861,7 +861,7 @@ defmodule Cannery.AmmoTest do
|> Ammo.create_ammo_groups(1, current_user) |> Ammo.create_ammo_groups(1, current_user)
end end
test "update_ammo_group/2 with valid data updates the ammo_group", test "update_ammo_group/3 with valid data updates the ammo_group",
%{ammo_group: ammo_group, current_user: current_user} do %{ammo_group: ammo_group, current_user: current_user} do
assert {:ok, %AmmoGroup{} = ammo_group} = assert {:ok, %AmmoGroup{} = ammo_group} =
Ammo.update_ammo_group(ammo_group, @update_attrs, current_user) Ammo.update_ammo_group(ammo_group, @update_attrs, current_user)
@ -871,7 +871,7 @@ defmodule Cannery.AmmoTest do
assert ammo_group.price_paid == 456.7 assert ammo_group.price_paid == 456.7
end end
test "update_ammo_group/2 with invalid data returns error changeset", test "update_ammo_group/3 with invalid data returns error changeset",
%{ammo_group: ammo_group, current_user: current_user} do %{ammo_group: ammo_group, current_user: current_user} do
assert {:error, %Changeset{}} = assert {:error, %Changeset{}} =
Ammo.update_ammo_group(ammo_group, @invalid_attrs, current_user) Ammo.update_ammo_group(ammo_group, @invalid_attrs, current_user)
@ -879,13 +879,13 @@ defmodule Cannery.AmmoTest do
assert ammo_group == Ammo.get_ammo_group!(ammo_group.id, current_user) assert ammo_group == Ammo.get_ammo_group!(ammo_group.id, current_user)
end end
test "delete_ammo_group/1 deletes the ammo_group", test "delete_ammo_group/2 deletes the ammo_group",
%{ammo_group: ammo_group, current_user: current_user} do %{ammo_group: ammo_group, current_user: current_user} do
assert {:ok, %AmmoGroup{}} = Ammo.delete_ammo_group(ammo_group, current_user) assert {:ok, %AmmoGroup{}} = Ammo.delete_ammo_group(ammo_group, current_user)
assert_raise KeyError, fn -> Ammo.get_ammo_group!(ammo_group.id, current_user) end assert_raise KeyError, fn -> Ammo.get_ammo_group!(ammo_group.id, current_user) end
end end
test "get_percentage_remaining/1 gets accurate total round count", test "get_percentage_remaining/2 gets accurate total round count",
%{ammo_group: %{id: ammo_group_id} = ammo_group, current_user: current_user} do %{ammo_group: %{id: ammo_group_id} = ammo_group, current_user: current_user} do
assert 100 = ammo_group |> Ammo.get_percentage_remaining(current_user) assert 100 = ammo_group |> Ammo.get_percentage_remaining(current_user)
@ -902,6 +902,53 @@ defmodule Cannery.AmmoTest do
assert 0 = ammo_group |> Ammo.get_percentage_remaining(current_user) assert 0 = ammo_group |> Ammo.get_percentage_remaining(current_user)
end end
test "get_percentages_remaining/2 gets accurate total round count", %{
ammo_group: %{id: ammo_group_id} = ammo_group,
ammo_type: ammo_type,
container: container,
current_user: current_user
} do
assert %{ammo_group_id => 100} ==
[ammo_group] |> Ammo.get_percentages_remaining(current_user)
{1, [%{id: another_ammo_group_id} = another_ammo_group]} =
%{"count" => 50, "price_paid" => 36.1}
|> ammo_group_fixture(ammo_type, container, current_user)
percentages =
[ammo_group, another_ammo_group] |> Ammo.get_percentages_remaining(current_user)
assert %{^ammo_group_id => 100} = percentages
assert %{^another_ammo_group_id => 100} = percentages
shot_group_fixture(%{"count" => 14}, current_user, ammo_group)
ammo_group = Ammo.get_ammo_group!(ammo_group_id, current_user)
percentages =
[ammo_group, another_ammo_group] |> Ammo.get_percentages_remaining(current_user)
assert %{^ammo_group_id => 72} = percentages
assert %{^another_ammo_group_id => 100} = percentages
shot_group_fixture(%{"count" => 11}, current_user, ammo_group)
ammo_group = Ammo.get_ammo_group!(ammo_group_id, current_user)
percentages =
[ammo_group, another_ammo_group] |> Ammo.get_percentages_remaining(current_user)
assert %{^ammo_group_id => 50} = percentages
assert %{^another_ammo_group_id => 100} = percentages
shot_group_fixture(%{"count" => 25}, current_user, ammo_group)
ammo_group = Ammo.get_ammo_group!(ammo_group_id, current_user)
percentages =
[ammo_group, another_ammo_group] |> Ammo.get_percentages_remaining(current_user)
assert %{^ammo_group_id => 0} = percentages
assert %{^another_ammo_group_id => 100} = percentages
end
test "get_cpr/2 gets accurate cpr", test "get_cpr/2 gets accurate cpr",
%{ammo_type: ammo_type, container: container, current_user: current_user} do %{ammo_type: ammo_type, container: container, current_user: current_user} do
{1, [ammo_group]} = ammo_group_fixture(%{"count" => 1}, ammo_type, container, current_user) {1, [ammo_group]} = ammo_group_fixture(%{"count" => 1}, ammo_type, container, current_user)

View File

@ -90,12 +90,24 @@ defmodule Cannery.ContainersTest do
assert Containers.list_containers("asajslkdflskdf", current_user) == [] assert Containers.list_containers("asajslkdflskdf", current_user) == []
end end
test "get_container!/1 returns the container with given id", test "get_container!/2 returns the container with given id",
%{current_user: current_user, container: container} do %{current_user: current_user, container: container} do
assert Containers.get_container!(container.id, current_user) == container assert Containers.get_container!(container.id, current_user) == container
assert_raise KeyError, fn -> Containers.get_container!(current_user.id, current_user) end
end end
test "create_container/1 with valid data creates a container", %{current_user: current_user} do test "get_containers/2 returns the container with given id",
%{current_user: current_user, container: %{id: container_id} = container} do
assert %{container_id => container} ==
Containers.get_containers([container_id], current_user)
%{id: another_container_id} = another_container = container_fixture(current_user)
containers = [container_id, another_container_id] |> Containers.get_containers(current_user)
assert %{^container_id => ^container} = containers
assert %{^another_container_id => ^another_container} = containers
end
test "create_container/2 with valid data creates a container", %{current_user: current_user} do
assert {:ok, %Container{} = container} = assert {:ok, %Container{} = container} =
@valid_attrs |> Containers.create_container(current_user) @valid_attrs |> Containers.create_container(current_user)
@ -106,12 +118,12 @@ defmodule Cannery.ContainersTest do
assert container.user_id == current_user.id assert container.user_id == current_user.id
end end
test "create_container/1 with invalid data returns error changeset", test "create_container/2 with invalid data returns error changeset",
%{current_user: current_user} do %{current_user: current_user} do
assert {:error, %Changeset{}} = @invalid_attrs |> Containers.create_container(current_user) assert {:error, %Changeset{}} = @invalid_attrs |> Containers.create_container(current_user)
end end
test "update_container/2 with valid data updates the container", test "update_container/3 with valid data updates the container",
%{current_user: current_user, container: container} do %{current_user: current_user, container: container} do
assert {:ok, %Container{} = container} = assert {:ok, %Container{} = container} =
Containers.update_container(container, current_user, @update_attrs) Containers.update_container(container, current_user, @update_attrs)
@ -122,7 +134,7 @@ defmodule Cannery.ContainersTest do
assert container.type == "some updated type" assert container.type == "some updated type"
end end
test "update_container/2 with invalid data returns error changeset", test "update_container/3 with invalid data returns error changeset",
%{current_user: current_user, container: container} do %{current_user: current_user, container: container} do
assert {:error, %Changeset{}} = assert {:error, %Changeset{}} =
Containers.update_container(container, current_user, @invalid_attrs) Containers.update_container(container, current_user, @invalid_attrs)
@ -130,11 +142,11 @@ defmodule Cannery.ContainersTest do
assert container == Containers.get_container!(container.id, current_user) assert container == Containers.get_container!(container.id, current_user)
end end
test "delete_container/1 deletes the container", test "delete_container/2 deletes the container",
%{current_user: current_user, container: container} do %{current_user: current_user, container: container} do
assert {:ok, %Container{}} = Containers.delete_container(container, current_user) assert {:ok, %Container{}} = Containers.delete_container(container, current_user)
assert_raise Ecto.NoResultsError, fn -> assert_raise KeyError, fn ->
Containers.get_container!(container.id, current_user) Containers.get_container!(container.id, current_user)
end end
end end
@ -168,36 +180,36 @@ defmodule Cannery.ContainersTest do
assert Containers.list_tags("hollows", current_user) == [tag_b] assert Containers.list_tags("hollows", current_user) == [tag_b]
end end
test "get_tag!/1 returns the tag with given id", %{tag: tag, current_user: current_user} do test "get_tag!/2 returns the tag with given id", %{tag: tag, current_user: current_user} do
assert Containers.get_tag!(tag.id, current_user) == tag assert Containers.get_tag!(tag.id, current_user) == tag
end end
test "create_tag/1 with valid data creates a tag", %{current_user: current_user} do test "create_tag/2 with valid data creates a tag", %{current_user: current_user} do
assert {:ok, %Tag{} = tag} = Containers.create_tag(@valid_tag_attrs, current_user) assert {:ok, %Tag{} = tag} = Containers.create_tag(@valid_tag_attrs, current_user)
assert tag.bg_color == "some bg-color" assert tag.bg_color == "some bg-color"
assert tag.name == "some name" assert tag.name == "some name"
assert tag.text_color == "some text-color" assert tag.text_color == "some text-color"
end end
test "create_tag/1 with invalid data returns error changeset", test "create_tag/2 with invalid data returns error changeset",
%{current_user: current_user} do %{current_user: current_user} do
assert {:error, %Changeset{}} = Containers.create_tag(@invalid_tag_attrs, current_user) assert {:error, %Changeset{}} = Containers.create_tag(@invalid_tag_attrs, current_user)
end end
test "update_tag/2 with valid data updates the tag", %{tag: tag, current_user: current_user} do test "update_tag/3 with valid data updates the tag", %{tag: tag, current_user: current_user} do
assert {:ok, %Tag{} = tag} = Containers.update_tag(tag, @update_tag_attrs, current_user) assert {:ok, %Tag{} = tag} = Containers.update_tag(tag, @update_tag_attrs, current_user)
assert tag.bg_color == "some updated bg-color" assert tag.bg_color == "some updated bg-color"
assert tag.name == "some updated name" assert tag.name == "some updated name"
assert tag.text_color == "some updated text-color" assert tag.text_color == "some updated text-color"
end end
test "update_tag/2 with invalid data returns error changeset", test "update_tag/3 with invalid data returns error changeset",
%{tag: tag, current_user: current_user} do %{tag: tag, current_user: current_user} do
assert {:error, %Changeset{}} = Containers.update_tag(tag, @invalid_tag_attrs, current_user) assert {:error, %Changeset{}} = Containers.update_tag(tag, @invalid_tag_attrs, current_user)
assert tag == Containers.get_tag!(tag.id, current_user) assert tag == Containers.get_tag!(tag.id, current_user)
end end
test "delete_tag/1 deletes the tag", %{tag: tag, current_user: current_user} do test "delete_tag/2 deletes the tag", %{tag: tag, current_user: current_user} do
assert {:ok, %Tag{}} = Containers.delete_tag(tag, current_user) assert {:ok, %Tag{}} = Containers.delete_tag(tag, current_user)
assert_raise Ecto.NoResultsError, fn -> Containers.get_tag!(tag.id, current_user) end assert_raise Ecto.NoResultsError, fn -> Containers.get_tag!(tag.id, current_user) end
end end

View File

@ -116,7 +116,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 html =~ "42" assert html =~ "\n42\n"
end end
test "saves multiple new ammo_groups", %{conn: conn, current_user: current_user} do test "saves multiple new ammo_groups", %{conn: conn, current_user: current_user} do
@ -202,7 +202,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 updated successfully") assert html =~ dgettext("prompts", "Ammo updated successfully")
assert html =~ "43" assert html =~ "\n43\n"
end end
test "clones ammo_group in listing", %{conn: conn, ammo_group: ammo_group} do test "clones ammo_group in listing", %{conn: conn, ammo_group: ammo_group} do
@ -229,7 +229,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 html =~ "42" assert html =~ "\n42\n"
assert html =~ gettext("$%{amount}", amount: display_currency(120.5)) assert html =~ gettext("$%{amount}", amount: display_currency(120.5))
end end
@ -257,7 +257,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 html =~ "43" assert html =~ "\n43\n"
assert html =~ gettext("$%{amount}", amount: display_currency(120.5)) assert html =~ gettext("$%{amount}", amount: display_currency(120.5))
end end
@ -309,12 +309,8 @@ defmodule CanneryWeb.AmmoGroupLiveTest do
assert html =~ dgettext("actions", "Show used") assert html =~ dgettext("actions", "Show used")
refute html =~ gettext("$%{amount}", amount: display_currency(50.00)) refute html =~ gettext("$%{amount}", amount: display_currency(50.00))
refute html =~ percentage = ammo_group |> Ammo.get_percentage_remaining(current_user)
"\n" <> refute html =~ "\n#{gettext("%{percentage}%", percentage: percentage)}\n"
gettext("%{percentage}%",
percentage: ammo_group |> Ammo.get_percentage_remaining(current_user)
) <>
"\n"
html = html =
show_live show_live
@ -323,12 +319,8 @@ defmodule CanneryWeb.AmmoGroupLiveTest do
assert html =~ gettext("$%{amount}", amount: display_currency(50.00)) assert html =~ gettext("$%{amount}", amount: display_currency(50.00))
assert html =~ percentage = ammo_group |> Ammo.get_percentage_remaining(current_user)
"\n" <> assert html =~ "\n#{gettext("%{percentage}%", percentage: percentage)}\n"
gettext("%{percentage}%",
percentage: ammo_group |> Ammo.get_percentage_remaining(current_user)
) <>
"\n"
end end
end end

View File

@ -230,9 +230,9 @@ defmodule CanneryWeb.AmmoTypeLiveTest do
assert html =~ gettext("Used packs") assert html =~ gettext("Used packs")
assert html =~ gettext("Total ever packs") assert html =~ gettext("Total ever packs")
assert html =~ "20" assert html =~ "\n20\n"
assert html =~ "0" assert html =~ "\n0\n"
assert html =~ "1" assert html =~ "\n1\n"
shot_group_fixture(%{"count" => 5}, current_user, ammo_group) shot_group_fixture(%{"count" => 5}, current_user, ammo_group)
@ -243,8 +243,8 @@ defmodule CanneryWeb.AmmoTypeLiveTest do
|> element(~s/input[type="checkbox"][aria-labelledby="toggle_show_used-label"}]/) |> element(~s/input[type="checkbox"][aria-labelledby="toggle_show_used-label"}]/)
|> render_click() |> render_click()
assert html =~ "15" assert html =~ "\n15\n"
assert html =~ "5" assert html =~ "\n5\n"
end end
end end
@ -297,7 +297,7 @@ defmodule CanneryWeb.AmmoTypeLiveTest do
{:ok, _show_live, html} = live(conn, Routes.ammo_type_show_path(conn, :show, ammo_type)) {:ok, _show_live, html} = live(conn, Routes.ammo_type_show_path(conn, :show, ammo_type))
assert html =~ ammo_type_name assert html =~ ammo_type_name
assert html =~ "some ammo group" assert html =~ "\n20\n"
assert html =~ container_name assert html =~ container_name
end end
@ -310,9 +310,7 @@ defmodule CanneryWeb.AmmoTypeLiveTest do
|> element(~s/input[type="checkbox"][aria-labelledby="toggle_table-label"}]/) |> element(~s/input[type="checkbox"][aria-labelledby="toggle_table-label"}]/)
|> render_click() |> render_click()
assert_patch(show_live, Routes.ammo_type_show_path(conn, :table, ammo_type)) assert html =~ "\n20\n"
assert html =~ "some ammo group"
assert html =~ container_name assert html =~ container_name
end end
end end
@ -325,14 +323,14 @@ defmodule CanneryWeb.AmmoTypeLiveTest do
{:ok, show_live, html} = live(conn, Routes.ammo_type_show_path(conn, :show, ammo_type)) {:ok, show_live, html} = live(conn, Routes.ammo_type_show_path(conn, :show, ammo_type))
assert html =~ dgettext("actions", "Show used") assert html =~ dgettext("actions", "Show used")
refute html =~ "some ammo group" refute html =~ "\n20\n"
html = html =
show_live show_live
|> element(~s/input[type="checkbox"][aria-labelledby="toggle_show_used-label"}]/) |> element(~s/input[type="checkbox"][aria-labelledby="toggle_show_used-label"}]/)
|> render_click() |> render_click()
assert html =~ "some ammo group" assert html =~ "\n20\n"
assert html =~ "Empty" assert html =~ "Empty"
assert html =~ container_name assert html =~ container_name
end end
@ -346,17 +344,15 @@ defmodule CanneryWeb.AmmoTypeLiveTest do
|> element(~s/input[type="checkbox"][aria-labelledby="toggle_table-label"}]/) |> element(~s/input[type="checkbox"][aria-labelledby="toggle_table-label"}]/)
|> render_click() |> render_click()
assert_patch(show_live, Routes.ammo_type_show_path(conn, :table, ammo_type))
assert html =~ dgettext("actions", "Show used") assert html =~ dgettext("actions", "Show used")
refute html =~ "some ammo group" refute html =~ "\n20\n"
html = html =
show_live show_live
|> element(~s/input[type="checkbox"][aria-labelledby="toggle_show_used-label"}]/) |> element(~s/input[type="checkbox"][aria-labelledby="toggle_show_used-label"}]/)
|> render_click() |> render_click()
assert html =~ "some ammo group" assert html =~ "\n20\n"
assert html =~ "Empty" assert html =~ "Empty"
assert html =~ container_name assert html =~ container_name
end end

View File

@ -273,7 +273,7 @@ defmodule CanneryWeb.ContainerLiveTest do
{:ok, _show_live, html} = live(conn, Routes.container_show_path(conn, :show, container)) {:ok, _show_live, html} = live(conn, Routes.container_show_path(conn, :show, container))
assert html =~ ammo_type_name assert html =~ ammo_type_name
assert html =~ "some ammo group" assert html =~ "\n20\n"
end end
test "displays ammo group in table", test "displays ammo group in table",
@ -286,7 +286,7 @@ defmodule CanneryWeb.ContainerLiveTest do
|> render_click() |> render_click()
assert html =~ ammo_type_name assert html =~ ammo_type_name
assert html =~ "some ammo group" assert html =~ "\n20\n"
end end
end end
@ -298,7 +298,7 @@ defmodule CanneryWeb.ContainerLiveTest do
{:ok, show_live, html} = live(conn, Routes.container_show_path(conn, :show, container)) {:ok, show_live, html} = live(conn, Routes.container_show_path(conn, :show, container))
assert html =~ dgettext("actions", "Show used") assert html =~ dgettext("actions", "Show used")
refute html =~ "some ammo group" refute html =~ "\n20\n"
html = html =
show_live show_live
@ -306,7 +306,7 @@ defmodule CanneryWeb.ContainerLiveTest do
|> render_click() |> render_click()
assert html =~ ammo_type_name assert html =~ ammo_type_name
assert html =~ "some ammo group" assert html =~ "\n20\n"
assert html =~ "Empty" assert html =~ "Empty"
end end
@ -320,7 +320,7 @@ defmodule CanneryWeb.ContainerLiveTest do
|> render_click() |> render_click()
assert html =~ dgettext("actions", "Show used") assert html =~ dgettext("actions", "Show used")
refute html =~ "some ammo group" refute html =~ "\n20\n"
html = html =
show_live show_live
@ -328,7 +328,7 @@ defmodule CanneryWeb.ContainerLiveTest do
|> render_click() |> render_click()
assert html =~ ammo_type_name assert html =~ ammo_type_name
assert html =~ "some ammo group" assert html =~ "\n20\n"
assert html =~ "Empty" assert html =~ "Empty"
end end
end end