Compare commits

...

7 Commits

Author SHA1 Message Date
09774e0aed bump to 0.7.0
All checks were successful
continuous-integration/drone/push Build is passing
2022-11-12 14:38:40 -05:00
44d4d7c6f9 add CPR and original count to json export 2022-11-12 14:37:55 -05:00
1fed895b82 display cpr for ammo packs and add original count for ammo packs 2022-11-12 14:33:11 -05:00
3480aff61d make ammo type show page and container show page also display ammo groups as table 2022-11-12 13:53:23 -05:00
1ea4b99c81 fix whitespace when copying invite url 2022-11-11 21:36:57 -05:00
2191e7f4f4 fix chart to sum by day 2022-11-11 19:34:23 -05:00
8231683958 add shading to table component 2022-11-11 18:47:55 -05:00
54 changed files with 1906 additions and 965 deletions

View File

@ -1,3 +1,13 @@
# v0.7.0
- Add shading to table component
- Fix chart to sum by day
- Fix whitespace when copying invite url
- Make ammo type show page also display ammo groups as table
- Make container show page also display ammo groups as table
- Display CPR for ammo packs
- Add original count for ammo packs
- Add ammo pack CPR and original count to json export
# v0.6.0
- Update translations
- Display used-up date on used-up ammo

View File

@ -11,22 +11,23 @@ export default {
data: {
datasets: [{
label: el.dataset.label,
data: data.map(({ date, count, labels }) => ({
labels,
data: data.map(({ date, count, label }) => ({
label,
x: date,
y: count
})),
backgroundColor: el.dataset.color,
backgroundColor: `${el.dataset.color}77`,
borderColor: el.dataset.color,
fill: true,
borderWidth: 4
borderWidth: 3,
pointBorderWidth: 1
}]
},
options: {
elements: {
point: {
radius: 7,
hoverRadius: 10
radius: 9,
hoverRadius: 12
}
},
plugins: {
@ -39,7 +40,8 @@ export default {
tooltip: {
displayColors: false,
callbacks: {
label: ({ raw: { labels } }) => labels
title: (contexts) => contexts.map(({ raw: { x } }) => Intl.DateTimeFormat([], { timeZone: 'Etc/UTC', dateStyle: 'short' }).format(new Date(x))),
label: ({ raw: { label } }) => label
}
}
},

View File

@ -513,6 +513,28 @@ defmodule Cannery.Ammo do
round(count / (count + shot_group_sum) * 100)
end
@doc """
Gets the original count for an ammo group
"""
@spec get_original_count(AmmoGroup.t()) :: non_neg_integer()
def get_original_count(%AmmoGroup{count: count} = ammo_group) do
count + get_used_count(ammo_group)
end
@doc """
Calculates the CPR for a single ammo group
"""
@spec get_cpr(AmmoGroup.t()) :: nil | float()
def get_cpr(%AmmoGroup{price_paid: nil}), do: nil
def get_cpr(%AmmoGroup{price_paid: price_paid} = ammo_group),
do: calculate_cpr(price_paid, get_original_count(ammo_group))
@spec calculate_cpr(price_paid :: float() | nil, count :: integer()) :: float() | nil
defp calculate_cpr(nil, _count), do: nil
defp calculate_cpr(_price_paid, 0), do: nil
defp calculate_cpr(price_paid, total_count), do: price_paid / total_count
@doc """
Creates multiple ammo_groups at once.

View File

@ -17,6 +17,7 @@ defmodule CanneryWeb.Components.AmmoGroupCard do
preloads = if show_container, do: [:ammo_type, :container], else: [:ammo_type]
ammo_group = ammo_group |> Repo.preload(preloads)
assigns = assigns |> assign(:ammo_group, ammo_group)
~H"""
@ -35,9 +36,16 @@ defmodule CanneryWeb.Components.AmmoGroupCard do
<div class="flex flex-col justify-center items-center">
<span class="rounded-lg title text-lg">
<%= gettext("Count:") %>
<%= if @ammo_group.count == 0, do: "Empty", else: @ammo_group.count %>
<%= if @ammo_group.count == 0, do: gettext("Empty"), else: @ammo_group.count %>
</span>
<%= if @ammo_group |> Ammo.get_original_count() != @ammo_group.count do %>
<span class="rounded-lg title text-lg">
<%= gettext("Original Count:") %>
<%= @ammo_group |> Ammo.get_original_count() %>
</span>
<% end %>
<%= if @ammo_group.notes do %>
<span class="rounded-lg title text-lg">
<%= gettext("Notes:") %>
@ -64,6 +72,13 @@ defmodule CanneryWeb.Components.AmmoGroupCard do
amount: @ammo_group.price_paid |> :erlang.float_to_binary(decimals: 2)
) %>
</span>
<span class="rounded-lg title text-lg">
<%= gettext("CPR:") %>
<%= gettext("$%{amount}",
amount: @ammo_group |> Ammo.get_cpr() |> :erlang.float_to_binary(decimals: 2)
) %>
</span>
<% end %>
<%= if @show_container and @ammo_group.container do %>

View File

@ -0,0 +1,236 @@
defmodule CanneryWeb.Components.AmmoGroupTableComponent do
@moduledoc """
A component that displays a list of ammo groups
"""
use CanneryWeb, :live_component
alias Cannery.{Accounts.User, Ammo, Ammo.AmmoGroup, Repo}
alias Ecto.UUID
alias Phoenix.LiveView.{Rendered, Socket}
@impl true
@spec update(
%{
required(:id) => UUID.t(),
required(:current_user) => User.t(),
required(:ammo_groups) => [AmmoGroup.t()],
optional(:show_used) => boolean(),
optional(:ammo_type) => Rendered.t(),
optional(:range) => Rendered.t(),
optional(:container) => Rendered.t(),
optional(:actions) => Rendered.t(),
optional(any()) => any()
},
Socket.t()
) :: {:ok, Socket.t()}
def update(%{id: _id, ammo_groups: _ammo_group, current_user: _current_user} = assigns, socket) do
socket =
socket
|> assign(assigns)
|> assign_new(:show_used, fn -> false end)
|> assign_new(:ammo_type, fn -> [] end)
|> assign_new(:range, fn -> [] end)
|> assign_new(:container, fn -> [] end)
|> assign_new(:actions, fn -> [] end)
|> display_ammo_groups()
{:ok, socket}
end
defp display_ammo_groups(
%{
assigns: %{
ammo_groups: ammo_groups,
current_user: current_user,
show_used: show_used,
ammo_type: ammo_type,
range: range,
container: container,
actions: actions
}
} = socket
) do
columns =
if actions == [] do
[]
else
[%{label: nil, key: :actions, sortable: false}]
end
columns =
if show_used do
[%{label: gettext("Used up on"), key: :used_up_on} | columns]
else
columns
end
columns = [%{label: gettext("Added on"), key: :added_on} | columns]
columns =
if container == [] do
columns
else
[%{label: gettext("Container"), key: :container} | columns]
end
columns =
if range == [] do
columns
else
[%{label: gettext("Range"), key: :range} | columns]
end
columns = [
%{label: gettext("Count"), key: :count},
%{label: gettext("Original Count"), key: :original_count},
%{label: gettext("Price paid"), key: :price_paid},
%{label: gettext("CPR"), key: :cpr},
%{label: gettext("% left"), key: :remaining},
%{label: gettext("Notes"), key: :notes}
| columns
]
columns =
if ammo_type == [] do
columns
else
[%{label: gettext("Ammo type"), key: :ammo_type} | columns]
end
rows =
ammo_groups
|> Repo.preload([:ammo_type, :container])
|> Enum.map(fn ammo_group ->
ammo_group
|> get_row_data_for_ammo_group(%{
current_user: current_user,
ammo_type: ammo_type,
columns: columns,
container: container,
actions: actions,
range: range
})
end)
socket |> assign(columns: columns, rows: rows)
end
@impl true
def render(assigns) do
~H"""
<div class="w-full">
<.live_component
module={CanneryWeb.Components.TableComponent}
id={@id}
columns={@columns}
rows={@rows}
/>
</div>
"""
end
@spec get_row_data_for_ammo_group(AmmoGroup.t(), additional_data :: map()) :: map()
defp get_row_data_for_ammo_group(ammo_group, %{columns: columns} = additional_data) do
ammo_group = ammo_group |> Repo.preload([:ammo_type, :container])
columns
|> Map.new(fn %{key: key} ->
{key, get_value_for_key(key, ammo_group, additional_data)}
end)
end
@spec get_value_for_key(atom(), AmmoGroup.t(), additional_data :: map()) ::
any() | {any(), Rendered.t()}
defp get_value_for_key(
:ammo_type,
%{ammo_type: %{name: ammo_type_name} = ammo_type},
%{ammo_type: ammo_type_block}
) do
assigns = %{ammo_type: ammo_type, ammo_type_block: ammo_type_block}
{ammo_type_name,
~H"""
<%= render_slot(@ammo_type_block, @ammo_type) %>
"""}
end
defp get_value_for_key(:price_paid, %{price_paid: nil}, _additional_data), do: {"", nil}
defp get_value_for_key(:price_paid, %{price_paid: price_paid}, _additional_data),
do: gettext("$%{amount}", amount: price_paid |> :erlang.float_to_binary(decimals: 2))
defp get_value_for_key(:added_on, %{inserted_at: inserted_at}, _additional_data) do
assigns = %{inserted_at: inserted_at}
{inserted_at,
~H"""
<%= @inserted_at |> display_datetime() %>
"""}
end
defp get_value_for_key(:used_up_on, ammo_group, _additional_data) do
last_shot_group_date =
case ammo_group |> Ammo.get_last_used_shot_group() do
%{date: last_shot_group_date} -> last_shot_group_date
_no_shot_groups -> nil
end
assigns = %{last_shot_group_date: last_shot_group_date}
{last_shot_group_date,
~H"""
<%= @last_shot_group_date |> display_date() %>
"""}
end
defp get_value_for_key(:range, %{staged: staged} = ammo_group, %{range: range}) do
assigns = %{range: range, ammo_group: ammo_group}
{staged,
~H"""
<%= render_slot(@range, @ammo_group) %>
"""}
end
defp get_value_for_key(:remaining, ammo_group, _additional_data),
do: gettext("%{percentage}%", percentage: ammo_group |> Ammo.get_percentage_remaining())
defp get_value_for_key(:actions, ammo_group, %{actions: actions}) do
assigns = %{actions: actions, ammo_group: ammo_group}
~H"""
<%= render_slot(@actions, @ammo_group) %>
"""
end
defp get_value_for_key(:container, %{container: nil}, _additional_data), do: {nil, nil}
defp get_value_for_key(
:container,
%{container: %{name: container_name}} = ammo_group,
%{container: container}
) do
assigns = %{container: container, ammo_group: ammo_group}
{container_name,
~H"""
<%= render_slot(@container, @ammo_group) %>
"""}
end
defp get_value_for_key(:original_count, ammo_group, _additional_data),
do: ammo_group |> Ammo.get_original_count()
defp get_value_for_key(:cpr, %{price_paid: nil}, _additional_data),
do: gettext("No cost information")
defp get_value_for_key(:cpr, ammo_group, _additional_data) do
gettext("$%{amount}",
amount: ammo_group |> Ammo.get_cpr() |> :erlang.float_to_binary(decimals: 2)
)
end
defp get_value_for_key(:count, %{count: count}, _additional_data),
do: if(count == 0, do: gettext("Empty"), else: count)
defp get_value_for_key(key, ammo_group, _additional_data), do: ammo_group |> Map.get(key)
end

View File

@ -37,10 +37,8 @@ defmodule CanneryWeb.Components.InviteCard do
<code
id={"code-#{@invite.id}"}
class="mx-2 my-1 text-xs px-4 py-2 rounded-lg text-center break-all text-gray-100 bg-primary-800"
>
<%= Routes.user_registration_url(Endpoint, :new, invite: @invite.token) %>
</code>
phx-no-format
><%= Routes.user_registration_url(Endpoint, :new, invite: @invite.token) %></code>
<%= render_slot(@code_actions) %>
</div>

View File

@ -106,7 +106,7 @@ defmodule CanneryWeb.Components.MoveAmmoGroupComponent do
containers
|> Enum.map(fn container ->
columns
|> Enum.into(%{}, fn %{key: key} -> {key, get_row_value_by_key(key, container, assigns)} end)
|> Map.new(fn %{key: key} -> {key, get_row_value_by_key(key, container, assigns)} end)
end)
end

View File

@ -21,6 +21,7 @@ defmodule CanneryWeb.Components.TableComponent do
use CanneryWeb, :live_component
alias Phoenix.LiveView.Socket
require Integer
@impl true
@spec update(
@ -30,6 +31,8 @@ defmodule CanneryWeb.Components.TableComponent do
required(:label) => String.t() | nil,
required(:key) => atom() | nil,
optional(:class) => String.t(),
optional(:row_class) => String.t(),
optional(:alternate_row_class) => String.t(),
optional(:sortable) => false
}),
required(:rows) =>
@ -57,7 +60,7 @@ defmodule CanneryWeb.Components.TableComponent do
:asc
end
rows = rows |> Enum.sort_by(fn row -> row |> Map.get(initial_key) end, initial_sort_mode)
rows = rows |> sort_by_custom_sort_value_or_value(initial_key, initial_sort_mode)
socket =
socket
@ -68,6 +71,8 @@ defmodule CanneryWeb.Components.TableComponent do
last_sort_key: initial_key,
sort_mode: initial_sort_mode
)
|> assign_new(:row_class, fn -> "bg-white" end)
|> assign_new(:alternate_row_class, fn -> "bg-gray-200" end)
{:ok, socket}
end

View File

@ -6,7 +6,7 @@
<%= if column |> Map.get(:sortable, true) do %>
<th class={"p-2 #{column[:class]}"}>
<span
class="cursor-pointer"
class="cursor-pointer flex justify-center items-center space-x-2"
phx-click="sort_by"
phx-value-sort-key={key}
phx-target={@myself}
@ -33,8 +33,8 @@
</tr>
</thead>
<tbody>
<%= for values <- @rows do %>
<tr>
<%= for {values, i} <- @rows |> Enum.with_index() do %>
<tr class={if i |> Integer.is_even(), do: @row_class, else: @alternate_row_class}>
<%= for %{key: key} = value <- @columns do %>
<td class={"p-2 #{value[:class]}"}>
<%= case values |> Map.get(key) do %>

View File

@ -25,7 +25,9 @@ defmodule CanneryWeb.ExportController do
ammo_groups =
Ammo.list_ammo_groups(current_user, true)
|> Enum.map(fn ammo_group ->
cpr = ammo_group |> Ammo.get_cpr()
used_count = ammo_group |> Ammo.get_used_count()
original_count = ammo_group |> Ammo.get_original_count()
percentage_remaining = ammo_group |> Ammo.get_percentage_remaining()
ammo_group
@ -33,7 +35,9 @@ defmodule CanneryWeb.ExportController do
|> Jason.decode!()
|> Map.merge(%{
"used_count" => used_count,
"percentage_remaining" => percentage_remaining
"percentage_remaining" => percentage_remaining,
"original_count" => original_count,
"cpr" => cpr
})
end)

View File

@ -95,183 +95,11 @@ defmodule CanneryWeb.AmmoGroupLive.Index do
ammo_types_count = Ammo.get_ammo_types_count!(current_user)
containers_count = Containers.get_containers_count!(current_user)
columns = [
%{label: gettext("Ammo type"), key: :ammo_type},
%{label: gettext("Count"), key: :count},
%{label: gettext("Price paid"), key: :price_paid},
%{label: gettext("% left"), key: :remaining},
%{label: gettext("Range"), key: :range},
%{label: gettext("Container"), key: :container},
%{label: gettext("Added on"), key: :added_on}
]
columns =
if show_used do
columns ++ [%{label: gettext("Used up on"), key: :used_up_on}]
else
columns
end
columns = columns ++ [%{label: nil, key: :actions, sortable: false}]
rows =
ammo_groups
|> Enum.map(fn ammo_group -> ammo_group |> get_row_data_for_ammo_group(columns) end)
socket
|> assign(
ammo_groups: ammo_groups,
ammo_types_count: ammo_types_count,
containers_count: containers_count,
columns: columns,
rows: rows
containers_count: containers_count
)
end
@spec get_row_data_for_ammo_group(AmmoGroup.t(), [map()]) :: [map()]
defp get_row_data_for_ammo_group(ammo_group, columns) do
ammo_group = ammo_group |> Repo.preload([:ammo_type, :container])
columns
|> Enum.into(%{}, fn %{key: key} -> {key, get_value_for_key(key, ammo_group)} end)
end
@spec get_value_for_key(atom(), AmmoGroup.t()) :: any()
defp get_value_for_key(:ammo_type, %{ammo_type: ammo_type}) do
assigns = %{ammo_type: ammo_type}
{ammo_type.name,
~H"""
<.link navigate={Routes.ammo_type_show_path(Endpoint, :show, @ammo_type)} class="link">
<%= @ammo_type.name %>
</.link>
"""}
end
defp get_value_for_key(:price_paid, %{price_paid: nil}), do: {"a", nil}
defp get_value_for_key(:price_paid, %{price_paid: price_paid}),
do: gettext("$%{amount}", amount: price_paid |> :erlang.float_to_binary(decimals: 2))
defp get_value_for_key(:added_on, %{inserted_at: inserted_at}) do
assigns = %{inserted_at: inserted_at}
{inserted_at,
~H"""
<%= @inserted_at |> display_datetime() %>
"""}
end
defp get_value_for_key(:used_up_on, ammo_group) do
last_shot_group_date =
case ammo_group |> Ammo.get_last_used_shot_group() do
%{date: last_shot_group_date} -> last_shot_group_date
_no_shot_groups -> nil
end
assigns = %{last_shot_group_date: last_shot_group_date}
{last_shot_group_date,
~H"""
<%= @last_shot_group_date |> display_date() %>
"""}
end
defp get_value_for_key(:range, %{staged: staged} = ammo_group) do
assigns = %{ammo_group: ammo_group}
{staged,
~H"""
<div class="min-w-20 py-2 px-4 h-full flex flew-wrap justify-center items-center">
<button
type="button"
class="mx-2 my-1 text-sm btn btn-primary"
phx-click="toggle_staged"
phx-value-ammo_group_id={@ammo_group.id}
>
<%= if @ammo_group.staged, do: gettext("Unstage"), else: gettext("Stage") %>
</button>
<.link
patch={Routes.ammo_group_index_path(Endpoint, :add_shot_group, @ammo_group)}
class="mx-2 my-1 text-sm btn btn-primary"
>
<%= dgettext("actions", "Record shots") %>
</.link>
</div>
"""}
end
defp get_value_for_key(:remaining, ammo_group),
do: gettext("%{percentage}%", percentage: ammo_group |> Ammo.get_percentage_remaining())
defp get_value_for_key(:actions, ammo_group) do
assigns = %{ammo_group: ammo_group}
~H"""
<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"
data-qa={"view-#{@ammo_group.id}"}
>
<i class="fa-fw fa-lg fas fa-eye"></i>
</.link>
<.link
patch={Routes.ammo_group_index_path(Endpoint, :edit, @ammo_group)}
class="text-primary-600 link"
data-qa={"edit-#{@ammo_group.id}"}
>
<i class="fa-fw fa-lg fas fa-edit"></i>
</.link>
<.link
patch={Routes.ammo_group_index_path(Endpoint, :clone, @ammo_group)}
class="text-primary-600 link"
data-qa={"clone-#{@ammo_group.id}"}
>
<i class="fa-fw fa-lg fas fa-copy"></i>
</.link>
<.link
href="#"
class="text-primary-600 link"
phx-click="delete"
phx-value-id={@ammo_group.id}
data-confirm={dgettext("prompts", "Are you sure you want to delete this ammo?")}
data-qa={"delete-#{@ammo_group.id}"}
>
<i class="fa-fw fa-lg fas fa-trash"></i>
</.link>
</div>
"""
end
defp get_value_for_key(:container, %{container: nil}), do: {nil, nil}
defp get_value_for_key(:container, %{container: %{name: container_name}} = ammo_group) do
assigns = %{ammo_group: ammo_group}
{container_name,
~H"""
<div class="min-w-20 py-2 px-4 h-full flex flew-wrap justify-center items-center">
<.link
navigate={Routes.container_show_path(Endpoint, :show, @ammo_group.container)}
class="mx-2 my-1 link"
>
<%= @ammo_group.container.name %>
</.link>
<.link
patch={Routes.ammo_group_index_path(Endpoint, :move, @ammo_group)}
class="mx-2 my-1 text-sm btn btn-primary"
>
<%= gettext("Move ammo") %>
</.link>
</div>
"""}
end
defp get_value_for_key(key, ammo_group), do: ammo_group |> Map.get(key)
end

View File

@ -42,7 +42,7 @@
<% end %>
<%= unless @ammo_groups |> Enum.empty?() do %>
<div class="flex flex-col justify-center items-center">
<div class="flex flex-col space-y-4 justify-center items-center">
<.toggle_button action="toggle_show_used" value={@show_used}>
<span class="title text-lg text-primary-600">
<%= gettext("Show used") %>
@ -51,12 +51,92 @@
</div>
<.live_component
module={CanneryWeb.Components.TableComponent}
id="ammo_groups_index_table"
action={@live_action}
columns={@columns}
rows={@rows}
/>
module={CanneryWeb.Components.AmmoGroupTableComponent}
id="ammo-group-index-table"
ammo_groups={@ammo_groups}
current_user={@current_user}
show_used={@show_used}
>
<:ammo_type :let={%{name: ammo_type_name} = ammo_type}>
<.link navigate={Routes.ammo_type_show_path(Endpoint, :show, ammo_type)} class="link">
<%= ammo_type_name %>
</.link>
</:ammo_type>
<:range :let={ammo_group}>
<div class="min-w-20 py-2 px-4 h-full flex flew-wrap justify-center items-center">
<button
type="button"
class="mx-2 my-1 text-sm btn btn-primary"
phx-click="toggle_staged"
phx-value-ammo_group_id={ammo_group.id}
>
<%= if ammo_group.staged, do: gettext("Unstage"), else: gettext("Stage") %>
</button>
<.link
patch={Routes.ammo_group_index_path(Endpoint, :add_shot_group, ammo_group)}
class="mx-2 my-1 text-sm btn btn-primary"
>
<%= dgettext("actions", "Record shots") %>
</.link>
</div>
</:range>
<:container :let={%{container: %{name: container_name} = container} = ammo_group}>
<div class="min-w-20 py-2 px-4 h-full flex flew-wrap justify-center items-center">
<.link
navigate={Routes.container_show_path(Endpoint, :show, container)}
class="mx-2 my-1 link"
>
<%= container_name %>
</.link>
<.link
patch={Routes.ammo_group_index_path(Endpoint, :move, ammo_group)}
class="mx-2 my-1 text-sm btn btn-primary"
>
<%= gettext("Move ammo") %>
</.link>
</div>
</:container>
<:actions :let={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"
data-qa={"view-#{ammo_group.id}"}
>
<i class="fa-fw fa-lg fas fa-eye"></i>
</.link>
<.link
patch={Routes.ammo_group_index_path(Endpoint, :edit, ammo_group)}
class="text-primary-600 link"
data-qa={"edit-#{ammo_group.id}"}
>
<i class="fa-fw fa-lg fas fa-edit"></i>
</.link>
<.link
patch={Routes.ammo_group_index_path(Endpoint, :clone, ammo_group)}
class="text-primary-600 link"
data-qa={"clone-#{ammo_group.id}"}
>
<i class="fa-fw fa-lg fas fa-copy"></i>
</.link>
<.link
href="#"
class="text-primary-600 link"
phx-click="delete"
phx-value-id={ammo_group.id}
data-confirm={dgettext("prompts", "Are you sure you want to delete this ammo?")}
data-qa={"delete-#{ammo_group.id}"}
>
<i class="fa-fw fa-lg fas fa-trash"></i>
</.link>
</div>
</:actions>
</.live_component>
<% end %>
</div>

View File

@ -102,12 +102,12 @@ defmodule CanneryWeb.AmmoGroupLive.Show do
defp display_ammo_group(%{assigns: %{current_user: current_user}} = socket, id),
do: display_ammo_group(socket, Ammo.get_ammo_group!(id, current_user))
@spec get_table_row_for_shot_group(AmmoGroup.t(), ShotGroup.t(), [map()]) :: [map()]
@spec get_table_row_for_shot_group(AmmoGroup.t(), ShotGroup.t(), [map()]) :: map()
defp get_table_row_for_shot_group(ammo_group, %{date: date} = shot_group, columns) do
assigns = %{ammo_group: ammo_group, shot_group: shot_group}
columns
|> Enum.into(%{}, fn %{key: key} ->
|> Map.new(fn %{key: key} ->
value =
case key do
:date ->

View File

@ -11,7 +11,7 @@
<span class="rounded-lg title text-lg">
<%= gettext("Original count:") %>
<%= @ammo_group.count + Ammo.get_used_count(@ammo_group) %>
<%= Ammo.get_original_count(@ammo_group) %>
</span>
<span class="rounded-lg title text-lg">

View File

@ -134,7 +134,7 @@ defmodule CanneryWeb.AmmoTypeLive.Index do
end
)
|> Kernel.++([
%{label: gettext("Average Price paid"), key: :avg_price_paid, type: :avg_price_paid},
%{label: gettext("Average CPR"), key: :avg_price_paid, type: :avg_price_paid},
%{label: nil, key: "actions", type: :actions, sortable: false}
])
@ -147,7 +147,7 @@ defmodule CanneryWeb.AmmoTypeLive.Index do
defp get_ammo_type_values(ammo_type, columns, current_user) do
columns
|> Enum.into(%{}, fn %{key: key, type: type} ->
|> Map.new(fn %{key: key, type: type} ->
{key, get_ammo_type_value(type, key, ammo_type, current_user)}
end)
end

View File

@ -8,13 +8,41 @@ defmodule CanneryWeb.AmmoTypeLive.Show do
alias Cannery.Ammo
alias CanneryWeb.Endpoint
@impl true
def mount(_params, _session, socket), do: {:ok, socket |> assign(show_used: false)}
@fields_list [
%{label: gettext("Bullet type:"), key: :bullet_type, type: :string},
%{label: gettext("Bullet core:"), key: :bullet_core, type: :string},
%{label: gettext("Cartridge:"), key: :cartridge, type: :string},
%{label: gettext("Caliber:"), key: :caliber, type: :string},
%{label: gettext("Case material:"), key: :case_material, type: :string},
%{label: gettext("Jacket type:"), key: :jacket_type, type: :string},
%{label: gettext("Muzzle velocity:"), key: :muzzle_velocity, type: :string},
%{label: gettext("Powder type:"), key: :powder_type, type: :string},
%{label: gettext("Powder grains per charge:"), key: :powder_grains_per_charge, type: :string},
%{label: gettext("Grains:"), key: :grains, type: :string},
%{label: gettext("Pressure:"), key: :pressure, type: :string},
%{label: gettext("Primer type:"), key: :primer_type, type: :string},
%{label: gettext("Firing type:"), key: :firing_type, type: :string},
%{label: gettext("Tracer:"), key: :tracer, type: :boolean},
%{label: gettext("Incendiary:"), key: :incendiary, type: :boolean},
%{label: gettext("Blank:"), key: :blank, type: :boolean},
%{label: gettext("Corrosive:"), key: :corrosive, type: :boolean},
%{label: gettext("Manufacturer:"), key: :manufacturer, type: :string},
%{label: gettext("UPC:"), key: :upc, type: :string}
]
@impl true
def handle_params(%{"id" => id}, _params, %{assigns: %{current_user: current_user}} = socket) do
def mount(_params, _session, socket),
do: {:ok, socket |> assign(show_used: false, view_table: false)}
@impl true
def handle_params(
%{"id" => id},
_params,
%{assigns: %{current_user: current_user, live_action: live_action}} = socket
) do
ammo_type = Ammo.get_ammo_type!(id, current_user)
{:noreply, socket |> display_ammo_type(ammo_type)}
socket = socket |> assign(view_table: live_action == :table) |> display_ammo_type(ammo_type)
{:noreply, socket}
end
@impl true
@ -36,22 +64,45 @@ defmodule CanneryWeb.AmmoTypeLive.Show do
{:noreply, socket |> assign(:show_used, !show_used) |> display_ammo_type()}
end
@impl true
def handle_event(
"toggle_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 |> assign(view_table: !view_table) |> push_patch(to: new_path)}
end
defp display_ammo_type(
%{
assigns: %{
live_action: live_action,
current_user: current_user,
show_used: show_used
}
} = socket,
%{assigns: %{live_action: live_action, current_user: current_user, show_used: show_used}} =
socket,
ammo_type
) do
fields_to_display =
@fields_list
|> Enum.any?(fn %{key: field, type: type} ->
default_value =
case type do
:boolean -> false
_other_type -> nil
end
ammo_type |> Map.get(field) != default_value
end)
socket
|> assign(
page_title: page_title(live_action),
page_title: page_title(live_action, ammo_type),
ammo_type: ammo_type,
ammo_groups: ammo_type |> Ammo.list_ammo_groups_for_type(current_user, show_used),
avg_cost_per_round: ammo_type |> Ammo.get_average_cost_for_ammo_type!(current_user)
avg_cost_per_round: ammo_type |> Ammo.get_average_cost_for_ammo_type!(current_user),
fields_list: @fields_list,
fields_to_display: fields_to_display
)
end
@ -59,6 +110,9 @@ defmodule CanneryWeb.AmmoTypeLive.Show do
socket |> display_ammo_type(ammo_type)
end
defp page_title(:show), do: gettext("Show Ammo type")
defp page_title(:edit), do: gettext("Edit Ammo type")
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

View File

@ -39,44 +39,30 @@
<hr class="hr" />
<div class="grid sm:grid-cols-2 gap-4 text-center justify-center items-center">
<%= for {field_name, field, type} <- [
{gettext("Bullet type"), :bullet_type, :string},
{gettext("Bullet core"), :bullet_core, :string},
{gettext("Cartridge"), :cartridge, :string},
{gettext("Caliber"), :caliber, :string},
{gettext("Case material"), :case_material, :string},
{gettext("Jacket type"), :jacket_type, :string},
{gettext("Muzzle velocity"), :muzzle_velocity, :string},
{gettext("Powder type"), :powder_type, :string},
{gettext("Powder grains per charge"), :powder_grains_per_charge, :string},
{gettext("Grains"), :grains, :string},
{gettext("Pressure"), :pressure, :string},
{gettext("Primer type"), :primer_type, :string},
{gettext("Firing type"), :firing_type, :string},
{gettext("Tracer"), :tracer, :boolean},
{gettext("Incendiary"), :incendiary, :boolean},
{gettext("Blank"), :blank, :boolean},
{gettext("Corrosive"), :corrosive, :boolean},
{gettext("Manufacturer"), :manufacturer, :string},
{gettext("UPC"), :upc, :string}
] do %>
<%= if @ammo_type |> Map.get(field) do %>
<h3 class="title text-lg">
<%= field_name %>:
</h3>
<%= if @fields_to_display do %>
<div class="grid sm:grid-cols-2 gap-4 text-center justify-center items-center">
<%= for %{label: label, key: key, type: type} <- @fields_list do %>
<%= if @ammo_type |> Map.get(key) do %>
<h3 class="title text-lg">
<%= label %>
</h3>
<span class="text-primary-600">
<%= case type do %>
<% :boolean -> %>
<%= @ammo_type |> Map.get(field) |> humanize() %>
<% _ -> %>
<%= @ammo_type |> Map.get(field) %>
<% end %>
</span>
<span class="text-primary-600">
<%= case type do %>
<% :boolean -> %>
<%= @ammo_type |> Map.get(key) |> humanize() %>
<% _ -> %>
<%= @ammo_type |> Map.get(key) %>
<% end %>
</span>
<% end %>
<% end %>
<% end %>
</div>
<hr class="hr" />
<% end %>
<div class="grid sm:grid-cols-2 gap-4 text-center justify-center items-center">
<h3 class="title text-lg">
<%= gettext("Rounds:") %>
</h3>
@ -100,7 +86,11 @@
<span class="text-primary-600">
<%= @ammo_type |> Ammo.get_historical_count_for_ammo_type(@current_user) %>
</span>
</div>
<hr class="hr" />
<div class="grid sm:grid-cols-2 gap-4 text-center justify-center items-center">
<h3 class="title text-lg">
<%= gettext("Packs:") %>
</h3>
@ -124,7 +114,11 @@
<span class="text-primary-600">
<%= @ammo_type |> Ammo.get_ammo_groups_count_for_type(@current_user, true) %>
</span>
</div>
<hr class="hr" />
<div class="grid sm:grid-cols-2 gap-4 text-center justify-center items-center">
<h3 class="title text-lg">
<%= gettext("Added on:") %>
</h3>
@ -135,7 +129,7 @@
<%= if @avg_cost_per_round do %>
<h3 class="title text-lg">
<%= gettext("Average Price paid") %>:
<%= gettext("Average CPR") %>:
</h3>
<span class="text-primary-600">
@ -152,26 +146,51 @@
<hr class="hr" />
<div class="flex flex-col justify-center items-center">
<div class="flex justify-center items-center space-x-4">
<.toggle_button action="toggle_show_used" value={@show_used}>
<span class="title text-lg text-primary-600">
<%= gettext("Show used") %>
</span>
</.toggle_button>
<.toggle_button action="toggle_table" value={@view_table}>
<span class="title text-lg text-primary-600">
<%= gettext("View as table") %>
</span>
</.toggle_button>
</div>
<div>
<div class="w-full p-4">
<%= if @ammo_groups |> Enum.empty?() do %>
<h2 class="mx-8 my-4 title text-lg text-primary-600">
<h2 class="px-4 title text-lg text-primary-600">
<%= gettext("No ammo for this type") %>
<%= display_emoji("😔") %>
</h2>
<% else %>
<div class="flex flex-wrap justify-center items-center">
<%= for ammo_group <- @ammo_groups do %>
<.ammo_group_card ammo_group={ammo_group} show_container={true} />
<% end %>
</div>
<%= if @view_table do %>
<.live_component
module={CanneryWeb.Components.AmmoGroupTableComponent}
id="ammo-type-show-table"
ammo_groups={@ammo_groups}
current_user={@current_user}
show_used={@show_used}
>
<:container :let={%{container: %{name: container_name} = container}}>
<.link
navigate={Routes.container_show_path(Endpoint, :show, container)}
class="mx-2 my-1 link"
>
<%= container_name %>
</.link>
</:container>
</.live_component>
<% else %>
<div class="flex flex-wrap justify-center items-center">
<%= for ammo_group <- @ammo_groups do %>
<.ammo_group_card ammo_group={ammo_group} show_container={true} />
<% end %>
</div>
<% end %>
<% end %>
</div>
</div>

View File

@ -153,12 +153,12 @@ defmodule CanneryWeb.ContainerLive.Index do
)
end
@spec get_row_data_for_container(Container.t(), [map()]) :: [map()]
@spec get_row_data_for_container(Container.t(), [map()]) :: map()
defp get_row_data_for_container(container, columns) do
container = container |> Repo.preload([:ammo_groups, :tags])
columns
|> Enum.into(%{}, fn %{key: key} -> {key, get_value_for_key(key, container)} end)
|> Map.new(fn %{key: key} -> {key, get_value_for_key(key, container)} end)
end
@spec get_value_for_key(atom(), Container.t()) :: any()

View File

@ -26,7 +26,7 @@
</div>
<% end %>
<div class="max-w-full flex flex-row flex-wrap justify-center items-center">
<div class="w-full flex flex-row flex-wrap justify-center items-center">
<%= if @view_table do %>
<.live_component
module={CanneryWeb.Components.TableComponent}

View File

@ -11,15 +11,19 @@ defmodule CanneryWeb.ContainerLive.Show do
alias Phoenix.LiveView.Socket
@impl true
def mount(_params, _session, socket), do: {:ok, socket |> assign(show_used: false)}
def mount(_params, _session, socket),
do: {:ok, socket |> assign(show_used: false, view_table: false)}
@impl true
def handle_params(
%{"id" => id},
_session,
%{assigns: %{current_user: current_user}} = socket
%{assigns: %{current_user: current_user, live_action: live_action}} = socket
) do
{:noreply, socket |> render_container(id, current_user)}
socket =
socket |> assign(view_table: live_action == :table) |> render_container(id, current_user)
{:noreply, socket}
end
@impl true
@ -87,6 +91,20 @@ defmodule CanneryWeb.ContainerLive.Show do
{:noreply, socket |> assign(:show_used, !show_used) |> render_container()}
end
@impl true
def handle_event(
"toggle_table",
_params,
%{assigns: %{view_table: view_table, container: container}} = socket
) do
new_path =
if view_table,
do: Routes.container_show_path(Endpoint, :show, container),
else: Routes.container_show_path(Endpoint, :table, container)
{:noreply, socket |> assign(view_table: !view_table) |> push_patch(to: new_path)}
end
@spec render_container(Socket.t(), Container.id(), User.t()) :: Socket.t()
defp render_container(
%{assigns: %{live_action: live_action, show_used: show_used}} = socket,
@ -102,7 +120,7 @@ defmodule CanneryWeb.ContainerLive.Show do
page_title =
case live_action do
:show -> gettext("Show %{name}", name: container_name)
action when action in [:show, :table] -> container_name
:edit -> gettext("Edit %{name}", name: container_name)
:edit_tags -> gettext("Edit %{name} tags", name: container_name)
end

View File

@ -91,25 +91,47 @@
<hr class="mb-4 hr" />
<div class="flex flex-col justify-center items-center">
<div class="flex justify-center items-center space-x-4">
<.toggle_button action="toggle_show_used" value={@show_used}>
<span class="title text-lg text-primary-600">
<%= dgettext("actions", "Show used") %>
<%= gettext("Show used") %>
</span>
</.toggle_button>
<.toggle_button action="toggle_table" value={@view_table}>
<span class="title text-lg text-primary-600">
<%= gettext("View as table") %>
</span>
</.toggle_button>
</div>
<div>
<div class="w-full p-4">
<%= if @ammo_groups |> Enum.empty?() do %>
<h2 class="mx-8 my-4 title text-lg text-primary-600">
<h2 class="mx-4 title text-lg text-primary-600">
<%= gettext("No ammo in this container") %>
</h2>
<% else %>
<div class="flex flex-wrap justify-center items-center">
<%= for ammo_group <- @ammo_groups do %>
<.ammo_group_card ammo_group={ammo_group} />
<% end %>
</div>
<%= if @view_table do %>
<.live_component
module={CanneryWeb.Components.AmmoGroupTableComponent}
id="ammo-type-show-table"
ammo_groups={@ammo_groups}
current_user={@current_user}
show_used={@show_used}
>
<:ammo_type :let={%{name: ammo_type_name} = ammo_type}>
<.link navigate={Routes.ammo_type_show_path(Endpoint, :show, ammo_type)} class="link">
<%= ammo_type_name %>
</.link>
</:ammo_type>
</.live_component>
<% else %>
<div class="flex flex-wrap justify-center items-center">
<%= for ammo_group <- @ammo_groups do %>
<.ammo_group_card ammo_group={ammo_group} />
<% end %>
</div>
<% end %>
<% end %>
</div>
</div>

View File

@ -138,7 +138,7 @@ defmodule CanneryWeb.HomeLive do
target="_blank"
rel="noopener noreferrer"
>
<p>0.6.0</p>
<p>0.7.0</p>
<i class="fas fa-md fa-info-circle"></i>
</.link>
</li>

View File

@ -88,13 +88,7 @@ defmodule CanneryWeb.RangeLive.Index do
shot_groups
|> Enum.map(fn shot_group -> shot_group |> get_row_data_for_shot_group(columns) end)
chart_data =
shot_groups
|> Enum.map(fn shot_group ->
shot_group
|> get_chart_data_for_shot_group([:name, :count, :notes, :date])
end)
|> Enum.sort_by(fn %{date: date} -> date end, Date)
chart_data = shot_groups |> get_chart_data_for_shot_group()
socket
|> assign(
@ -106,40 +100,21 @@ defmodule CanneryWeb.RangeLive.Index do
)
end
@spec get_chart_data_for_shot_group(ShotGroup.t(), keys :: [atom()]) :: map()
defp get_chart_data_for_shot_group(shot_group, keys) do
shot_group = shot_group |> Repo.preload(ammo_group: :ammo_type)
@spec get_chart_data_for_shot_group([ShotGroup.t()]) :: [map()]
defp get_chart_data_for_shot_group(shot_groups) do
shot_groups
|> Repo.preload(ammo_group: :ammo_type)
|> Enum.group_by(fn %{date: date} -> date end, fn %{count: count} -> count end)
|> Enum.map(fn {date, rounds} ->
sum = Enum.sum(rounds)
labels =
if shot_group.notes do
[gettext("Notes: %{notes}", notes: shot_group.notes)]
else
[]
end
labels = [
gettext(
"Name: %{name}",
name: shot_group.ammo_group.ammo_type.name
),
gettext(
"Rounds shot: %{count}",
count: shot_group.count
)
| labels
]
keys
|> Map.new(fn key ->
value =
case key do
:name -> shot_group.ammo_group.ammo_type.name
key -> shot_group |> Map.get(key)
end
{key, value}
%{
date: date,
count: sum,
label: gettext("Rounds shot: %{count}", count: sum)
}
end)
|> Map.put(:labels, labels)
|> Enum.sort_by(fn %{date: date} -> date end)
end
@spec get_row_data_for_shot_group(ShotGroup.t(), [map()]) :: map()

View File

@ -59,9 +59,9 @@
phx-update="ignore"
class="max-h-72"
data-chart-data={Jason.encode!(@chart_data)}
data-label={gettext("Rounds fired")}
data-label={gettext("Rounds shot")}
data-color={random_color()}
aria-label={gettext("Rounds fired chart")}
aria-label={gettext("Rounds shot chart")}
role="img"
>
<%= dgettext("errors", "Your browser does not support the canvas element.") %>

View File

@ -71,8 +71,9 @@ defmodule CanneryWeb.Router do
live "/catalog/:id/clone", AmmoTypeLive.Index, :clone
live "/catalog/:id/edit", AmmoTypeLive.Index, :edit
live "/catalog/:id", AmmoTypeLive.Show, :show
live "/catalog/:id/show", AmmoTypeLive.Show, :show
live "/catalog/:id/show/edit", AmmoTypeLive.Show, :edit
live "/catalog/:id/show/table", AmmoTypeLive.Show, :table
live "/containers", ContainerLive.Index, :index
live "/containers/table", ContainerLive.Index, :table
@ -81,7 +82,8 @@ defmodule CanneryWeb.Router do
live "/containers/:id/clone", ContainerLive.Index, :clone
live "/containers/:id/edit_tags", ContainerLive.Index, :edit_tags
live "/containers/:id", ContainerLive.Show, :show
live "/containers/:id/show", ContainerLive.Show, :show
live "/containers/:id/show/table", ContainerLive.Show, :table
live "/containers/:id/show/edit", ContainerLive.Show, :edit
live "/containers/:id/show/edit_tags", ContainerLive.Show, :edit_tags
@ -92,7 +94,7 @@ defmodule CanneryWeb.Router do
live "/ammo/:id/add_shot_group", AmmoGroupLive.Index, :add_shot_group
live "/ammo/:id/move", AmmoGroupLive.Index, :move
live "/ammo/:id", AmmoGroupLive.Show, :show
live "/ammo/:id/show", AmmoGroupLive.Show, :show
live "/ammo/:id/show/edit", AmmoGroupLive.Show, :edit
live "/ammo/:id/show/add_shot_group", AmmoGroupLive.Show, :add_shot_group
live "/ammo/:id/show/move", AmmoGroupLive.Show, :move

View File

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

View File

@ -156,7 +156,7 @@ msgstr ""
msgid "Why not get some ready to shoot?"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.ex:199
#: lib/cannery_web/live/ammo_group_live/index.html.heex:80
#: lib/cannery_web/live/ammo_group_live/show.html.heex:101
#: lib/cannery_web/live/range_live/index.html.heex:38
#, elixir-autogen, elixir-format
@ -233,11 +233,6 @@ msgstr ""
msgid "Set Unlimited"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:97
#, elixir-autogen, elixir-format
msgid "Show used"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.html.heex:86
#: lib/cannery_web/live/range_live/index.html.heex:31
#, elixir-autogen, elixir-format

View File

@ -169,7 +169,7 @@ msgstr "Munition markieren"
msgid "Why not get some ready to shoot?"
msgstr "Warum nicht einige für den Schießstand auswählen?"
#: lib/cannery_web/live/ammo_group_live/index.ex:199
#: lib/cannery_web/live/ammo_group_live/index.html.heex:80
#: lib/cannery_web/live/ammo_group_live/show.html.heex:101
#: lib/cannery_web/live/range_live/index.html.heex:38
#, elixir-autogen, elixir-format
@ -246,11 +246,6 @@ msgstr ""
msgid "Set Unlimited"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:97
#, elixir-autogen, elixir-format
msgid "Show used"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.html.heex:86
#: lib/cannery_web/live/range_live/index.html.heex:31
#, elixir-autogen, elixir-format

View File

@ -52,18 +52,12 @@ msgstr "Admins:"
msgid "Ammo"
msgstr "Munition"
#: lib/cannery_web/components/ammo_group_table_component.ex:96
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:21
#: lib/cannery_web/live/ammo_group_live/index.ex:99
#, elixir-autogen, elixir-format
msgid "Ammo type"
msgstr "Munitionsarten"
#: lib/cannery_web/live/ammo_type_live/index.ex:137
#: lib/cannery_web/live/ammo_type_live/show.html.heex:138
#, elixir-autogen, elixir-format
msgid "Average Price paid"
msgstr "Durchschnittlicher Kaufpreis"
#: lib/cannery_web/live/tag_live/form_component.ex:79
#, elixir-autogen, elixir-format
msgid "Background color"
@ -71,7 +65,6 @@ msgstr "Hintergrundfarbe"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:140
#: lib/cannery_web/live/ammo_type_live/index.ex:82
#: lib/cannery_web/live/ammo_type_live/show.html.heex:59
#, elixir-autogen, elixir-format
msgid "Blank"
msgstr "Knallpatrone"
@ -83,42 +76,37 @@ msgstr "Messing"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:44
#: lib/cannery_web/live/ammo_type_live/index.ex:64
#: lib/cannery_web/live/ammo_type_live/show.html.heex:45
#, elixir-autogen, elixir-format
msgid "Bullet core"
msgstr "Projektilkern"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:37
#: lib/cannery_web/live/ammo_type_live/index.ex:63
#: lib/cannery_web/live/ammo_type_live/show.html.heex:44
#, elixir-autogen, elixir-format
msgid "Bullet type"
msgstr "Patronenart"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:58
#: lib/cannery_web/live/ammo_type_live/index.ex:66
#: lib/cannery_web/live/ammo_type_live/show.html.heex:47
#, elixir-autogen, elixir-format
msgid "Caliber"
msgstr "Kaliber"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:51
#: lib/cannery_web/live/ammo_type_live/index.ex:65
#: lib/cannery_web/live/ammo_type_live/show.html.heex:46
#, elixir-autogen, elixir-format
msgid "Cartridge"
msgstr "Patrone"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:65
#: lib/cannery_web/live/ammo_type_live/index.ex:67
#: lib/cannery_web/live/ammo_type_live/show.html.heex:48
#, elixir-autogen, elixir-format
msgid "Case material"
msgstr "Gehäusematerial"
#: lib/cannery_web/components/ammo_group_table_component.ex:72
#: lib/cannery_web/components/move_ammo_group_component.ex:67
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:48
#: lib/cannery_web/live/ammo_group_live/index.ex:104
#, elixir-autogen, elixir-format
msgid "Container"
msgstr "Behälter"
@ -133,18 +121,17 @@ msgstr "Behälter"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:144
#: lib/cannery_web/live/ammo_type_live/index.ex:83
#: lib/cannery_web/live/ammo_type_live/show.html.heex:60
#, elixir-autogen, elixir-format
msgid "Corrosive"
msgstr "Korrosiv"
#: lib/cannery_web/components/ammo_group_table_component.ex:83
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:27
#: lib/cannery_web/live/ammo_group_live/index.ex:100
#, elixir-autogen, elixir-format
msgid "Count"
msgstr "Anzahl"
#: lib/cannery_web/components/ammo_group_card.ex:37
#: lib/cannery_web/components/ammo_group_card.ex:38
#: lib/cannery_web/live/ammo_group_live/show.html.heex:8
#, elixir-autogen, elixir-format
msgid "Count:"
@ -174,7 +161,6 @@ msgid "Edit Ammo group"
msgstr "Munitionsgruppe bearbeiten"
#: lib/cannery_web/live/ammo_type_live/index.ex:23
#: lib/cannery_web/live/ammo_type_live/show.ex:63
#, elixir-autogen, elixir-format
msgid "Edit Ammo type"
msgstr "Munitionstyp bearbeiten"
@ -201,14 +187,12 @@ msgstr "VM"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:103
#: lib/cannery_web/live/ammo_type_live/index.ex:76
#: lib/cannery_web/live/ammo_type_live/show.html.heex:53
#, elixir-autogen, elixir-format
msgid "Grains"
msgstr "Körner"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:136
#: lib/cannery_web/live/ammo_type_live/index.ex:81
#: lib/cannery_web/live/ammo_type_live/show.html.heex:58
#, elixir-autogen, elixir-format
msgid "Incendiary"
msgstr "Brandmunition"
@ -260,7 +244,6 @@ msgstr "Magazin, Ladestreifen, Munitionskiste usw."
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:148
#: lib/cannery_web/live/ammo_type_live/index.ex:84
#: lib/cannery_web/live/ammo_type_live/show.html.heex:61
#, elixir-autogen, elixir-format
msgid "Manufacturer"
msgstr "Hersteller"
@ -339,6 +322,7 @@ msgid "No tags"
msgstr "Keine Tags"
#: lib/cannery_web/components/add_shot_group_component.html.heex:37
#: lib/cannery_web/components/ammo_group_table_component.ex:88
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:41
#: lib/cannery_web/live/ammo_group_live/show.ex:88
#: lib/cannery_web/live/range_live/form_component.html.heex:29
@ -347,7 +331,7 @@ msgstr "Keine Tags"
msgid "Notes"
msgstr "Bemerkungen"
#: lib/cannery_web/components/ammo_group_card.ex:43
#: lib/cannery_web/components/ammo_group_card.ex:51
#: lib/cannery_web/live/ammo_group_live/show.html.heex:24
#, elixir-autogen, elixir-format
msgid "Notes:"
@ -360,25 +344,23 @@ msgstr "Auf dem Bücherregal"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:111
#: lib/cannery_web/live/ammo_type_live/index.ex:77
#: lib/cannery_web/live/ammo_type_live/show.html.heex:54
#, elixir-autogen, elixir-format
msgid "Pressure"
msgstr "Druck"
#: lib/cannery_web/components/ammo_group_table_component.ex:85
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:34
#: lib/cannery_web/live/ammo_group_live/index.ex:101
#, elixir-autogen, elixir-format
msgid "Price paid"
msgstr "Kaufpreis"
#: lib/cannery_web/components/ammo_group_card.ex:62
#: lib/cannery_web/components/ammo_group_card.ex:70
#, elixir-autogen, elixir-format
msgid "Price paid:"
msgstr "Kaufpreis:"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:118
#: lib/cannery_web/live/ammo_type_live/index.ex:78
#: lib/cannery_web/live/ammo_type_live/show.html.heex:55
#, elixir-autogen, elixir-format
msgid "Primer type"
msgstr "Zündertyp"
@ -406,11 +388,6 @@ msgstr ""
msgid "Settings"
msgstr "Einstellungen"
#: lib/cannery_web/live/ammo_type_live/show.ex:62
#, elixir-autogen, elixir-format
msgid "Show Ammo type"
msgstr "Zeige Munitionsarten"
#: lib/cannery_web/live/home_live.ex:83
#, elixir-autogen, elixir-format
msgid "Simple:"
@ -451,7 +428,6 @@ msgstr "Die selbst-gehostete Website zur Verwaltung von Schusswaffen"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:132
#: lib/cannery_web/live/ammo_type_live/index.ex:80
#: lib/cannery_web/live/ammo_type_live/show.html.heex:57
#, elixir-autogen, elixir-format
msgid "Tracer"
msgstr "Leuchtspur"
@ -499,8 +475,8 @@ msgstr "Ihre Daten bleiben bei Ihnen, Punkt"
msgid "No tags for this container"
msgstr "Keine Tags für diesen Behälter"
#: lib/cannery_web/components/ammo_group_table_component.ex:79
#: lib/cannery_web/components/topbar.ex:81
#: lib/cannery_web/live/ammo_group_live/index.ex:103
#, elixir-autogen, elixir-format
msgid "Range"
msgstr "Schießplatz"
@ -567,6 +543,7 @@ msgstr "Patronen verbleibend"
#: lib/cannery_web/live/ammo_group_live/show.ex:87
#: lib/cannery_web/live/range_live/index.ex:81
#: lib/cannery_web/live/range_live/index.html.heex:62
#, elixir-autogen, elixir-format
msgid "Rounds shot"
msgstr "Patronen abgefeuert"
@ -581,7 +558,7 @@ msgstr "Schießkladde"
msgid "Move Ammo group"
msgstr "Munitionsgruppe verschieben"
#: lib/cannery_web/live/ammo_group_live/index.ex:270
#: lib/cannery_web/live/ammo_group_live/index.html.heex:97
#, elixir-autogen, elixir-format
msgid "Move ammo"
msgstr "Munition verschieben"
@ -596,12 +573,14 @@ msgstr "Kein weiterer Behälter"
msgid "Shot log"
msgstr "Schießkladde"
#: lib/cannery_web/components/ammo_group_card.ex:63
#: lib/cannery_web/live/ammo_group_live/index.ex:154
#: lib/cannery_web/components/ammo_group_card.ex:71
#: lib/cannery_web/components/ammo_group_card.ex:78
#: lib/cannery_web/components/ammo_group_table_component.ex:159
#: lib/cannery_web/components/ammo_group_table_component.ex:227
#: lib/cannery_web/live/ammo_group_live/show.html.heex:37
#: lib/cannery_web/live/ammo_group_live/show.html.heex:44
#: lib/cannery_web/live/ammo_type_live/index.ex:179
#: lib/cannery_web/live/ammo_type_live/show.html.heex:142
#: lib/cannery_web/live/ammo_type_live/show.html.heex:136
#, elixir-autogen, elixir-format
msgid "$%{amount}"
msgstr "$%{amount}"
@ -613,35 +592,30 @@ msgstr "Bimetall"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:72
#: lib/cannery_web/live/ammo_type_live/index.ex:68
#: lib/cannery_web/live/ammo_type_live/show.html.heex:49
#, elixir-autogen, elixir-format
msgid "Jacket type"
msgstr "Patronenhülse"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:79
#: lib/cannery_web/live/ammo_type_live/index.ex:69
#: lib/cannery_web/live/ammo_type_live/show.html.heex:50
#, elixir-autogen, elixir-format
msgid "Muzzle velocity"
msgstr "Mündungsgeschwindigkeit"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:93
#: lib/cannery_web/live/ammo_type_live/index.ex:72
#: lib/cannery_web/live/ammo_type_live/show.html.heex:52
#, elixir-autogen, elixir-format
msgid "Powder grains per charge"
msgstr "Pulverkörner pro Ladung"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:89
#: lib/cannery_web/live/ammo_type_live/index.ex:70
#: lib/cannery_web/live/ammo_type_live/show.html.heex:51
#, elixir-autogen, elixir-format
msgid "Powder type"
msgstr "Pulverart"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:152
#: lib/cannery_web/live/ammo_type_live/index.ex:85
#: lib/cannery_web/live/ammo_type_live/show.html.heex:62
#, elixir-autogen, elixir-format
msgid "UPC"
msgstr "UPC"
@ -662,19 +636,18 @@ msgstr "Derzeitiges Passwort"
msgid "New password"
msgstr "Neues Passwort"
#: lib/cannery_web/live/ammo_group_live/index.ex:192
#: lib/cannery_web/live/ammo_group_live/index.html.heex:73
#, elixir-autogen, elixir-format
msgid "Stage"
msgstr "Markiert"
#: lib/cannery_web/live/ammo_group_live/index.ex:192
#: lib/cannery_web/live/ammo_group_live/index.html.heex:73
#, elixir-autogen, elixir-format
msgid "Unstage"
msgstr "Demarkiert"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:125
#: lib/cannery_web/live/ammo_type_live/index.ex:79
#: lib/cannery_web/live/ammo_type_live/show.html.heex:56
#, elixir-autogen, elixir-format
msgid "Firing type"
msgstr "Patronenhülsenform"
@ -690,36 +663,32 @@ msgid "Loading..."
msgstr "Lädt..."
#: lib/cannery_web/live/container_live/index.ex:27
#: lib/cannery_web/live/container_live/show.ex:106
#: lib/cannery_web/live/container_live/show.ex:124
#, elixir-autogen, elixir-format
msgid "Edit %{name}"
msgstr "%{name} bearbeiten"
#: lib/cannery_web/live/container_live/index.ex:65
#: lib/cannery_web/live/container_live/show.ex:107
#: lib/cannery_web/live/container_live/show.ex:125
#, elixir-autogen, elixir-format
msgid "Edit %{name} tags"
msgstr "Editiere %{name} Tags"
#: lib/cannery_web/components/container_card.ex:63
#: lib/cannery_web/live/ammo_type_live/show.html.heex:81
#: lib/cannery_web/live/ammo_type_live/show.html.heex:67
#: lib/cannery_web/live/container_live/show.html.heex:32
#, elixir-autogen, elixir-format
msgid "Rounds:"
msgstr "Patronen:"
#: lib/cannery_web/live/container_live/show.ex:105
#, elixir-autogen, elixir-format
msgid "Show %{name}"
msgstr "Zeige %{name}"
#: lib/cannery_web/components/ammo_group_table_component.ex:224
#: lib/cannery_web/live/ammo_type_live/index.ex:178
#: lib/cannery_web/live/ammo_type_live/show.html.heex:148
#: lib/cannery_web/live/ammo_type_live/show.html.heex:142
#, elixir-autogen, elixir-format
msgid "No cost information"
msgstr "Keine Preisinformationen"
#: lib/cannery_web/live/ammo_group_live/index.ex:102
#: lib/cannery_web/components/ammo_group_table_component.ex:87
#, elixir-autogen, elixir-format
msgid "% left"
msgstr "% verbleibend"
@ -790,14 +759,14 @@ msgstr "Kopien"
msgid "Ammo types"
msgstr "Munitionsart"
#: lib/cannery_web/live/ammo_group_live/index.ex:105
#: lib/cannery_web/components/ammo_group_table_component.ex:66
#, elixir-autogen, elixir-format
msgid "Added on"
msgstr "Hinzugefügt am"
#: lib/cannery_web/components/ammo_group_card.ex:49
#: lib/cannery_web/components/ammo_group_card.ex:57
#: lib/cannery_web/live/ammo_group_live/show.html.heex:30
#: lib/cannery_web/live/ammo_type_live/show.html.heex:129
#: lib/cannery_web/live/ammo_type_live/show.html.heex:123
#, elixir-autogen, elixir-format
msgid "Added on:"
msgstr "Hinzugefügt am:"
@ -866,7 +835,7 @@ msgstr "Munitionstyp bearbeiten"
msgid "Move Ammo"
msgstr "Munition verschieben"
#: lib/cannery_web/live/container_live/show.html.heex:105
#: lib/cannery_web/live/container_live/show.html.heex:111
#, elixir-autogen, elixir-format, fuzzy
msgid "No ammo in this container"
msgstr "Keine Munitionsgruppe in diesem Behälter"
@ -882,7 +851,7 @@ msgid "This ammo is not in a container"
msgstr "Diese Munitionsgruppe ist nicht in einem Behälter"
#: lib/cannery_web/components/container_card.ex:58
#: lib/cannery_web/live/ammo_type_live/show.html.heex:105
#: lib/cannery_web/live/ammo_type_live/show.html.heex:95
#: lib/cannery_web/live/container_live/show.html.heex:27
#, elixir-autogen, elixir-format
msgid "Packs:"
@ -904,55 +873,36 @@ msgstr ""
msgid "Leave \"Uses left\" blank to make invite unlimited"
msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:71
#: lib/cannery_web/components/ammo_group_card.ex:86
#, elixir-autogen, elixir-format, fuzzy
msgid "Container:"
msgstr "Behälter"
#: lib/cannery_web/live/ammo_group_live/index.html.heex:48
#: lib/cannery_web/live/ammo_type_live/index.html.heex:23
#: lib/cannery_web/live/ammo_type_live/show.html.heex:158
#: lib/cannery_web/live/ammo_type_live/show.html.heex:152
#: lib/cannery_web/live/container_live/show.html.heex:97
#, elixir-autogen, elixir-format
msgid "Show used"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.ex:110
#: lib/cannery_web/components/ammo_group_table_component.ex:61
#, elixir-autogen, elixir-format
msgid "Used up on"
msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:55
#: lib/cannery_web/components/ammo_group_card.ex:63
#, elixir-autogen, elixir-format
msgid "Used up on:"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.ex:206
#: lib/cannery_web/components/ammo_group_table_component.ex:195
#: lib/cannery_web/live/ammo_group_live/show.html.heex:19
#, elixir-autogen, elixir-format
msgid "%{percentage}%"
msgstr ""
#: lib/cannery_web/live/range_live/index.ex:121
#, elixir-autogen, elixir-format
msgid "Name: %{name}"
msgstr ""
#: lib/cannery_web/live/range_live/index.ex:115
#, elixir-autogen, elixir-format
msgid "Notes: %{notes}"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:62
#, elixir-autogen, elixir-format, fuzzy
msgid "Rounds fired"
msgstr "Patronen verbraucht"
#: lib/cannery_web/live/range_live/index.html.heex:64
#, elixir-autogen, elixir-format
msgid "Rounds fired chart"
msgstr ""
#: lib/cannery_web/live/range_live/index.ex:125
#: lib/cannery_web/live/range_live/index.ex:114
#, elixir-autogen, elixir-format, fuzzy
msgid "Rounds shot: %{count}"
msgstr "Patronen abgefeuert"
@ -969,7 +919,9 @@ msgstr ""
msgid "Rounds"
msgstr "Patronen:"
#: lib/cannery_web/live/ammo_type_live/show.html.heex:158
#: lib/cannery_web/live/container_live/index.html.heex:23
#: lib/cannery_web/live/container_live/show.html.heex:103
#, elixir-autogen, elixir-format
msgid "View as table"
msgstr ""
@ -979,7 +931,7 @@ msgstr ""
msgid "Total ever packs"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:121
#: lib/cannery_web/live/ammo_type_live/show.html.heex:111
#, elixir-autogen, elixir-format
msgid "Total ever packs:"
msgstr ""
@ -989,7 +941,7 @@ msgstr ""
msgid "Total ever rounds"
msgstr "Summe aller Patronen"
#: lib/cannery_web/live/ammo_type_live/show.html.heex:97
#: lib/cannery_web/live/ammo_type_live/show.html.heex:83
#, elixir-autogen, elixir-format, fuzzy
msgid "Total ever rounds:"
msgstr "Summe abgegebener Schüsse:"
@ -999,7 +951,7 @@ msgstr "Summe abgegebener Schüsse:"
msgid "Used packs"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:113
#: lib/cannery_web/live/ammo_type_live/show.html.heex:103
#, elixir-autogen, elixir-format
msgid "Used packs:"
msgstr ""
@ -1009,7 +961,7 @@ msgstr ""
msgid "Used rounds"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:89
#: lib/cannery_web/live/ammo_type_live/show.html.heex:75
#, elixir-autogen, elixir-format, fuzzy
msgid "Used rounds:"
msgstr ""
@ -1018,3 +970,140 @@ msgstr ""
#, elixir-autogen, elixir-format, fuzzy
msgid "Used up!"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:64
#, elixir-autogen, elixir-format, fuzzy
msgid "Rounds shot chart"
msgstr "Patronen abgefeuert"
#: lib/cannery_web/live/ammo_type_live/show.ex:27
#, elixir-autogen, elixir-format, fuzzy
msgid "Blank:"
msgstr "Knallpatrone"
#: lib/cannery_web/live/ammo_type_live/show.ex:13
#, elixir-autogen, elixir-format, fuzzy
msgid "Bullet core:"
msgstr "Projektilkern"
#: lib/cannery_web/live/ammo_type_live/show.ex:12
#, elixir-autogen, elixir-format, fuzzy
msgid "Bullet type:"
msgstr "Patronenart"
#: lib/cannery_web/live/ammo_type_live/show.ex:15
#, elixir-autogen, elixir-format, fuzzy
msgid "Caliber:"
msgstr "Kaliber"
#: lib/cannery_web/live/ammo_type_live/show.ex:14
#, elixir-autogen, elixir-format, fuzzy
msgid "Cartridge:"
msgstr "Patrone"
#: lib/cannery_web/live/ammo_type_live/show.ex:16
#, elixir-autogen, elixir-format, fuzzy
msgid "Case material:"
msgstr "Gehäusematerial"
#: lib/cannery_web/live/ammo_type_live/show.ex:28
#, elixir-autogen, elixir-format, fuzzy
msgid "Corrosive:"
msgstr "Korrosiv"
#: lib/cannery_web/live/ammo_type_live/show.ex:24
#, elixir-autogen, elixir-format, fuzzy
msgid "Firing type:"
msgstr "Patronenhülsenform"
#: lib/cannery_web/live/ammo_type_live/show.ex:21
#, elixir-autogen, elixir-format, fuzzy
msgid "Grains:"
msgstr "Körner"
#: lib/cannery_web/live/ammo_type_live/show.ex:26
#, elixir-autogen, elixir-format, fuzzy
msgid "Incendiary:"
msgstr "Brandmunition"
#: lib/cannery_web/live/ammo_type_live/show.ex:17
#, elixir-autogen, elixir-format, fuzzy
msgid "Jacket type:"
msgstr "Patronenhülse"
#: lib/cannery_web/live/ammo_type_live/show.ex:29
#, elixir-autogen, elixir-format, fuzzy
msgid "Manufacturer:"
msgstr "Hersteller"
#: lib/cannery_web/live/ammo_type_live/show.ex:18
#, elixir-autogen, elixir-format, fuzzy
msgid "Muzzle velocity:"
msgstr "Mündungsgeschwindigkeit"
#: lib/cannery_web/live/ammo_type_live/show.ex:20
#, elixir-autogen, elixir-format, fuzzy
msgid "Powder grains per charge:"
msgstr "Pulverkörner pro Ladung"
#: lib/cannery_web/live/ammo_type_live/show.ex:19
#, elixir-autogen, elixir-format, fuzzy
msgid "Powder type:"
msgstr "Pulverart"
#: lib/cannery_web/live/ammo_type_live/show.ex:22
#, elixir-autogen, elixir-format, fuzzy
msgid "Pressure:"
msgstr "Druck"
#: lib/cannery_web/live/ammo_type_live/show.ex:23
#, elixir-autogen, elixir-format, fuzzy
msgid "Primer type:"
msgstr "Zündertyp"
#: lib/cannery_web/live/ammo_type_live/show.ex:25
#, elixir-autogen, elixir-format, fuzzy
msgid "Tracer:"
msgstr "Leuchtspur"
#: lib/cannery_web/live/ammo_type_live/show.ex:30
#, elixir-autogen, elixir-format, fuzzy
msgid "UPC:"
msgstr "UPC"
#: lib/cannery_web/live/ammo_type_live/index.ex:137
#: lib/cannery_web/live/ammo_type_live/show.html.heex:132
#, elixir-autogen, elixir-format
msgid "Average CPR"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:117
#, elixir-autogen, elixir-format, fuzzy
msgid "Edit %{ammo_type_name}"
msgstr "%{name} bearbeiten"
#: lib/cannery_web/components/ammo_group_card.ex:39
#: lib/cannery_web/components/ammo_group_table_component.ex:233
#, elixir-autogen, elixir-format
msgid "Empty"
msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:86
#, elixir-autogen, elixir-format
msgid "CPR"
msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:77
#, elixir-autogen, elixir-format
msgid "CPR:"
msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:84
#, elixir-autogen, elixir-format, fuzzy
msgid "Original Count"
msgstr "Ursprüngliche Anzahl:"
#: lib/cannery_web/components/ammo_group_card.ex:44
#, elixir-autogen, elixir-format, fuzzy
msgid "Original Count:"
msgstr "Ursprüngliche Anzahl:"

View File

@ -29,7 +29,7 @@ msgid "Container must be empty before deleting"
msgstr "Behälter muss vor dem Löschen leer sein"
#: lib/cannery_web/live/container_live/index.ex:88
#: lib/cannery_web/live/container_live/show.ex:71
#: lib/cannery_web/live/container_live/show.ex:75
#, elixir-autogen, elixir-format
msgid "Could not delete %{name}: %{error}"
msgstr "Konnte %{name} nicht löschen: %{error}"
@ -187,7 +187,7 @@ msgstr ""
"Ungültige Nummer an Kopien. Muss zwischen 1 and %{max} liegen. War "
"%{multiplier}"
#: lib/cannery/ammo.ex:587
#: lib/cannery/ammo.ex:609
#, elixir-autogen, elixir-format
msgid "Invalid multiplier"
msgstr ""

View File

@ -32,7 +32,7 @@ msgid "%{name} created successfully"
msgstr "%{name} erfolgreich erstellt"
#: lib/cannery_web/live/ammo_type_live/index.ex:47
#: lib/cannery_web/live/ammo_type_live/show.ex:28
#: lib/cannery_web/live/ammo_type_live/show.ex:56
#: lib/cannery_web/live/invite_live/index.ex:53
#: lib/cannery_web/live/invite_live/index.ex:133
#: lib/cannery_web/live/tag_live/index.ex:38
@ -51,7 +51,7 @@ msgid "%{name} enabled succesfully"
msgstr "%{name} erfolgreich aktiviert"
#: lib/cannery_web/live/container_live/index.ex:81
#: lib/cannery_web/live/container_live/show.ex:61
#: lib/cannery_web/live/container_live/show.ex:65
#, elixir-autogen, elixir-format
msgid "%{name} has been deleted"
msgstr "%{name} wurde gelöscht"
@ -100,7 +100,7 @@ msgstr "Sind Sie sicher, dass sie %{name} löschen möchten?"
msgid "Are you sure you want to delete the invite for %{name}?"
msgstr "Sind Sie sicher, dass sie die Einladung für %{name} löschen möchten?"
#: lib/cannery_web/live/ammo_group_live/index.ex:242
#: lib/cannery_web/live/ammo_group_live/index.html.heex:132
#: lib/cannery_web/live/ammo_group_live/show.html.heex:75
#, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this ammo?"
@ -193,7 +193,7 @@ msgstr ""
msgid "%{name} added successfully"
msgstr "%{name} erfolgreich hinzugefügt"
#: lib/cannery_web/live/container_live/show.ex:37
#: lib/cannery_web/live/container_live/show.ex:41
#, elixir-autogen, elixir-format
msgid "%{tag_name} has been removed from %{container_name}"
msgstr "%{tag_name} wurde von %{container_name} entfernt"
@ -214,7 +214,7 @@ msgid "Are you sure you want to unstage this ammo?"
msgstr "Sind sie sicher, dass Sie diese Munition demarkieren möchten?"
#: lib/cannery_web/live/ammo_group_live/show.ex:132
#: lib/cannery_web/live/range_live/index.ex:184
#: lib/cannery_web/live/range_live/index.ex:159
#, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this shot record?"
msgstr "Sind sie sicher, dass sie die Schießkladde löschen möchten?"

View File

@ -37,18 +37,12 @@ msgstr ""
msgid "Ammo"
msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:96
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:21
#: lib/cannery_web/live/ammo_group_live/index.ex:99
#, elixir-autogen, elixir-format
msgid "Ammo type"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.ex:137
#: lib/cannery_web/live/ammo_type_live/show.html.heex:138
#, elixir-autogen, elixir-format
msgid "Average Price paid"
msgstr ""
#: lib/cannery_web/live/tag_live/form_component.ex:79
#, elixir-autogen, elixir-format
msgid "Background color"
@ -56,7 +50,6 @@ msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:140
#: lib/cannery_web/live/ammo_type_live/index.ex:82
#: lib/cannery_web/live/ammo_type_live/show.html.heex:59
#, elixir-autogen, elixir-format
msgid "Blank"
msgstr ""
@ -68,42 +61,37 @@ msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:44
#: lib/cannery_web/live/ammo_type_live/index.ex:64
#: lib/cannery_web/live/ammo_type_live/show.html.heex:45
#, elixir-autogen, elixir-format
msgid "Bullet core"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:37
#: lib/cannery_web/live/ammo_type_live/index.ex:63
#: lib/cannery_web/live/ammo_type_live/show.html.heex:44
#, elixir-autogen, elixir-format
msgid "Bullet type"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:58
#: lib/cannery_web/live/ammo_type_live/index.ex:66
#: lib/cannery_web/live/ammo_type_live/show.html.heex:47
#, elixir-autogen, elixir-format
msgid "Caliber"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:51
#: lib/cannery_web/live/ammo_type_live/index.ex:65
#: lib/cannery_web/live/ammo_type_live/show.html.heex:46
#, elixir-autogen, elixir-format
msgid "Cartridge"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:65
#: lib/cannery_web/live/ammo_type_live/index.ex:67
#: lib/cannery_web/live/ammo_type_live/show.html.heex:48
#, elixir-autogen, elixir-format
msgid "Case material"
msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:72
#: lib/cannery_web/components/move_ammo_group_component.ex:67
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:48
#: lib/cannery_web/live/ammo_group_live/index.ex:104
#, elixir-autogen, elixir-format
msgid "Container"
msgstr ""
@ -118,18 +106,17 @@ msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:144
#: lib/cannery_web/live/ammo_type_live/index.ex:83
#: lib/cannery_web/live/ammo_type_live/show.html.heex:60
#, elixir-autogen, elixir-format
msgid "Corrosive"
msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:83
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:27
#: lib/cannery_web/live/ammo_group_live/index.ex:100
#, elixir-autogen, elixir-format
msgid "Count"
msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:37
#: lib/cannery_web/components/ammo_group_card.ex:38
#: lib/cannery_web/live/ammo_group_live/show.html.heex:8
#, elixir-autogen, elixir-format
msgid "Count:"
@ -159,7 +146,6 @@ msgid "Edit Ammo group"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.ex:23
#: lib/cannery_web/live/ammo_type_live/show.ex:63
#, elixir-autogen, elixir-format
msgid "Edit Ammo type"
msgstr ""
@ -186,14 +172,12 @@ msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:103
#: lib/cannery_web/live/ammo_type_live/index.ex:76
#: lib/cannery_web/live/ammo_type_live/show.html.heex:53
#, elixir-autogen, elixir-format
msgid "Grains"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:136
#: lib/cannery_web/live/ammo_type_live/index.ex:81
#: lib/cannery_web/live/ammo_type_live/show.html.heex:58
#, elixir-autogen, elixir-format
msgid "Incendiary"
msgstr ""
@ -245,7 +229,6 @@ msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:148
#: lib/cannery_web/live/ammo_type_live/index.ex:84
#: lib/cannery_web/live/ammo_type_live/show.html.heex:61
#, elixir-autogen, elixir-format
msgid "Manufacturer"
msgstr ""
@ -324,6 +307,7 @@ msgid "No tags"
msgstr ""
#: lib/cannery_web/components/add_shot_group_component.html.heex:37
#: lib/cannery_web/components/ammo_group_table_component.ex:88
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:41
#: lib/cannery_web/live/ammo_group_live/show.ex:88
#: lib/cannery_web/live/range_live/form_component.html.heex:29
@ -332,7 +316,7 @@ msgstr ""
msgid "Notes"
msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:43
#: lib/cannery_web/components/ammo_group_card.ex:51
#: lib/cannery_web/live/ammo_group_live/show.html.heex:24
#, elixir-autogen, elixir-format
msgid "Notes:"
@ -345,25 +329,23 @@ msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:111
#: lib/cannery_web/live/ammo_type_live/index.ex:77
#: lib/cannery_web/live/ammo_type_live/show.html.heex:54
#, elixir-autogen, elixir-format
msgid "Pressure"
msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:85
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:34
#: lib/cannery_web/live/ammo_group_live/index.ex:101
#, elixir-autogen, elixir-format
msgid "Price paid"
msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:62
#: lib/cannery_web/components/ammo_group_card.ex:70
#, elixir-autogen, elixir-format
msgid "Price paid:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:118
#: lib/cannery_web/live/ammo_type_live/index.ex:78
#: lib/cannery_web/live/ammo_type_live/show.html.heex:55
#, elixir-autogen, elixir-format
msgid "Primer type"
msgstr ""
@ -389,11 +371,6 @@ msgstr ""
msgid "Settings"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:62
#, elixir-autogen, elixir-format
msgid "Show Ammo type"
msgstr ""
#: lib/cannery_web/live/home_live.ex:83
#, elixir-autogen, elixir-format
msgid "Simple:"
@ -434,7 +411,6 @@ msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:132
#: lib/cannery_web/live/ammo_type_live/index.ex:80
#: lib/cannery_web/live/ammo_type_live/show.html.heex:57
#, elixir-autogen, elixir-format
msgid "Tracer"
msgstr ""
@ -482,8 +458,8 @@ msgstr ""
msgid "No tags for this container"
msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:79
#: lib/cannery_web/components/topbar.ex:81
#: lib/cannery_web/live/ammo_group_live/index.ex:103
#, elixir-autogen, elixir-format
msgid "Range"
msgstr ""
@ -550,6 +526,7 @@ msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:87
#: lib/cannery_web/live/range_live/index.ex:81
#: lib/cannery_web/live/range_live/index.html.heex:62
#, elixir-autogen, elixir-format
msgid "Rounds shot"
msgstr ""
@ -564,7 +541,7 @@ msgstr ""
msgid "Move Ammo group"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.ex:270
#: lib/cannery_web/live/ammo_group_live/index.html.heex:97
#, elixir-autogen, elixir-format
msgid "Move ammo"
msgstr ""
@ -579,12 +556,14 @@ msgstr ""
msgid "Shot log"
msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:63
#: lib/cannery_web/live/ammo_group_live/index.ex:154
#: lib/cannery_web/components/ammo_group_card.ex:71
#: lib/cannery_web/components/ammo_group_card.ex:78
#: lib/cannery_web/components/ammo_group_table_component.ex:159
#: lib/cannery_web/components/ammo_group_table_component.ex:227
#: lib/cannery_web/live/ammo_group_live/show.html.heex:37
#: lib/cannery_web/live/ammo_group_live/show.html.heex:44
#: lib/cannery_web/live/ammo_type_live/index.ex:179
#: lib/cannery_web/live/ammo_type_live/show.html.heex:142
#: lib/cannery_web/live/ammo_type_live/show.html.heex:136
#, elixir-autogen, elixir-format
msgid "$%{amount}"
msgstr ""
@ -596,35 +575,30 @@ msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:72
#: lib/cannery_web/live/ammo_type_live/index.ex:68
#: lib/cannery_web/live/ammo_type_live/show.html.heex:49
#, elixir-autogen, elixir-format
msgid "Jacket type"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:79
#: lib/cannery_web/live/ammo_type_live/index.ex:69
#: lib/cannery_web/live/ammo_type_live/show.html.heex:50
#, elixir-autogen, elixir-format
msgid "Muzzle velocity"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:93
#: lib/cannery_web/live/ammo_type_live/index.ex:72
#: lib/cannery_web/live/ammo_type_live/show.html.heex:52
#, elixir-autogen, elixir-format
msgid "Powder grains per charge"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:89
#: lib/cannery_web/live/ammo_type_live/index.ex:70
#: lib/cannery_web/live/ammo_type_live/show.html.heex:51
#, elixir-autogen, elixir-format
msgid "Powder type"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:152
#: lib/cannery_web/live/ammo_type_live/index.ex:85
#: lib/cannery_web/live/ammo_type_live/show.html.heex:62
#, elixir-autogen, elixir-format
msgid "UPC"
msgstr ""
@ -645,19 +619,18 @@ msgstr ""
msgid "New password"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.ex:192
#: lib/cannery_web/live/ammo_group_live/index.html.heex:73
#, elixir-autogen, elixir-format
msgid "Stage"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.ex:192
#: lib/cannery_web/live/ammo_group_live/index.html.heex:73
#, elixir-autogen, elixir-format
msgid "Unstage"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:125
#: lib/cannery_web/live/ammo_type_live/index.ex:79
#: lib/cannery_web/live/ammo_type_live/show.html.heex:56
#, elixir-autogen, elixir-format
msgid "Firing type"
msgstr ""
@ -673,36 +646,32 @@ msgid "Loading..."
msgstr ""
#: lib/cannery_web/live/container_live/index.ex:27
#: lib/cannery_web/live/container_live/show.ex:106
#: lib/cannery_web/live/container_live/show.ex:124
#, elixir-autogen, elixir-format
msgid "Edit %{name}"
msgstr ""
#: lib/cannery_web/live/container_live/index.ex:65
#: lib/cannery_web/live/container_live/show.ex:107
#: lib/cannery_web/live/container_live/show.ex:125
#, elixir-autogen, elixir-format
msgid "Edit %{name} tags"
msgstr ""
#: lib/cannery_web/components/container_card.ex:63
#: lib/cannery_web/live/ammo_type_live/show.html.heex:81
#: lib/cannery_web/live/ammo_type_live/show.html.heex:67
#: lib/cannery_web/live/container_live/show.html.heex:32
#, elixir-autogen, elixir-format
msgid "Rounds:"
msgstr ""
#: lib/cannery_web/live/container_live/show.ex:105
#, elixir-autogen, elixir-format
msgid "Show %{name}"
msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:224
#: lib/cannery_web/live/ammo_type_live/index.ex:178
#: lib/cannery_web/live/ammo_type_live/show.html.heex:148
#: lib/cannery_web/live/ammo_type_live/show.html.heex:142
#, elixir-autogen, elixir-format
msgid "No cost information"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.ex:102
#: lib/cannery_web/components/ammo_group_table_component.ex:87
#, elixir-autogen, elixir-format
msgid "% left"
msgstr ""
@ -773,14 +742,14 @@ msgstr ""
msgid "Ammo types"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.ex:105
#: lib/cannery_web/components/ammo_group_table_component.ex:66
#, elixir-autogen, elixir-format
msgid "Added on"
msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:49
#: lib/cannery_web/components/ammo_group_card.ex:57
#: lib/cannery_web/live/ammo_group_live/show.html.heex:30
#: lib/cannery_web/live/ammo_type_live/show.html.heex:129
#: lib/cannery_web/live/ammo_type_live/show.html.heex:123
#, elixir-autogen, elixir-format
msgid "Added on:"
msgstr ""
@ -849,7 +818,7 @@ msgstr ""
msgid "Move Ammo"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:105
#: lib/cannery_web/live/container_live/show.html.heex:111
#, elixir-autogen, elixir-format
msgid "No ammo in this container"
msgstr ""
@ -865,7 +834,7 @@ msgid "This ammo is not in a container"
msgstr ""
#: lib/cannery_web/components/container_card.ex:58
#: lib/cannery_web/live/ammo_type_live/show.html.heex:105
#: lib/cannery_web/live/ammo_type_live/show.html.heex:95
#: lib/cannery_web/live/container_live/show.html.heex:27
#, elixir-autogen, elixir-format
msgid "Packs:"
@ -887,55 +856,36 @@ msgstr ""
msgid "Leave \"Uses left\" blank to make invite unlimited"
msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:71
#: lib/cannery_web/components/ammo_group_card.ex:86
#, elixir-autogen, elixir-format
msgid "Container:"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:48
#: lib/cannery_web/live/ammo_type_live/index.html.heex:23
#: lib/cannery_web/live/ammo_type_live/show.html.heex:158
#: lib/cannery_web/live/ammo_type_live/show.html.heex:152
#: lib/cannery_web/live/container_live/show.html.heex:97
#, elixir-autogen, elixir-format
msgid "Show used"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.ex:110
#: lib/cannery_web/components/ammo_group_table_component.ex:61
#, elixir-autogen, elixir-format
msgid "Used up on"
msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:55
#: lib/cannery_web/components/ammo_group_card.ex:63
#, elixir-autogen, elixir-format
msgid "Used up on:"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.ex:206
#: lib/cannery_web/components/ammo_group_table_component.ex:195
#: lib/cannery_web/live/ammo_group_live/show.html.heex:19
#, elixir-autogen, elixir-format
msgid "%{percentage}%"
msgstr ""
#: lib/cannery_web/live/range_live/index.ex:121
#, elixir-autogen, elixir-format
msgid "Name: %{name}"
msgstr ""
#: lib/cannery_web/live/range_live/index.ex:115
#, elixir-autogen, elixir-format
msgid "Notes: %{notes}"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:62
#, elixir-autogen, elixir-format
msgid "Rounds fired"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:64
#, elixir-autogen, elixir-format
msgid "Rounds fired chart"
msgstr ""
#: lib/cannery_web/live/range_live/index.ex:125
#: lib/cannery_web/live/range_live/index.ex:114
#, elixir-autogen, elixir-format
msgid "Rounds shot: %{count}"
msgstr ""
@ -952,7 +902,9 @@ msgstr ""
msgid "Rounds"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:158
#: lib/cannery_web/live/container_live/index.html.heex:23
#: lib/cannery_web/live/container_live/show.html.heex:103
#, elixir-autogen, elixir-format
msgid "View as table"
msgstr ""
@ -962,7 +914,7 @@ msgstr ""
msgid "Total ever packs"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:121
#: lib/cannery_web/live/ammo_type_live/show.html.heex:111
#, elixir-autogen, elixir-format
msgid "Total ever packs:"
msgstr ""
@ -972,7 +924,7 @@ msgstr ""
msgid "Total ever rounds"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:97
#: lib/cannery_web/live/ammo_type_live/show.html.heex:83
#, elixir-autogen, elixir-format
msgid "Total ever rounds:"
msgstr ""
@ -982,7 +934,7 @@ msgstr ""
msgid "Used packs"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:113
#: lib/cannery_web/live/ammo_type_live/show.html.heex:103
#, elixir-autogen, elixir-format
msgid "Used packs:"
msgstr ""
@ -992,7 +944,7 @@ msgstr ""
msgid "Used rounds"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:89
#: lib/cannery_web/live/ammo_type_live/show.html.heex:75
#, elixir-autogen, elixir-format
msgid "Used rounds:"
msgstr ""
@ -1001,3 +953,140 @@ msgstr ""
#, elixir-autogen, elixir-format
msgid "Used up!"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:64
#, elixir-autogen, elixir-format
msgid "Rounds shot chart"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:27
#, elixir-autogen, elixir-format
msgid "Blank:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:13
#, elixir-autogen, elixir-format
msgid "Bullet core:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:12
#, elixir-autogen, elixir-format
msgid "Bullet type:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:15
#, elixir-autogen, elixir-format
msgid "Caliber:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:14
#, elixir-autogen, elixir-format
msgid "Cartridge:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:16
#, elixir-autogen, elixir-format
msgid "Case material:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:28
#, elixir-autogen, elixir-format
msgid "Corrosive:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:24
#, elixir-autogen, elixir-format
msgid "Firing type:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:21
#, elixir-autogen, elixir-format
msgid "Grains:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:26
#, elixir-autogen, elixir-format
msgid "Incendiary:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:17
#, elixir-autogen, elixir-format
msgid "Jacket type:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:29
#, elixir-autogen, elixir-format
msgid "Manufacturer:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:18
#, elixir-autogen, elixir-format
msgid "Muzzle velocity:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:20
#, elixir-autogen, elixir-format
msgid "Powder grains per charge:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:19
#, elixir-autogen, elixir-format
msgid "Powder type:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:22
#, elixir-autogen, elixir-format
msgid "Pressure:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:23
#, elixir-autogen, elixir-format
msgid "Primer type:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:25
#, elixir-autogen, elixir-format
msgid "Tracer:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:30
#, elixir-autogen, elixir-format
msgid "UPC:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.ex:137
#: lib/cannery_web/live/ammo_type_live/show.html.heex:132
#, elixir-autogen, elixir-format
msgid "Average CPR"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:117
#, elixir-autogen, elixir-format
msgid "Edit %{ammo_type_name}"
msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:39
#: lib/cannery_web/components/ammo_group_table_component.ex:233
#, elixir-autogen, elixir-format
msgid "Empty"
msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:86
#, elixir-autogen, elixir-format
msgid "CPR"
msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:77
#, elixir-autogen, elixir-format
msgid "CPR:"
msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:84
#, elixir-autogen, elixir-format
msgid "Original Count"
msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:44
#, elixir-autogen, elixir-format
msgid "Original Count:"
msgstr ""

View File

@ -157,7 +157,7 @@ msgstr ""
msgid "Why not get some ready to shoot?"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.ex:199
#: lib/cannery_web/live/ammo_group_live/index.html.heex:80
#: lib/cannery_web/live/ammo_group_live/show.html.heex:101
#: lib/cannery_web/live/range_live/index.html.heex:38
#, elixir-autogen, elixir-format
@ -234,11 +234,6 @@ msgstr ""
msgid "Set Unlimited"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:97
#, elixir-autogen, elixir-format
msgid "Show used"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.html.heex:86
#: lib/cannery_web/live/range_live/index.html.heex:31
#, elixir-autogen, elixir-format

View File

@ -38,18 +38,12 @@ msgstr ""
msgid "Ammo"
msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:96
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:21
#: lib/cannery_web/live/ammo_group_live/index.ex:99
#, elixir-autogen, elixir-format
msgid "Ammo type"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.ex:137
#: lib/cannery_web/live/ammo_type_live/show.html.heex:138
#, elixir-autogen, elixir-format
msgid "Average Price paid"
msgstr ""
#: lib/cannery_web/live/tag_live/form_component.ex:79
#, elixir-autogen, elixir-format
msgid "Background color"
@ -57,7 +51,6 @@ msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:140
#: lib/cannery_web/live/ammo_type_live/index.ex:82
#: lib/cannery_web/live/ammo_type_live/show.html.heex:59
#, elixir-autogen, elixir-format
msgid "Blank"
msgstr ""
@ -69,42 +62,37 @@ msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:44
#: lib/cannery_web/live/ammo_type_live/index.ex:64
#: lib/cannery_web/live/ammo_type_live/show.html.heex:45
#, elixir-autogen, elixir-format
msgid "Bullet core"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:37
#: lib/cannery_web/live/ammo_type_live/index.ex:63
#: lib/cannery_web/live/ammo_type_live/show.html.heex:44
#, elixir-autogen, elixir-format
msgid "Bullet type"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:58
#: lib/cannery_web/live/ammo_type_live/index.ex:66
#: lib/cannery_web/live/ammo_type_live/show.html.heex:47
#, elixir-autogen, elixir-format
msgid "Caliber"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:51
#: lib/cannery_web/live/ammo_type_live/index.ex:65
#: lib/cannery_web/live/ammo_type_live/show.html.heex:46
#, elixir-autogen, elixir-format
msgid "Cartridge"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:65
#: lib/cannery_web/live/ammo_type_live/index.ex:67
#: lib/cannery_web/live/ammo_type_live/show.html.heex:48
#, elixir-autogen, elixir-format
msgid "Case material"
msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:72
#: lib/cannery_web/components/move_ammo_group_component.ex:67
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:48
#: lib/cannery_web/live/ammo_group_live/index.ex:104
#, elixir-autogen, elixir-format
msgid "Container"
msgstr ""
@ -119,18 +107,17 @@ msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:144
#: lib/cannery_web/live/ammo_type_live/index.ex:83
#: lib/cannery_web/live/ammo_type_live/show.html.heex:60
#, elixir-autogen, elixir-format
msgid "Corrosive"
msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:83
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:27
#: lib/cannery_web/live/ammo_group_live/index.ex:100
#, elixir-autogen, elixir-format
msgid "Count"
msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:37
#: lib/cannery_web/components/ammo_group_card.ex:38
#: lib/cannery_web/live/ammo_group_live/show.html.heex:8
#, elixir-autogen, elixir-format
msgid "Count:"
@ -160,7 +147,6 @@ msgid "Edit Ammo group"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.ex:23
#: lib/cannery_web/live/ammo_type_live/show.ex:63
#, elixir-autogen, elixir-format
msgid "Edit Ammo type"
msgstr ""
@ -187,14 +173,12 @@ msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:103
#: lib/cannery_web/live/ammo_type_live/index.ex:76
#: lib/cannery_web/live/ammo_type_live/show.html.heex:53
#, elixir-autogen, elixir-format
msgid "Grains"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:136
#: lib/cannery_web/live/ammo_type_live/index.ex:81
#: lib/cannery_web/live/ammo_type_live/show.html.heex:58
#, elixir-autogen, elixir-format
msgid "Incendiary"
msgstr ""
@ -246,7 +230,6 @@ msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:148
#: lib/cannery_web/live/ammo_type_live/index.ex:84
#: lib/cannery_web/live/ammo_type_live/show.html.heex:61
#, elixir-autogen, elixir-format
msgid "Manufacturer"
msgstr ""
@ -325,6 +308,7 @@ msgid "No tags"
msgstr ""
#: lib/cannery_web/components/add_shot_group_component.html.heex:37
#: lib/cannery_web/components/ammo_group_table_component.ex:88
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:41
#: lib/cannery_web/live/ammo_group_live/show.ex:88
#: lib/cannery_web/live/range_live/form_component.html.heex:29
@ -333,7 +317,7 @@ msgstr ""
msgid "Notes"
msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:43
#: lib/cannery_web/components/ammo_group_card.ex:51
#: lib/cannery_web/live/ammo_group_live/show.html.heex:24
#, elixir-autogen, elixir-format
msgid "Notes:"
@ -346,25 +330,23 @@ msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:111
#: lib/cannery_web/live/ammo_type_live/index.ex:77
#: lib/cannery_web/live/ammo_type_live/show.html.heex:54
#, elixir-autogen, elixir-format
msgid "Pressure"
msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:85
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:34
#: lib/cannery_web/live/ammo_group_live/index.ex:101
#, elixir-autogen, elixir-format
msgid "Price paid"
msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:62
#: lib/cannery_web/components/ammo_group_card.ex:70
#, elixir-autogen, elixir-format
msgid "Price paid:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:118
#: lib/cannery_web/live/ammo_type_live/index.ex:78
#: lib/cannery_web/live/ammo_type_live/show.html.heex:55
#, elixir-autogen, elixir-format
msgid "Primer type"
msgstr ""
@ -390,11 +372,6 @@ msgstr ""
msgid "Settings"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:62
#, elixir-autogen, elixir-format
msgid "Show Ammo type"
msgstr ""
#: lib/cannery_web/live/home_live.ex:83
#, elixir-autogen, elixir-format
msgid "Simple:"
@ -435,7 +412,6 @@ msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:132
#: lib/cannery_web/live/ammo_type_live/index.ex:80
#: lib/cannery_web/live/ammo_type_live/show.html.heex:57
#, elixir-autogen, elixir-format
msgid "Tracer"
msgstr ""
@ -483,8 +459,8 @@ msgstr ""
msgid "No tags for this container"
msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:79
#: lib/cannery_web/components/topbar.ex:81
#: lib/cannery_web/live/ammo_group_live/index.ex:103
#, elixir-autogen, elixir-format
msgid "Range"
msgstr ""
@ -551,6 +527,7 @@ msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:87
#: lib/cannery_web/live/range_live/index.ex:81
#: lib/cannery_web/live/range_live/index.html.heex:62
#, elixir-autogen, elixir-format
msgid "Rounds shot"
msgstr ""
@ -565,7 +542,7 @@ msgstr ""
msgid "Move Ammo group"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.ex:270
#: lib/cannery_web/live/ammo_group_live/index.html.heex:97
#, elixir-autogen, elixir-format
msgid "Move ammo"
msgstr ""
@ -580,12 +557,14 @@ msgstr ""
msgid "Shot log"
msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:63
#: lib/cannery_web/live/ammo_group_live/index.ex:154
#: lib/cannery_web/components/ammo_group_card.ex:71
#: lib/cannery_web/components/ammo_group_card.ex:78
#: lib/cannery_web/components/ammo_group_table_component.ex:159
#: lib/cannery_web/components/ammo_group_table_component.ex:227
#: lib/cannery_web/live/ammo_group_live/show.html.heex:37
#: lib/cannery_web/live/ammo_group_live/show.html.heex:44
#: lib/cannery_web/live/ammo_type_live/index.ex:179
#: lib/cannery_web/live/ammo_type_live/show.html.heex:142
#: lib/cannery_web/live/ammo_type_live/show.html.heex:136
#, elixir-autogen, elixir-format
msgid "$%{amount}"
msgstr ""
@ -597,35 +576,30 @@ msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:72
#: lib/cannery_web/live/ammo_type_live/index.ex:68
#: lib/cannery_web/live/ammo_type_live/show.html.heex:49
#, elixir-autogen, elixir-format
msgid "Jacket type"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:79
#: lib/cannery_web/live/ammo_type_live/index.ex:69
#: lib/cannery_web/live/ammo_type_live/show.html.heex:50
#, elixir-autogen, elixir-format
msgid "Muzzle velocity"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:93
#: lib/cannery_web/live/ammo_type_live/index.ex:72
#: lib/cannery_web/live/ammo_type_live/show.html.heex:52
#, elixir-autogen, elixir-format
msgid "Powder grains per charge"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:89
#: lib/cannery_web/live/ammo_type_live/index.ex:70
#: lib/cannery_web/live/ammo_type_live/show.html.heex:51
#, elixir-autogen, elixir-format
msgid "Powder type"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:152
#: lib/cannery_web/live/ammo_type_live/index.ex:85
#: lib/cannery_web/live/ammo_type_live/show.html.heex:62
#, elixir-autogen, elixir-format
msgid "UPC"
msgstr ""
@ -646,19 +620,18 @@ msgstr ""
msgid "New password"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.ex:192
#: lib/cannery_web/live/ammo_group_live/index.html.heex:73
#, elixir-autogen, elixir-format
msgid "Stage"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.ex:192
#: lib/cannery_web/live/ammo_group_live/index.html.heex:73
#, elixir-autogen, elixir-format
msgid "Unstage"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:125
#: lib/cannery_web/live/ammo_type_live/index.ex:79
#: lib/cannery_web/live/ammo_type_live/show.html.heex:56
#, elixir-autogen, elixir-format
msgid "Firing type"
msgstr ""
@ -674,36 +647,32 @@ msgid "Loading..."
msgstr ""
#: lib/cannery_web/live/container_live/index.ex:27
#: lib/cannery_web/live/container_live/show.ex:106
#: lib/cannery_web/live/container_live/show.ex:124
#, elixir-autogen, elixir-format
msgid "Edit %{name}"
msgstr ""
#: lib/cannery_web/live/container_live/index.ex:65
#: lib/cannery_web/live/container_live/show.ex:107
#: lib/cannery_web/live/container_live/show.ex:125
#, elixir-autogen, elixir-format
msgid "Edit %{name} tags"
msgstr ""
#: lib/cannery_web/components/container_card.ex:63
#: lib/cannery_web/live/ammo_type_live/show.html.heex:81
#: lib/cannery_web/live/ammo_type_live/show.html.heex:67
#: lib/cannery_web/live/container_live/show.html.heex:32
#, elixir-autogen, elixir-format, fuzzy
msgid "Rounds:"
msgstr ""
#: lib/cannery_web/live/container_live/show.ex:105
#, elixir-autogen, elixir-format
msgid "Show %{name}"
msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:224
#: lib/cannery_web/live/ammo_type_live/index.ex:178
#: lib/cannery_web/live/ammo_type_live/show.html.heex:148
#: lib/cannery_web/live/ammo_type_live/show.html.heex:142
#, elixir-autogen, elixir-format
msgid "No cost information"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.ex:102
#: lib/cannery_web/components/ammo_group_table_component.ex:87
#, elixir-autogen, elixir-format
msgid "% left"
msgstr ""
@ -774,14 +743,14 @@ msgstr ""
msgid "Ammo types"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.ex:105
#: lib/cannery_web/components/ammo_group_table_component.ex:66
#, elixir-autogen, elixir-format
msgid "Added on"
msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:49
#: lib/cannery_web/components/ammo_group_card.ex:57
#: lib/cannery_web/live/ammo_group_live/show.html.heex:30
#: lib/cannery_web/live/ammo_type_live/show.html.heex:129
#: lib/cannery_web/live/ammo_type_live/show.html.heex:123
#, elixir-autogen, elixir-format
msgid "Added on:"
msgstr ""
@ -850,7 +819,7 @@ msgstr ""
msgid "Move Ammo"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:105
#: lib/cannery_web/live/container_live/show.html.heex:111
#, elixir-autogen, elixir-format, fuzzy
msgid "No ammo in this container"
msgstr ""
@ -866,7 +835,7 @@ msgid "This ammo is not in a container"
msgstr ""
#: lib/cannery_web/components/container_card.ex:58
#: lib/cannery_web/live/ammo_type_live/show.html.heex:105
#: lib/cannery_web/live/ammo_type_live/show.html.heex:95
#: lib/cannery_web/live/container_live/show.html.heex:27
#, elixir-autogen, elixir-format
msgid "Packs:"
@ -888,55 +857,36 @@ msgstr ""
msgid "Leave \"Uses left\" blank to make invite unlimited"
msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:71
#: lib/cannery_web/components/ammo_group_card.ex:86
#, elixir-autogen, elixir-format, fuzzy
msgid "Container:"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:48
#: lib/cannery_web/live/ammo_type_live/index.html.heex:23
#: lib/cannery_web/live/ammo_type_live/show.html.heex:158
#: lib/cannery_web/live/ammo_type_live/show.html.heex:152
#: lib/cannery_web/live/container_live/show.html.heex:97
#, elixir-autogen, elixir-format
msgid "Show used"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.ex:110
#: lib/cannery_web/components/ammo_group_table_component.ex:61
#, elixir-autogen, elixir-format
msgid "Used up on"
msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:55
#: lib/cannery_web/components/ammo_group_card.ex:63
#, elixir-autogen, elixir-format
msgid "Used up on:"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.ex:206
#: lib/cannery_web/components/ammo_group_table_component.ex:195
#: lib/cannery_web/live/ammo_group_live/show.html.heex:19
#, elixir-autogen, elixir-format
msgid "%{percentage}%"
msgstr ""
#: lib/cannery_web/live/range_live/index.ex:121
#, elixir-autogen, elixir-format
msgid "Name: %{name}"
msgstr ""
#: lib/cannery_web/live/range_live/index.ex:115
#, elixir-autogen, elixir-format
msgid "Notes: %{notes}"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:62
#, elixir-autogen, elixir-format, fuzzy
msgid "Rounds fired"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:64
#, elixir-autogen, elixir-format
msgid "Rounds fired chart"
msgstr ""
#: lib/cannery_web/live/range_live/index.ex:125
#: lib/cannery_web/live/range_live/index.ex:114
#, elixir-autogen, elixir-format, fuzzy
msgid "Rounds shot: %{count}"
msgstr ""
@ -953,7 +903,9 @@ msgstr ""
msgid "Rounds"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:158
#: lib/cannery_web/live/container_live/index.html.heex:23
#: lib/cannery_web/live/container_live/show.html.heex:103
#, elixir-autogen, elixir-format
msgid "View as table"
msgstr ""
@ -963,7 +915,7 @@ msgstr ""
msgid "Total ever packs"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:121
#: lib/cannery_web/live/ammo_type_live/show.html.heex:111
#, elixir-autogen, elixir-format
msgid "Total ever packs:"
msgstr ""
@ -973,7 +925,7 @@ msgstr ""
msgid "Total ever rounds"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:97
#: lib/cannery_web/live/ammo_type_live/show.html.heex:83
#, elixir-autogen, elixir-format, fuzzy
msgid "Total ever rounds:"
msgstr ""
@ -983,7 +935,7 @@ msgstr ""
msgid "Used packs"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:113
#: lib/cannery_web/live/ammo_type_live/show.html.heex:103
#, elixir-autogen, elixir-format
msgid "Used packs:"
msgstr ""
@ -993,7 +945,7 @@ msgstr ""
msgid "Used rounds"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:89
#: lib/cannery_web/live/ammo_type_live/show.html.heex:75
#, elixir-autogen, elixir-format, fuzzy
msgid "Used rounds:"
msgstr ""
@ -1002,3 +954,140 @@ msgstr ""
#, elixir-autogen, elixir-format, fuzzy
msgid "Used up!"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:64
#, elixir-autogen, elixir-format, fuzzy
msgid "Rounds shot chart"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:27
#, elixir-autogen, elixir-format, fuzzy
msgid "Blank:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:13
#, elixir-autogen, elixir-format, fuzzy
msgid "Bullet core:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:12
#, elixir-autogen, elixir-format, fuzzy
msgid "Bullet type:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:15
#, elixir-autogen, elixir-format, fuzzy
msgid "Caliber:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:14
#, elixir-autogen, elixir-format, fuzzy
msgid "Cartridge:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:16
#, elixir-autogen, elixir-format, fuzzy
msgid "Case material:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:28
#, elixir-autogen, elixir-format, fuzzy
msgid "Corrosive:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:24
#, elixir-autogen, elixir-format, fuzzy
msgid "Firing type:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:21
#, elixir-autogen, elixir-format, fuzzy
msgid "Grains:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:26
#, elixir-autogen, elixir-format, fuzzy
msgid "Incendiary:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:17
#, elixir-autogen, elixir-format, fuzzy
msgid "Jacket type:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:29
#, elixir-autogen, elixir-format, fuzzy
msgid "Manufacturer:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:18
#, elixir-autogen, elixir-format, fuzzy
msgid "Muzzle velocity:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:20
#, elixir-autogen, elixir-format, fuzzy
msgid "Powder grains per charge:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:19
#, elixir-autogen, elixir-format, fuzzy
msgid "Powder type:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:22
#, elixir-autogen, elixir-format, fuzzy
msgid "Pressure:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:23
#, elixir-autogen, elixir-format, fuzzy
msgid "Primer type:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:25
#, elixir-autogen, elixir-format, fuzzy
msgid "Tracer:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:30
#, elixir-autogen, elixir-format, fuzzy
msgid "UPC:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.ex:137
#: lib/cannery_web/live/ammo_type_live/show.html.heex:132
#, elixir-autogen, elixir-format
msgid "Average CPR"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:117
#, elixir-autogen, elixir-format, fuzzy
msgid "Edit %{ammo_type_name}"
msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:39
#: lib/cannery_web/components/ammo_group_table_component.ex:233
#, elixir-autogen, elixir-format
msgid "Empty"
msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:86
#, elixir-autogen, elixir-format
msgid "CPR"
msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:77
#, elixir-autogen, elixir-format
msgid "CPR:"
msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:84
#, elixir-autogen, elixir-format, fuzzy
msgid "Original Count"
msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:44
#, elixir-autogen, elixir-format, fuzzy
msgid "Original Count:"
msgstr ""

View File

@ -16,7 +16,7 @@ msgid "Container must be empty before deleting"
msgstr ""
#: lib/cannery_web/live/container_live/index.ex:88
#: lib/cannery_web/live/container_live/show.ex:71
#: lib/cannery_web/live/container_live/show.ex:75
#, elixir-autogen, elixir-format
msgid "Could not delete %{name}: %{error}"
msgstr ""
@ -170,7 +170,7 @@ msgstr ""
msgid "Invalid number of copies, must be between 1 and %{max}. Was %{multiplier}"
msgstr ""
#: lib/cannery/ammo.ex:587
#: lib/cannery/ammo.ex:609
#, elixir-autogen, elixir-format
msgid "Invalid multiplier"
msgstr ""

View File

@ -20,7 +20,7 @@ msgid "%{name} created successfully"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.ex:47
#: lib/cannery_web/live/ammo_type_live/show.ex:28
#: lib/cannery_web/live/ammo_type_live/show.ex:56
#: lib/cannery_web/live/invite_live/index.ex:53
#: lib/cannery_web/live/invite_live/index.ex:133
#: lib/cannery_web/live/tag_live/index.ex:38
@ -39,7 +39,7 @@ msgid "%{name} enabled succesfully"
msgstr ""
#: lib/cannery_web/live/container_live/index.ex:81
#: lib/cannery_web/live/container_live/show.ex:61
#: lib/cannery_web/live/container_live/show.ex:65
#, elixir-autogen, elixir-format
msgid "%{name} has been deleted"
msgstr ""
@ -86,7 +86,7 @@ msgstr ""
msgid "Are you sure you want to delete the invite for %{name}?"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.ex:242
#: lib/cannery_web/live/ammo_group_live/index.html.heex:132
#: lib/cannery_web/live/ammo_group_live/show.html.heex:75
#, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this ammo?"
@ -173,7 +173,7 @@ msgstr ""
msgid "%{name} added successfully"
msgstr ""
#: lib/cannery_web/live/container_live/show.ex:37
#: lib/cannery_web/live/container_live/show.ex:41
#, elixir-autogen, elixir-format
msgid "%{tag_name} has been removed from %{container_name}"
msgstr ""
@ -194,7 +194,7 @@ msgid "Are you sure you want to unstage this ammo?"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:132
#: lib/cannery_web/live/range_live/index.ex:184
#: lib/cannery_web/live/range_live/index.ex:159
#, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this shot record?"
msgstr ""

View File

@ -16,7 +16,7 @@ msgid "Container must be empty before deleting"
msgstr ""
#: lib/cannery_web/live/container_live/index.ex:88
#: lib/cannery_web/live/container_live/show.ex:71
#: lib/cannery_web/live/container_live/show.ex:75
#, elixir-autogen, elixir-format
msgid "Could not delete %{name}: %{error}"
msgstr ""
@ -169,7 +169,7 @@ msgstr ""
msgid "Invalid number of copies, must be between 1 and %{max}. Was %{multiplier}"
msgstr ""
#: lib/cannery/ammo.ex:587
#: lib/cannery/ammo.ex:609
#, elixir-autogen, elixir-format
msgid "Invalid multiplier"
msgstr ""

View File

@ -169,7 +169,7 @@ msgstr ""
msgid "Why not get some ready to shoot?"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.ex:199
#: lib/cannery_web/live/ammo_group_live/index.html.heex:80
#: lib/cannery_web/live/ammo_group_live/show.html.heex:101
#: lib/cannery_web/live/range_live/index.html.heex:38
#, elixir-autogen, elixir-format
@ -246,11 +246,6 @@ msgstr ""
msgid "Set Unlimited"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:97
#, elixir-autogen, elixir-format
msgid "Show used"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.html.heex:86
#: lib/cannery_web/live/range_live/index.html.heex:31
#, elixir-autogen, elixir-format

View File

@ -52,18 +52,12 @@ msgstr ""
msgid "Ammo"
msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:96
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:21
#: lib/cannery_web/live/ammo_group_live/index.ex:99
#, elixir-autogen, elixir-format
msgid "Ammo type"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.ex:137
#: lib/cannery_web/live/ammo_type_live/show.html.heex:138
#, elixir-autogen, elixir-format
msgid "Average Price paid"
msgstr ""
#: lib/cannery_web/live/tag_live/form_component.ex:79
#, elixir-autogen, elixir-format
msgid "Background color"
@ -71,7 +65,6 @@ msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:140
#: lib/cannery_web/live/ammo_type_live/index.ex:82
#: lib/cannery_web/live/ammo_type_live/show.html.heex:59
#, elixir-autogen, elixir-format
msgid "Blank"
msgstr ""
@ -83,42 +76,37 @@ msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:44
#: lib/cannery_web/live/ammo_type_live/index.ex:64
#: lib/cannery_web/live/ammo_type_live/show.html.heex:45
#, elixir-autogen, elixir-format
msgid "Bullet core"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:37
#: lib/cannery_web/live/ammo_type_live/index.ex:63
#: lib/cannery_web/live/ammo_type_live/show.html.heex:44
#, elixir-autogen, elixir-format
msgid "Bullet type"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:58
#: lib/cannery_web/live/ammo_type_live/index.ex:66
#: lib/cannery_web/live/ammo_type_live/show.html.heex:47
#, elixir-autogen, elixir-format
msgid "Caliber"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:51
#: lib/cannery_web/live/ammo_type_live/index.ex:65
#: lib/cannery_web/live/ammo_type_live/show.html.heex:46
#, elixir-autogen, elixir-format
msgid "Cartridge"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:65
#: lib/cannery_web/live/ammo_type_live/index.ex:67
#: lib/cannery_web/live/ammo_type_live/show.html.heex:48
#, elixir-autogen, elixir-format
msgid "Case material"
msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:72
#: lib/cannery_web/components/move_ammo_group_component.ex:67
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:48
#: lib/cannery_web/live/ammo_group_live/index.ex:104
#, elixir-autogen, elixir-format
msgid "Container"
msgstr ""
@ -133,18 +121,17 @@ msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:144
#: lib/cannery_web/live/ammo_type_live/index.ex:83
#: lib/cannery_web/live/ammo_type_live/show.html.heex:60
#, elixir-autogen, elixir-format
msgid "Corrosive"
msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:83
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:27
#: lib/cannery_web/live/ammo_group_live/index.ex:100
#, elixir-autogen, elixir-format
msgid "Count"
msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:37
#: lib/cannery_web/components/ammo_group_card.ex:38
#: lib/cannery_web/live/ammo_group_live/show.html.heex:8
#, elixir-autogen, elixir-format
msgid "Count:"
@ -174,7 +161,6 @@ msgid "Edit Ammo group"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.ex:23
#: lib/cannery_web/live/ammo_type_live/show.ex:63
#, elixir-autogen, elixir-format
msgid "Edit Ammo type"
msgstr ""
@ -201,14 +187,12 @@ msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:103
#: lib/cannery_web/live/ammo_type_live/index.ex:76
#: lib/cannery_web/live/ammo_type_live/show.html.heex:53
#, elixir-autogen, elixir-format
msgid "Grains"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:136
#: lib/cannery_web/live/ammo_type_live/index.ex:81
#: lib/cannery_web/live/ammo_type_live/show.html.heex:58
#, elixir-autogen, elixir-format
msgid "Incendiary"
msgstr ""
@ -260,7 +244,6 @@ msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:148
#: lib/cannery_web/live/ammo_type_live/index.ex:84
#: lib/cannery_web/live/ammo_type_live/show.html.heex:61
#, elixir-autogen, elixir-format
msgid "Manufacturer"
msgstr ""
@ -339,6 +322,7 @@ msgid "No tags"
msgstr ""
#: lib/cannery_web/components/add_shot_group_component.html.heex:37
#: lib/cannery_web/components/ammo_group_table_component.ex:88
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:41
#: lib/cannery_web/live/ammo_group_live/show.ex:88
#: lib/cannery_web/live/range_live/form_component.html.heex:29
@ -347,7 +331,7 @@ msgstr ""
msgid "Notes"
msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:43
#: lib/cannery_web/components/ammo_group_card.ex:51
#: lib/cannery_web/live/ammo_group_live/show.html.heex:24
#, elixir-autogen, elixir-format
msgid "Notes:"
@ -360,25 +344,23 @@ msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:111
#: lib/cannery_web/live/ammo_type_live/index.ex:77
#: lib/cannery_web/live/ammo_type_live/show.html.heex:54
#, elixir-autogen, elixir-format
msgid "Pressure"
msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:85
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:34
#: lib/cannery_web/live/ammo_group_live/index.ex:101
#, elixir-autogen, elixir-format
msgid "Price paid"
msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:62
#: lib/cannery_web/components/ammo_group_card.ex:70
#, elixir-autogen, elixir-format
msgid "Price paid:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:118
#: lib/cannery_web/live/ammo_type_live/index.ex:78
#: lib/cannery_web/live/ammo_type_live/show.html.heex:55
#, elixir-autogen, elixir-format
msgid "Primer type"
msgstr ""
@ -404,11 +386,6 @@ msgstr ""
msgid "Settings"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:62
#, elixir-autogen, elixir-format
msgid "Show Ammo type"
msgstr ""
#: lib/cannery_web/live/home_live.ex:83
#, elixir-autogen, elixir-format
msgid "Simple:"
@ -449,7 +426,6 @@ msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:132
#: lib/cannery_web/live/ammo_type_live/index.ex:80
#: lib/cannery_web/live/ammo_type_live/show.html.heex:57
#, elixir-autogen, elixir-format
msgid "Tracer"
msgstr ""
@ -497,8 +473,8 @@ msgstr ""
msgid "No tags for this container"
msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:79
#: lib/cannery_web/components/topbar.ex:81
#: lib/cannery_web/live/ammo_group_live/index.ex:103
#, elixir-autogen, elixir-format
msgid "Range"
msgstr ""
@ -565,6 +541,7 @@ msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:87
#: lib/cannery_web/live/range_live/index.ex:81
#: lib/cannery_web/live/range_live/index.html.heex:62
#, elixir-autogen, elixir-format
msgid "Rounds shot"
msgstr ""
@ -579,7 +556,7 @@ msgstr ""
msgid "Move Ammo group"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.ex:270
#: lib/cannery_web/live/ammo_group_live/index.html.heex:97
#, elixir-autogen, elixir-format
msgid "Move ammo"
msgstr ""
@ -594,12 +571,14 @@ msgstr ""
msgid "Shot log"
msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:63
#: lib/cannery_web/live/ammo_group_live/index.ex:154
#: lib/cannery_web/components/ammo_group_card.ex:71
#: lib/cannery_web/components/ammo_group_card.ex:78
#: lib/cannery_web/components/ammo_group_table_component.ex:159
#: lib/cannery_web/components/ammo_group_table_component.ex:227
#: lib/cannery_web/live/ammo_group_live/show.html.heex:37
#: lib/cannery_web/live/ammo_group_live/show.html.heex:44
#: lib/cannery_web/live/ammo_type_live/index.ex:179
#: lib/cannery_web/live/ammo_type_live/show.html.heex:142
#: lib/cannery_web/live/ammo_type_live/show.html.heex:136
#, elixir-autogen, elixir-format
msgid "$%{amount}"
msgstr ""
@ -611,35 +590,30 @@ msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:72
#: lib/cannery_web/live/ammo_type_live/index.ex:68
#: lib/cannery_web/live/ammo_type_live/show.html.heex:49
#, elixir-autogen, elixir-format
msgid "Jacket type"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:79
#: lib/cannery_web/live/ammo_type_live/index.ex:69
#: lib/cannery_web/live/ammo_type_live/show.html.heex:50
#, elixir-autogen, elixir-format
msgid "Muzzle velocity"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:93
#: lib/cannery_web/live/ammo_type_live/index.ex:72
#: lib/cannery_web/live/ammo_type_live/show.html.heex:52
#, elixir-autogen, elixir-format
msgid "Powder grains per charge"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:89
#: lib/cannery_web/live/ammo_type_live/index.ex:70
#: lib/cannery_web/live/ammo_type_live/show.html.heex:51
#, elixir-autogen, elixir-format
msgid "Powder type"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:152
#: lib/cannery_web/live/ammo_type_live/index.ex:85
#: lib/cannery_web/live/ammo_type_live/show.html.heex:62
#, elixir-autogen, elixir-format
msgid "UPC"
msgstr ""
@ -660,19 +634,18 @@ msgstr ""
msgid "New password"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.ex:192
#: lib/cannery_web/live/ammo_group_live/index.html.heex:73
#, elixir-autogen, elixir-format
msgid "Stage"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.ex:192
#: lib/cannery_web/live/ammo_group_live/index.html.heex:73
#, elixir-autogen, elixir-format
msgid "Unstage"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:125
#: lib/cannery_web/live/ammo_type_live/index.ex:79
#: lib/cannery_web/live/ammo_type_live/show.html.heex:56
#, elixir-autogen, elixir-format
msgid "Firing type"
msgstr ""
@ -688,36 +661,32 @@ msgid "Loading..."
msgstr ""
#: lib/cannery_web/live/container_live/index.ex:27
#: lib/cannery_web/live/container_live/show.ex:106
#: lib/cannery_web/live/container_live/show.ex:124
#, elixir-autogen, elixir-format
msgid "Edit %{name}"
msgstr ""
#: lib/cannery_web/live/container_live/index.ex:65
#: lib/cannery_web/live/container_live/show.ex:107
#: lib/cannery_web/live/container_live/show.ex:125
#, elixir-autogen, elixir-format
msgid "Edit %{name} tags"
msgstr ""
#: lib/cannery_web/components/container_card.ex:63
#: lib/cannery_web/live/ammo_type_live/show.html.heex:81
#: lib/cannery_web/live/ammo_type_live/show.html.heex:67
#: lib/cannery_web/live/container_live/show.html.heex:32
#, elixir-autogen, elixir-format
msgid "Rounds:"
msgstr ""
#: lib/cannery_web/live/container_live/show.ex:105
#, elixir-autogen, elixir-format
msgid "Show %{name}"
msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:224
#: lib/cannery_web/live/ammo_type_live/index.ex:178
#: lib/cannery_web/live/ammo_type_live/show.html.heex:148
#: lib/cannery_web/live/ammo_type_live/show.html.heex:142
#, elixir-autogen, elixir-format
msgid "No cost information"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.ex:102
#: lib/cannery_web/components/ammo_group_table_component.ex:87
#, elixir-autogen, elixir-format
msgid "% left"
msgstr ""
@ -788,14 +757,14 @@ msgstr ""
msgid "Ammo types"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.ex:105
#: lib/cannery_web/components/ammo_group_table_component.ex:66
#, elixir-autogen, elixir-format
msgid "Added on"
msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:49
#: lib/cannery_web/components/ammo_group_card.ex:57
#: lib/cannery_web/live/ammo_group_live/show.html.heex:30
#: lib/cannery_web/live/ammo_type_live/show.html.heex:129
#: lib/cannery_web/live/ammo_type_live/show.html.heex:123
#, elixir-autogen, elixir-format
msgid "Added on:"
msgstr ""
@ -864,7 +833,7 @@ msgstr ""
msgid "Move Ammo"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:105
#: lib/cannery_web/live/container_live/show.html.heex:111
#, elixir-autogen, elixir-format, fuzzy
msgid "No ammo in this container"
msgstr ""
@ -880,7 +849,7 @@ msgid "This ammo is not in a container"
msgstr ""
#: lib/cannery_web/components/container_card.ex:58
#: lib/cannery_web/live/ammo_type_live/show.html.heex:105
#: lib/cannery_web/live/ammo_type_live/show.html.heex:95
#: lib/cannery_web/live/container_live/show.html.heex:27
#, elixir-autogen, elixir-format
msgid "Packs:"
@ -902,55 +871,36 @@ msgstr ""
msgid "Leave \"Uses left\" blank to make invite unlimited"
msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:71
#: lib/cannery_web/components/ammo_group_card.ex:86
#, elixir-autogen, elixir-format, fuzzy
msgid "Container:"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:48
#: lib/cannery_web/live/ammo_type_live/index.html.heex:23
#: lib/cannery_web/live/ammo_type_live/show.html.heex:158
#: lib/cannery_web/live/ammo_type_live/show.html.heex:152
#: lib/cannery_web/live/container_live/show.html.heex:97
#, elixir-autogen, elixir-format
msgid "Show used"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.ex:110
#: lib/cannery_web/components/ammo_group_table_component.ex:61
#, elixir-autogen, elixir-format
msgid "Used up on"
msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:55
#: lib/cannery_web/components/ammo_group_card.ex:63
#, elixir-autogen, elixir-format
msgid "Used up on:"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.ex:206
#: lib/cannery_web/components/ammo_group_table_component.ex:195
#: lib/cannery_web/live/ammo_group_live/show.html.heex:19
#, elixir-autogen, elixir-format
msgid "%{percentage}%"
msgstr ""
#: lib/cannery_web/live/range_live/index.ex:121
#, elixir-autogen, elixir-format
msgid "Name: %{name}"
msgstr ""
#: lib/cannery_web/live/range_live/index.ex:115
#, elixir-autogen, elixir-format
msgid "Notes: %{notes}"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:62
#, elixir-autogen, elixir-format, fuzzy
msgid "Rounds fired"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:64
#, elixir-autogen, elixir-format
msgid "Rounds fired chart"
msgstr ""
#: lib/cannery_web/live/range_live/index.ex:125
#: lib/cannery_web/live/range_live/index.ex:114
#, elixir-autogen, elixir-format, fuzzy
msgid "Rounds shot: %{count}"
msgstr ""
@ -967,7 +917,9 @@ msgstr ""
msgid "Rounds"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:158
#: lib/cannery_web/live/container_live/index.html.heex:23
#: lib/cannery_web/live/container_live/show.html.heex:103
#, elixir-autogen, elixir-format
msgid "View as table"
msgstr ""
@ -977,7 +929,7 @@ msgstr ""
msgid "Total ever packs"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:121
#: lib/cannery_web/live/ammo_type_live/show.html.heex:111
#, elixir-autogen, elixir-format
msgid "Total ever packs:"
msgstr ""
@ -987,7 +939,7 @@ msgstr ""
msgid "Total ever rounds"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:97
#: lib/cannery_web/live/ammo_type_live/show.html.heex:83
#, elixir-autogen, elixir-format, fuzzy
msgid "Total ever rounds:"
msgstr ""
@ -997,7 +949,7 @@ msgstr ""
msgid "Used packs"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:113
#: lib/cannery_web/live/ammo_type_live/show.html.heex:103
#, elixir-autogen, elixir-format
msgid "Used packs:"
msgstr ""
@ -1007,7 +959,7 @@ msgstr ""
msgid "Used rounds"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:89
#: lib/cannery_web/live/ammo_type_live/show.html.heex:75
#, elixir-autogen, elixir-format, fuzzy
msgid "Used rounds:"
msgstr ""
@ -1016,3 +968,140 @@ msgstr ""
#, elixir-autogen, elixir-format, fuzzy
msgid "Used up!"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:64
#, elixir-autogen, elixir-format, fuzzy
msgid "Rounds shot chart"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:27
#, elixir-autogen, elixir-format, fuzzy
msgid "Blank:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:13
#, elixir-autogen, elixir-format, fuzzy
msgid "Bullet core:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:12
#, elixir-autogen, elixir-format, fuzzy
msgid "Bullet type:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:15
#, elixir-autogen, elixir-format, fuzzy
msgid "Caliber:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:14
#, elixir-autogen, elixir-format, fuzzy
msgid "Cartridge:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:16
#, elixir-autogen, elixir-format, fuzzy
msgid "Case material:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:28
#, elixir-autogen, elixir-format, fuzzy
msgid "Corrosive:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:24
#, elixir-autogen, elixir-format, fuzzy
msgid "Firing type:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:21
#, elixir-autogen, elixir-format, fuzzy
msgid "Grains:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:26
#, elixir-autogen, elixir-format, fuzzy
msgid "Incendiary:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:17
#, elixir-autogen, elixir-format, fuzzy
msgid "Jacket type:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:29
#, elixir-autogen, elixir-format, fuzzy
msgid "Manufacturer:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:18
#, elixir-autogen, elixir-format, fuzzy
msgid "Muzzle velocity:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:20
#, elixir-autogen, elixir-format, fuzzy
msgid "Powder grains per charge:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:19
#, elixir-autogen, elixir-format, fuzzy
msgid "Powder type:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:22
#, elixir-autogen, elixir-format, fuzzy
msgid "Pressure:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:23
#, elixir-autogen, elixir-format, fuzzy
msgid "Primer type:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:25
#, elixir-autogen, elixir-format, fuzzy
msgid "Tracer:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:30
#, elixir-autogen, elixir-format, fuzzy
msgid "UPC:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.ex:137
#: lib/cannery_web/live/ammo_type_live/show.html.heex:132
#, elixir-autogen, elixir-format
msgid "Average CPR"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:117
#, elixir-autogen, elixir-format, fuzzy
msgid "Edit %{ammo_type_name}"
msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:39
#: lib/cannery_web/components/ammo_group_table_component.ex:233
#, elixir-autogen, elixir-format
msgid "Empty"
msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:86
#, elixir-autogen, elixir-format
msgid "CPR"
msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:77
#, elixir-autogen, elixir-format
msgid "CPR:"
msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:84
#, elixir-autogen, elixir-format, fuzzy
msgid "Original Count"
msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:44
#, elixir-autogen, elixir-format, fuzzy
msgid "Original Count:"
msgstr ""

View File

@ -29,7 +29,7 @@ msgid "Container must be empty before deleting"
msgstr "el Contenedor debe estar vació antes de borrarlo"
#: lib/cannery_web/live/container_live/index.ex:88
#: lib/cannery_web/live/container_live/show.ex:71
#: lib/cannery_web/live/container_live/show.ex:75
#, elixir-autogen, elixir-format
msgid "Could not delete %{name}: %{error}"
msgstr "No se pudo eliminar %{name}: %{error}"
@ -185,7 +185,7 @@ msgstr ""
msgid "Invalid number of copies, must be between 1 and %{max}. Was %{multiplier}"
msgstr ""
#: lib/cannery/ammo.ex:587
#: lib/cannery/ammo.ex:609
#, elixir-autogen, elixir-format
msgid "Invalid multiplier"
msgstr ""

View File

@ -32,7 +32,7 @@ msgid "%{name} created successfully"
msgstr "%{name} creado exitosamente"
#: lib/cannery_web/live/ammo_type_live/index.ex:47
#: lib/cannery_web/live/ammo_type_live/show.ex:28
#: lib/cannery_web/live/ammo_type_live/show.ex:56
#: lib/cannery_web/live/invite_live/index.ex:53
#: lib/cannery_web/live/invite_live/index.ex:133
#: lib/cannery_web/live/tag_live/index.ex:38
@ -51,7 +51,7 @@ msgid "%{name} enabled succesfully"
msgstr "%{name} activado exitosamente"
#: lib/cannery_web/live/container_live/index.ex:81
#: lib/cannery_web/live/container_live/show.ex:61
#: lib/cannery_web/live/container_live/show.ex:65
#, elixir-autogen, elixir-format
msgid "%{name} has been deleted"
msgstr "%{name} ha sido borrado"
@ -100,7 +100,7 @@ msgstr "Está seguro que desea eliminar %{name}?"
msgid "Are you sure you want to delete the invite for %{name}?"
msgstr "Está seguro que quiere eliminar la invitación para %{name}?"
#: lib/cannery_web/live/ammo_group_live/index.ex:242
#: lib/cannery_web/live/ammo_group_live/index.html.heex:132
#: lib/cannery_web/live/ammo_group_live/show.html.heex:75
#, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this ammo?"
@ -192,7 +192,7 @@ msgstr ""
msgid "%{name} added successfully"
msgstr "%{name} añadido exitosamente"
#: lib/cannery_web/live/container_live/show.ex:37
#: lib/cannery_web/live/container_live/show.ex:41
#, elixir-autogen, elixir-format
msgid "%{tag_name} has been removed from %{container_name}"
msgstr "se ha removido %{tag_name} de %{container_name}"
@ -213,7 +213,7 @@ msgid "Are you sure you want to unstage this ammo?"
msgstr "Está seguro que desea desmontar esta munición?"
#: lib/cannery_web/live/ammo_group_live/show.ex:132
#: lib/cannery_web/live/range_live/index.ex:184
#: lib/cannery_web/live/range_live/index.ex:159
#, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this shot record?"
msgstr ""

View File

@ -169,7 +169,7 @@ msgstr "Munition préparée"
msgid "Why not get some ready to shoot?"
msgstr "Pourquoi pas en préparer pour tirer?"
#: lib/cannery_web/live/ammo_group_live/index.ex:199
#: lib/cannery_web/live/ammo_group_live/index.html.heex:80
#: lib/cannery_web/live/ammo_group_live/show.html.heex:101
#: lib/cannery_web/live/range_live/index.html.heex:38
#, elixir-autogen, elixir-format
@ -246,11 +246,6 @@ msgstr ""
msgid "Set Unlimited"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:97
#, elixir-autogen, elixir-format
msgid "Show used"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.html.heex:86
#: lib/cannery_web/live/range_live/index.html.heex:31
#, elixir-autogen, elixir-format

View File

@ -52,18 +52,12 @@ msgstr "Administrateur·ices:"
msgid "Ammo"
msgstr "Munition"
#: lib/cannery_web/components/ammo_group_table_component.ex:96
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:21
#: lib/cannery_web/live/ammo_group_live/index.ex:99
#, elixir-autogen, elixir-format
msgid "Ammo type"
msgstr "Type de munition"
#: lib/cannery_web/live/ammo_type_live/index.ex:137
#: lib/cannery_web/live/ammo_type_live/show.html.heex:138
#, elixir-autogen, elixir-format
msgid "Average Price paid"
msgstr "Prix acheté moyen"
#: lib/cannery_web/live/tag_live/form_component.ex:79
#, elixir-autogen, elixir-format
msgid "Background color"
@ -71,7 +65,6 @@ msgstr "Couleur de fond"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:140
#: lib/cannery_web/live/ammo_type_live/index.ex:82
#: lib/cannery_web/live/ammo_type_live/show.html.heex:59
#, elixir-autogen, elixir-format
msgid "Blank"
msgstr "Vide"
@ -83,42 +76,37 @@ msgstr "Cuivre"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:44
#: lib/cannery_web/live/ammo_type_live/index.ex:64
#: lib/cannery_web/live/ammo_type_live/show.html.heex:45
#, elixir-autogen, elixir-format
msgid "Bullet core"
msgstr "Noyau de balle"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:37
#: lib/cannery_web/live/ammo_type_live/index.ex:63
#: lib/cannery_web/live/ammo_type_live/show.html.heex:44
#, elixir-autogen, elixir-format
msgid "Bullet type"
msgstr "Type de balle"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:58
#: lib/cannery_web/live/ammo_type_live/index.ex:66
#: lib/cannery_web/live/ammo_type_live/show.html.heex:47
#, elixir-autogen, elixir-format
msgid "Caliber"
msgstr "Calibre"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:51
#: lib/cannery_web/live/ammo_type_live/index.ex:65
#: lib/cannery_web/live/ammo_type_live/show.html.heex:46
#, elixir-autogen, elixir-format
msgid "Cartridge"
msgstr "Cartouche"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:65
#: lib/cannery_web/live/ammo_type_live/index.ex:67
#: lib/cannery_web/live/ammo_type_live/show.html.heex:48
#, elixir-autogen, elixir-format
msgid "Case material"
msgstr "Matériau de la caisse"
#: lib/cannery_web/components/ammo_group_table_component.ex:72
#: lib/cannery_web/components/move_ammo_group_component.ex:67
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:48
#: lib/cannery_web/live/ammo_group_live/index.ex:104
#, elixir-autogen, elixir-format
msgid "Container"
msgstr "Conteneur"
@ -133,18 +121,17 @@ msgstr "Conteneurs"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:144
#: lib/cannery_web/live/ammo_type_live/index.ex:83
#: lib/cannery_web/live/ammo_type_live/show.html.heex:60
#, elixir-autogen, elixir-format
msgid "Corrosive"
msgstr "Corrosive"
#: lib/cannery_web/components/ammo_group_table_component.ex:83
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:27
#: lib/cannery_web/live/ammo_group_live/index.ex:100
#, elixir-autogen, elixir-format
msgid "Count"
msgstr "Quantité"
#: lib/cannery_web/components/ammo_group_card.ex:37
#: lib/cannery_web/components/ammo_group_card.ex:38
#: lib/cannery_web/live/ammo_group_live/show.html.heex:8
#, elixir-autogen, elixir-format
msgid "Count:"
@ -174,7 +161,6 @@ msgid "Edit Ammo group"
msgstr "Éditer le groupe de munition"
#: lib/cannery_web/live/ammo_type_live/index.ex:23
#: lib/cannery_web/live/ammo_type_live/show.ex:63
#, elixir-autogen, elixir-format
msgid "Edit Ammo type"
msgstr "Éditer le type de munition"
@ -201,14 +187,12 @@ msgstr "FMJ"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:103
#: lib/cannery_web/live/ammo_type_live/index.ex:76
#: lib/cannery_web/live/ammo_type_live/show.html.heex:53
#, elixir-autogen, elixir-format
msgid "Grains"
msgstr "Graines"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:136
#: lib/cannery_web/live/ammo_type_live/index.ex:81
#: lib/cannery_web/live/ammo_type_live/show.html.heex:58
#, elixir-autogen, elixir-format
msgid "Incendiary"
msgstr "Incendiaire"
@ -260,7 +244,6 @@ msgstr "Chargeur, lame-chargeur, boite de munition, etc."
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:148
#: lib/cannery_web/live/ammo_type_live/index.ex:84
#: lib/cannery_web/live/ammo_type_live/show.html.heex:61
#, elixir-autogen, elixir-format
msgid "Manufacturer"
msgstr "Fabricant"
@ -339,6 +322,7 @@ msgid "No tags"
msgstr "Aucun tag"
#: lib/cannery_web/components/add_shot_group_component.html.heex:37
#: lib/cannery_web/components/ammo_group_table_component.ex:88
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:41
#: lib/cannery_web/live/ammo_group_live/show.ex:88
#: lib/cannery_web/live/range_live/form_component.html.heex:29
@ -347,7 +331,7 @@ msgstr "Aucun tag"
msgid "Notes"
msgstr "Notes"
#: lib/cannery_web/components/ammo_group_card.ex:43
#: lib/cannery_web/components/ammo_group_card.ex:51
#: lib/cannery_web/live/ammo_group_live/show.html.heex:24
#, elixir-autogen, elixir-format
msgid "Notes:"
@ -360,25 +344,23 @@ msgstr "Sur létagère"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:111
#: lib/cannery_web/live/ammo_type_live/index.ex:77
#: lib/cannery_web/live/ammo_type_live/show.html.heex:54
#, elixir-autogen, elixir-format
msgid "Pressure"
msgstr "Pression"
#: lib/cannery_web/components/ammo_group_table_component.ex:85
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:34
#: lib/cannery_web/live/ammo_group_live/index.ex:101
#, elixir-autogen, elixir-format
msgid "Price paid"
msgstr "Prix payé"
#: lib/cannery_web/components/ammo_group_card.ex:62
#: lib/cannery_web/components/ammo_group_card.ex:70
#, elixir-autogen, elixir-format
msgid "Price paid:"
msgstr "Prix payé:"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:118
#: lib/cannery_web/live/ammo_type_live/index.ex:78
#: lib/cannery_web/live/ammo_type_live/show.html.heex:55
#, elixir-autogen, elixir-format
msgid "Primer type"
msgstr "Type damorce"
@ -406,11 +388,6 @@ msgstr ""
msgid "Settings"
msgstr "Paramètres"
#: lib/cannery_web/live/ammo_type_live/show.ex:62
#, elixir-autogen, elixir-format
msgid "Show Ammo type"
msgstr "Montrer le type de munition"
#: lib/cannery_web/live/home_live.ex:83
#, elixir-autogen, elixir-format
msgid "Simple:"
@ -453,7 +430,6 @@ msgstr "Le site web de suivi darme à feux auto-hébergé"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:132
#: lib/cannery_web/live/ammo_type_live/index.ex:80
#: lib/cannery_web/live/ammo_type_live/show.html.heex:57
#, elixir-autogen, elixir-format
msgid "Tracer"
msgstr "Traceuse"
@ -501,8 +477,8 @@ msgstr "Vos données restent avec vous, point final"
msgid "No tags for this container"
msgstr "Aucun tag pour ce conteneur"
#: lib/cannery_web/components/ammo_group_table_component.ex:79
#: lib/cannery_web/components/topbar.ex:81
#: lib/cannery_web/live/ammo_group_live/index.ex:103
#, elixir-autogen, elixir-format
msgid "Range"
msgstr "Portée"
@ -569,6 +545,7 @@ msgstr "Cartouches restantes"
#: lib/cannery_web/live/ammo_group_live/show.ex:87
#: lib/cannery_web/live/range_live/index.ex:81
#: lib/cannery_web/live/range_live/index.html.heex:62
#, elixir-autogen, elixir-format
msgid "Rounds shot"
msgstr "Cartouches tirées"
@ -583,7 +560,7 @@ msgstr "Enregistrements de tir"
msgid "Move Ammo group"
msgstr "Déplacer le groupe de munition"
#: lib/cannery_web/live/ammo_group_live/index.ex:270
#: lib/cannery_web/live/ammo_group_live/index.html.heex:97
#, elixir-autogen, elixir-format
msgid "Move ammo"
msgstr "Déplacer munition"
@ -598,12 +575,14 @@ msgstr "Aucun autre conteneur"
msgid "Shot log"
msgstr "Évènements de tir"
#: lib/cannery_web/components/ammo_group_card.ex:63
#: lib/cannery_web/live/ammo_group_live/index.ex:154
#: lib/cannery_web/components/ammo_group_card.ex:71
#: lib/cannery_web/components/ammo_group_card.ex:78
#: lib/cannery_web/components/ammo_group_table_component.ex:159
#: lib/cannery_web/components/ammo_group_table_component.ex:227
#: lib/cannery_web/live/ammo_group_live/show.html.heex:37
#: lib/cannery_web/live/ammo_group_live/show.html.heex:44
#: lib/cannery_web/live/ammo_type_live/index.ex:179
#: lib/cannery_web/live/ammo_type_live/show.html.heex:142
#: lib/cannery_web/live/ammo_type_live/show.html.heex:136
#, elixir-autogen, elixir-format
msgid "$%{amount}"
msgstr "%{amount}$"
@ -615,35 +594,30 @@ msgstr "Bi-métal"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:72
#: lib/cannery_web/live/ammo_type_live/index.ex:68
#: lib/cannery_web/live/ammo_type_live/show.html.heex:49
#, elixir-autogen, elixir-format
msgid "Jacket type"
msgstr "Type de douille"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:79
#: lib/cannery_web/live/ammo_type_live/index.ex:69
#: lib/cannery_web/live/ammo_type_live/show.html.heex:50
#, elixir-autogen, elixir-format
msgid "Muzzle velocity"
msgstr "Vélocité du canon"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:93
#: lib/cannery_web/live/ammo_type_live/index.ex:72
#: lib/cannery_web/live/ammo_type_live/show.html.heex:52
#, elixir-autogen, elixir-format
msgid "Powder grains per charge"
msgstr "Graines de poudre par charge"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:89
#: lib/cannery_web/live/ammo_type_live/index.ex:70
#: lib/cannery_web/live/ammo_type_live/show.html.heex:51
#, elixir-autogen, elixir-format
msgid "Powder type"
msgstr "Type de poudre"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:152
#: lib/cannery_web/live/ammo_type_live/index.ex:85
#: lib/cannery_web/live/ammo_type_live/show.html.heex:62
#, elixir-autogen, elixir-format
msgid "UPC"
msgstr "UPC"
@ -664,19 +638,18 @@ msgstr "Mot de passe actuel"
msgid "New password"
msgstr "Nouveau mot de passe"
#: lib/cannery_web/live/ammo_group_live/index.ex:192
#: lib/cannery_web/live/ammo_group_live/index.html.heex:73
#, elixir-autogen, elixir-format
msgid "Stage"
msgstr "Sélectionné"
#: lib/cannery_web/live/ammo_group_live/index.ex:192
#: lib/cannery_web/live/ammo_group_live/index.html.heex:73
#, elixir-autogen, elixir-format
msgid "Unstage"
msgstr "Désélectionner"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:125
#: lib/cannery_web/live/ammo_type_live/index.ex:79
#: lib/cannery_web/live/ammo_type_live/show.html.heex:56
#, elixir-autogen, elixir-format
msgid "Firing type"
msgstr "Type dallumage"
@ -692,36 +665,32 @@ msgid "Loading..."
msgstr "Chargement en cours…"
#: lib/cannery_web/live/container_live/index.ex:27
#: lib/cannery_web/live/container_live/show.ex:106
#: lib/cannery_web/live/container_live/show.ex:124
#, elixir-autogen, elixir-format
msgid "Edit %{name}"
msgstr "Éditer %{name}"
#: lib/cannery_web/live/container_live/index.ex:65
#: lib/cannery_web/live/container_live/show.ex:107
#: lib/cannery_web/live/container_live/show.ex:125
#, elixir-autogen, elixir-format
msgid "Edit %{name} tags"
msgstr "Éditer les tags de %{name}"
#: lib/cannery_web/components/container_card.ex:63
#: lib/cannery_web/live/ammo_type_live/show.html.heex:81
#: lib/cannery_web/live/ammo_type_live/show.html.heex:67
#: lib/cannery_web/live/container_live/show.html.heex:32
#, elixir-autogen, elixir-format
msgid "Rounds:"
msgstr "Cartouches:"
#: lib/cannery_web/live/container_live/show.ex:105
#, elixir-autogen, elixir-format
msgid "Show %{name}"
msgstr "Montrer %{name}"
#: lib/cannery_web/components/ammo_group_table_component.ex:224
#: lib/cannery_web/live/ammo_type_live/index.ex:178
#: lib/cannery_web/live/ammo_type_live/show.html.heex:148
#: lib/cannery_web/live/ammo_type_live/show.html.heex:142
#, elixir-autogen, elixir-format
msgid "No cost information"
msgstr "Aucune information de prix"
#: lib/cannery_web/live/ammo_group_live/index.ex:102
#: lib/cannery_web/components/ammo_group_table_component.ex:87
#, elixir-autogen, elixir-format
msgid "% left"
msgstr "%restante"
@ -792,14 +761,14 @@ msgstr "Exemplaires"
msgid "Ammo types"
msgstr "Types de munition"
#: lib/cannery_web/live/ammo_group_live/index.ex:105
#: lib/cannery_web/components/ammo_group_table_component.ex:66
#, elixir-autogen, elixir-format
msgid "Added on"
msgstr "Ajouté le"
#: lib/cannery_web/components/ammo_group_card.ex:49
#: lib/cannery_web/components/ammo_group_card.ex:57
#: lib/cannery_web/live/ammo_group_live/show.html.heex:30
#: lib/cannery_web/live/ammo_type_live/show.html.heex:129
#: lib/cannery_web/live/ammo_type_live/show.html.heex:123
#, elixir-autogen, elixir-format
msgid "Added on:"
msgstr "Ajouté le:"
@ -868,7 +837,7 @@ msgstr "Éditer le type de munition"
msgid "Move Ammo"
msgstr "Déplacer munition"
#: lib/cannery_web/live/container_live/show.html.heex:105
#: lib/cannery_web/live/container_live/show.html.heex:111
#, elixir-autogen, elixir-format, fuzzy
msgid "No ammo in this container"
msgstr "Aucun groupe de munition pour ce conteneur"
@ -884,7 +853,7 @@ msgid "This ammo is not in a container"
msgstr "Ce groupe de munition nest pas dans un conteneur"
#: lib/cannery_web/components/container_card.ex:58
#: lib/cannery_web/live/ammo_type_live/show.html.heex:105
#: lib/cannery_web/live/ammo_type_live/show.html.heex:95
#: lib/cannery_web/live/container_live/show.html.heex:27
#, elixir-autogen, elixir-format
msgid "Packs:"
@ -907,55 +876,36 @@ msgid "Leave \"Uses left\" blank to make invite unlimited"
msgstr ""
"Laissez \"Utilisations restantes\" vide pour rendre l'invitation illimitée"
#: lib/cannery_web/components/ammo_group_card.ex:71
#: lib/cannery_web/components/ammo_group_card.ex:86
#, elixir-autogen, elixir-format, fuzzy
msgid "Container:"
msgstr "Conteneur"
#: lib/cannery_web/live/ammo_group_live/index.html.heex:48
#: lib/cannery_web/live/ammo_type_live/index.html.heex:23
#: lib/cannery_web/live/ammo_type_live/show.html.heex:158
#: lib/cannery_web/live/ammo_type_live/show.html.heex:152
#: lib/cannery_web/live/container_live/show.html.heex:97
#, elixir-autogen, elixir-format
msgid "Show used"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.ex:110
#: lib/cannery_web/components/ammo_group_table_component.ex:61
#, elixir-autogen, elixir-format
msgid "Used up on"
msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:55
#: lib/cannery_web/components/ammo_group_card.ex:63
#, elixir-autogen, elixir-format
msgid "Used up on:"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.ex:206
#: lib/cannery_web/components/ammo_group_table_component.ex:195
#: lib/cannery_web/live/ammo_group_live/show.html.heex:19
#, elixir-autogen, elixir-format
msgid "%{percentage}%"
msgstr ""
#: lib/cannery_web/live/range_live/index.ex:121
#, elixir-autogen, elixir-format
msgid "Name: %{name}"
msgstr ""
#: lib/cannery_web/live/range_live/index.ex:115
#, elixir-autogen, elixir-format
msgid "Notes: %{notes}"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:62
#, elixir-autogen, elixir-format, fuzzy
msgid "Rounds fired"
msgstr "Cartouches utilisées"
#: lib/cannery_web/live/range_live/index.html.heex:64
#, elixir-autogen, elixir-format
msgid "Rounds fired chart"
msgstr ""
#: lib/cannery_web/live/range_live/index.ex:125
#: lib/cannery_web/live/range_live/index.ex:114
#, elixir-autogen, elixir-format, fuzzy
msgid "Rounds shot: %{count}"
msgstr "Cartouches tirées"
@ -972,7 +922,9 @@ msgstr "Packages:"
msgid "Rounds"
msgstr "Cartouches:"
#: lib/cannery_web/live/ammo_type_live/show.html.heex:158
#: lib/cannery_web/live/container_live/index.html.heex:23
#: lib/cannery_web/live/container_live/show.html.heex:103
#, elixir-autogen, elixir-format
msgid "View as table"
msgstr ""
@ -982,7 +934,7 @@ msgstr ""
msgid "Total ever packs"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:121
#: lib/cannery_web/live/ammo_type_live/show.html.heex:111
#, elixir-autogen, elixir-format
msgid "Total ever packs:"
msgstr ""
@ -992,7 +944,7 @@ msgstr ""
msgid "Total ever rounds"
msgstr "Quantité de cartouches"
#: lib/cannery_web/live/ammo_type_live/show.html.heex:97
#: lib/cannery_web/live/ammo_type_live/show.html.heex:83
#, elixir-autogen, elixir-format, fuzzy
msgid "Total ever rounds:"
msgstr "Nombre totale de cartouches tirées:"
@ -1002,7 +954,7 @@ msgstr "Nombre totale de cartouches tirées:"
msgid "Used packs"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:113
#: lib/cannery_web/live/ammo_type_live/show.html.heex:103
#, elixir-autogen, elixir-format
msgid "Used packs:"
msgstr ""
@ -1012,7 +964,7 @@ msgstr ""
msgid "Used rounds"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:89
#: lib/cannery_web/live/ammo_type_live/show.html.heex:75
#, elixir-autogen, elixir-format, fuzzy
msgid "Used rounds:"
msgstr ""
@ -1021,3 +973,140 @@ msgstr ""
#, elixir-autogen, elixir-format, fuzzy
msgid "Used up!"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:64
#, elixir-autogen, elixir-format, fuzzy
msgid "Rounds shot chart"
msgstr "Cartouches tirées"
#: lib/cannery_web/live/ammo_type_live/show.ex:27
#, elixir-autogen, elixir-format, fuzzy
msgid "Blank:"
msgstr "Vide"
#: lib/cannery_web/live/ammo_type_live/show.ex:13
#, elixir-autogen, elixir-format, fuzzy
msgid "Bullet core:"
msgstr "Noyau de balle"
#: lib/cannery_web/live/ammo_type_live/show.ex:12
#, elixir-autogen, elixir-format, fuzzy
msgid "Bullet type:"
msgstr "Type de balle"
#: lib/cannery_web/live/ammo_type_live/show.ex:15
#, elixir-autogen, elixir-format, fuzzy
msgid "Caliber:"
msgstr "Calibre"
#: lib/cannery_web/live/ammo_type_live/show.ex:14
#, elixir-autogen, elixir-format, fuzzy
msgid "Cartridge:"
msgstr "Cartouche"
#: lib/cannery_web/live/ammo_type_live/show.ex:16
#, elixir-autogen, elixir-format, fuzzy
msgid "Case material:"
msgstr "Matériau de la caisse"
#: lib/cannery_web/live/ammo_type_live/show.ex:28
#, elixir-autogen, elixir-format, fuzzy
msgid "Corrosive:"
msgstr "Corrosive"
#: lib/cannery_web/live/ammo_type_live/show.ex:24
#, elixir-autogen, elixir-format, fuzzy
msgid "Firing type:"
msgstr "Type dallumage"
#: lib/cannery_web/live/ammo_type_live/show.ex:21
#, elixir-autogen, elixir-format, fuzzy
msgid "Grains:"
msgstr "Graines"
#: lib/cannery_web/live/ammo_type_live/show.ex:26
#, elixir-autogen, elixir-format, fuzzy
msgid "Incendiary:"
msgstr "Incendiaire"
#: lib/cannery_web/live/ammo_type_live/show.ex:17
#, elixir-autogen, elixir-format, fuzzy
msgid "Jacket type:"
msgstr "Type de douille"
#: lib/cannery_web/live/ammo_type_live/show.ex:29
#, elixir-autogen, elixir-format, fuzzy
msgid "Manufacturer:"
msgstr "Fabricant"
#: lib/cannery_web/live/ammo_type_live/show.ex:18
#, elixir-autogen, elixir-format, fuzzy
msgid "Muzzle velocity:"
msgstr "Vélocité du canon"
#: lib/cannery_web/live/ammo_type_live/show.ex:20
#, elixir-autogen, elixir-format, fuzzy
msgid "Powder grains per charge:"
msgstr "Graines de poudre par charge"
#: lib/cannery_web/live/ammo_type_live/show.ex:19
#, elixir-autogen, elixir-format, fuzzy
msgid "Powder type:"
msgstr "Type de poudre"
#: lib/cannery_web/live/ammo_type_live/show.ex:22
#, elixir-autogen, elixir-format, fuzzy
msgid "Pressure:"
msgstr "Pression"
#: lib/cannery_web/live/ammo_type_live/show.ex:23
#, elixir-autogen, elixir-format, fuzzy
msgid "Primer type:"
msgstr "Type damorce"
#: lib/cannery_web/live/ammo_type_live/show.ex:25
#, elixir-autogen, elixir-format, fuzzy
msgid "Tracer:"
msgstr "Traceuse"
#: lib/cannery_web/live/ammo_type_live/show.ex:30
#, elixir-autogen, elixir-format, fuzzy
msgid "UPC:"
msgstr "UPC"
#: lib/cannery_web/live/ammo_type_live/index.ex:137
#: lib/cannery_web/live/ammo_type_live/show.html.heex:132
#, elixir-autogen, elixir-format
msgid "Average CPR"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:117
#, elixir-autogen, elixir-format, fuzzy
msgid "Edit %{ammo_type_name}"
msgstr "Éditer %{name}"
#: lib/cannery_web/components/ammo_group_card.ex:39
#: lib/cannery_web/components/ammo_group_table_component.ex:233
#, elixir-autogen, elixir-format
msgid "Empty"
msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:86
#, elixir-autogen, elixir-format
msgid "CPR"
msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:77
#, elixir-autogen, elixir-format
msgid "CPR:"
msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:84
#, elixir-autogen, elixir-format, fuzzy
msgid "Original Count"
msgstr "Nombre original:"
#: lib/cannery_web/components/ammo_group_card.ex:44
#, elixir-autogen, elixir-format, fuzzy
msgid "Original Count:"
msgstr "Nombre original:"

View File

@ -29,7 +29,7 @@ msgid "Container must be empty before deleting"
msgstr "Le conteneur doit être vide pour être supprimé"
#: lib/cannery_web/live/container_live/index.ex:88
#: lib/cannery_web/live/container_live/show.ex:71
#: lib/cannery_web/live/container_live/show.ex:75
#, elixir-autogen, elixir-format
msgid "Could not delete %{name}: %{error}"
msgstr "Impossible de supprimer %{name} : %{error}"
@ -186,7 +186,7 @@ msgstr "Impossible d'analyser le nombre de copies"
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}"
#: lib/cannery/ammo.ex:587
#: lib/cannery/ammo.ex:609
#, elixir-autogen, elixir-format
msgid "Invalid multiplier"
msgstr "Multiplicateur invalide"

View File

@ -32,7 +32,7 @@ msgid "%{name} created successfully"
msgstr "%{name} créé· avec succès"
#: lib/cannery_web/live/ammo_type_live/index.ex:47
#: lib/cannery_web/live/ammo_type_live/show.ex:28
#: lib/cannery_web/live/ammo_type_live/show.ex:56
#: lib/cannery_web/live/invite_live/index.ex:53
#: lib/cannery_web/live/invite_live/index.ex:133
#: lib/cannery_web/live/tag_live/index.ex:38
@ -51,7 +51,7 @@ msgid "%{name} enabled succesfully"
msgstr "%{name} activé·e avec succès"
#: lib/cannery_web/live/container_live/index.ex:81
#: lib/cannery_web/live/container_live/show.ex:61
#: lib/cannery_web/live/container_live/show.ex:65
#, elixir-autogen, elixir-format
msgid "%{name} has been deleted"
msgstr "%{name} a été supprimé·e"
@ -101,7 +101,7 @@ msgstr "Êtes-vous certain·e de supprimer %{name}?"
msgid "Are you sure you want to delete the invite for %{name}?"
msgstr "Êtes-vous certain·e de supprimer linvitation pour %{name}?"
#: lib/cannery_web/live/ammo_group_live/index.ex:242
#: lib/cannery_web/live/ammo_group_live/index.html.heex:132
#: lib/cannery_web/live/ammo_group_live/show.html.heex:75
#, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this ammo?"
@ -194,7 +194,7 @@ msgstr ""
msgid "%{name} added successfully"
msgstr "%{name} a été ajouté avec succès"
#: lib/cannery_web/live/container_live/show.ex:37
#: lib/cannery_web/live/container_live/show.ex:41
#, elixir-autogen, elixir-format
msgid "%{tag_name} has been removed from %{container_name}"
msgstr "%{tag_name} a été retiré de %{container_name}"
@ -215,7 +215,7 @@ msgid "Are you sure you want to unstage this ammo?"
msgstr "Êtes-vous certain·e de vouloir désélectionner cette munition?"
#: lib/cannery_web/live/ammo_group_live/show.ex:132
#: lib/cannery_web/live/range_live/index.ex:184
#: lib/cannery_web/live/range_live/index.ex:159
#, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this shot record?"
msgstr "Êtes-vous certain·e de vouloir supprimer cet enregistrement de tir?"

View File

@ -167,7 +167,7 @@ msgstr ""
msgid "Why not get some ready to shoot?"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.ex:199
#: lib/cannery_web/live/ammo_group_live/index.html.heex:80
#: lib/cannery_web/live/ammo_group_live/show.html.heex:101
#: lib/cannery_web/live/range_live/index.html.heex:38
#, elixir-autogen, elixir-format
@ -244,11 +244,6 @@ msgstr ""
msgid "Set Unlimited"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:97
#, elixir-autogen, elixir-format
msgid "Show used"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.html.heex:86
#: lib/cannery_web/live/range_live/index.html.heex:31
#, elixir-autogen, elixir-format

View File

@ -48,18 +48,12 @@ msgstr ""
msgid "Ammo"
msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:96
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:21
#: lib/cannery_web/live/ammo_group_live/index.ex:99
#, elixir-autogen, elixir-format
msgid "Ammo type"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.ex:137
#: lib/cannery_web/live/ammo_type_live/show.html.heex:138
#, elixir-autogen, elixir-format
msgid "Average Price paid"
msgstr ""
#: lib/cannery_web/live/tag_live/form_component.ex:79
#, elixir-autogen, elixir-format
msgid "Background color"
@ -67,7 +61,6 @@ msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:140
#: lib/cannery_web/live/ammo_type_live/index.ex:82
#: lib/cannery_web/live/ammo_type_live/show.html.heex:59
#, elixir-autogen, elixir-format
msgid "Blank"
msgstr ""
@ -79,42 +72,37 @@ msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:44
#: lib/cannery_web/live/ammo_type_live/index.ex:64
#: lib/cannery_web/live/ammo_type_live/show.html.heex:45
#, elixir-autogen, elixir-format
msgid "Bullet core"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:37
#: lib/cannery_web/live/ammo_type_live/index.ex:63
#: lib/cannery_web/live/ammo_type_live/show.html.heex:44
#, elixir-autogen, elixir-format
msgid "Bullet type"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:58
#: lib/cannery_web/live/ammo_type_live/index.ex:66
#: lib/cannery_web/live/ammo_type_live/show.html.heex:47
#, elixir-autogen, elixir-format
msgid "Caliber"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:51
#: lib/cannery_web/live/ammo_type_live/index.ex:65
#: lib/cannery_web/live/ammo_type_live/show.html.heex:46
#, elixir-autogen, elixir-format
msgid "Cartridge"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:65
#: lib/cannery_web/live/ammo_type_live/index.ex:67
#: lib/cannery_web/live/ammo_type_live/show.html.heex:48
#, elixir-autogen, elixir-format
msgid "Case material"
msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:72
#: lib/cannery_web/components/move_ammo_group_component.ex:67
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:48
#: lib/cannery_web/live/ammo_group_live/index.ex:104
#, elixir-autogen, elixir-format
msgid "Container"
msgstr ""
@ -129,18 +117,17 @@ msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:144
#: lib/cannery_web/live/ammo_type_live/index.ex:83
#: lib/cannery_web/live/ammo_type_live/show.html.heex:60
#, elixir-autogen, elixir-format
msgid "Corrosive"
msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:83
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:27
#: lib/cannery_web/live/ammo_group_live/index.ex:100
#, elixir-autogen, elixir-format
msgid "Count"
msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:37
#: lib/cannery_web/components/ammo_group_card.ex:38
#: lib/cannery_web/live/ammo_group_live/show.html.heex:8
#, elixir-autogen, elixir-format
msgid "Count:"
@ -170,7 +157,6 @@ msgid "Edit Ammo group"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.ex:23
#: lib/cannery_web/live/ammo_type_live/show.ex:63
#, elixir-autogen, elixir-format
msgid "Edit Ammo type"
msgstr ""
@ -197,14 +183,12 @@ msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:103
#: lib/cannery_web/live/ammo_type_live/index.ex:76
#: lib/cannery_web/live/ammo_type_live/show.html.heex:53
#, elixir-autogen, elixir-format
msgid "Grains"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:136
#: lib/cannery_web/live/ammo_type_live/index.ex:81
#: lib/cannery_web/live/ammo_type_live/show.html.heex:58
#, elixir-autogen, elixir-format
msgid "Incendiary"
msgstr ""
@ -256,7 +240,6 @@ msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:148
#: lib/cannery_web/live/ammo_type_live/index.ex:84
#: lib/cannery_web/live/ammo_type_live/show.html.heex:61
#, elixir-autogen, elixir-format
msgid "Manufacturer"
msgstr ""
@ -335,6 +318,7 @@ msgid "No tags"
msgstr ""
#: lib/cannery_web/components/add_shot_group_component.html.heex:37
#: lib/cannery_web/components/ammo_group_table_component.ex:88
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:41
#: lib/cannery_web/live/ammo_group_live/show.ex:88
#: lib/cannery_web/live/range_live/form_component.html.heex:29
@ -343,7 +327,7 @@ msgstr ""
msgid "Notes"
msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:43
#: lib/cannery_web/components/ammo_group_card.ex:51
#: lib/cannery_web/live/ammo_group_live/show.html.heex:24
#, elixir-autogen, elixir-format
msgid "Notes:"
@ -356,25 +340,23 @@ msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:111
#: lib/cannery_web/live/ammo_type_live/index.ex:77
#: lib/cannery_web/live/ammo_type_live/show.html.heex:54
#, elixir-autogen, elixir-format
msgid "Pressure"
msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:85
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:34
#: lib/cannery_web/live/ammo_group_live/index.ex:101
#, elixir-autogen, elixir-format
msgid "Price paid"
msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:62
#: lib/cannery_web/components/ammo_group_card.ex:70
#, elixir-autogen, elixir-format
msgid "Price paid:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:118
#: lib/cannery_web/live/ammo_type_live/index.ex:78
#: lib/cannery_web/live/ammo_type_live/show.html.heex:55
#, elixir-autogen, elixir-format
msgid "Primer type"
msgstr ""
@ -400,11 +382,6 @@ msgstr ""
msgid "Settings"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:62
#, elixir-autogen, elixir-format
msgid "Show Ammo type"
msgstr ""
#: lib/cannery_web/live/home_live.ex:83
#, elixir-autogen, elixir-format
msgid "Simple:"
@ -445,7 +422,6 @@ msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:132
#: lib/cannery_web/live/ammo_type_live/index.ex:80
#: lib/cannery_web/live/ammo_type_live/show.html.heex:57
#, elixir-autogen, elixir-format
msgid "Tracer"
msgstr ""
@ -493,8 +469,8 @@ msgstr ""
msgid "No tags for this container"
msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:79
#: lib/cannery_web/components/topbar.ex:81
#: lib/cannery_web/live/ammo_group_live/index.ex:103
#, elixir-autogen, elixir-format
msgid "Range"
msgstr ""
@ -561,6 +537,7 @@ msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:87
#: lib/cannery_web/live/range_live/index.ex:81
#: lib/cannery_web/live/range_live/index.html.heex:62
#, elixir-autogen, elixir-format
msgid "Rounds shot"
msgstr ""
@ -575,7 +552,7 @@ msgstr ""
msgid "Move Ammo group"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.ex:270
#: lib/cannery_web/live/ammo_group_live/index.html.heex:97
#, elixir-autogen, elixir-format
msgid "Move ammo"
msgstr ""
@ -590,12 +567,14 @@ msgstr ""
msgid "Shot log"
msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:63
#: lib/cannery_web/live/ammo_group_live/index.ex:154
#: lib/cannery_web/components/ammo_group_card.ex:71
#: lib/cannery_web/components/ammo_group_card.ex:78
#: lib/cannery_web/components/ammo_group_table_component.ex:159
#: lib/cannery_web/components/ammo_group_table_component.ex:227
#: lib/cannery_web/live/ammo_group_live/show.html.heex:37
#: lib/cannery_web/live/ammo_group_live/show.html.heex:44
#: lib/cannery_web/live/ammo_type_live/index.ex:179
#: lib/cannery_web/live/ammo_type_live/show.html.heex:142
#: lib/cannery_web/live/ammo_type_live/show.html.heex:136
#, elixir-autogen, elixir-format
msgid "$%{amount}"
msgstr ""
@ -607,35 +586,30 @@ msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:72
#: lib/cannery_web/live/ammo_type_live/index.ex:68
#: lib/cannery_web/live/ammo_type_live/show.html.heex:49
#, elixir-autogen, elixir-format
msgid "Jacket type"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:79
#: lib/cannery_web/live/ammo_type_live/index.ex:69
#: lib/cannery_web/live/ammo_type_live/show.html.heex:50
#, elixir-autogen, elixir-format
msgid "Muzzle velocity"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:93
#: lib/cannery_web/live/ammo_type_live/index.ex:72
#: lib/cannery_web/live/ammo_type_live/show.html.heex:52
#, elixir-autogen, elixir-format
msgid "Powder grains per charge"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:89
#: lib/cannery_web/live/ammo_type_live/index.ex:70
#: lib/cannery_web/live/ammo_type_live/show.html.heex:51
#, elixir-autogen, elixir-format
msgid "Powder type"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:152
#: lib/cannery_web/live/ammo_type_live/index.ex:85
#: lib/cannery_web/live/ammo_type_live/show.html.heex:62
#, elixir-autogen, elixir-format
msgid "UPC"
msgstr ""
@ -656,19 +630,18 @@ msgstr ""
msgid "New password"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.ex:192
#: lib/cannery_web/live/ammo_group_live/index.html.heex:73
#, elixir-autogen, elixir-format
msgid "Stage"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.ex:192
#: lib/cannery_web/live/ammo_group_live/index.html.heex:73
#, elixir-autogen, elixir-format
msgid "Unstage"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:125
#: lib/cannery_web/live/ammo_type_live/index.ex:79
#: lib/cannery_web/live/ammo_type_live/show.html.heex:56
#, elixir-autogen, elixir-format
msgid "Firing type"
msgstr ""
@ -684,36 +657,32 @@ msgid "Loading..."
msgstr ""
#: lib/cannery_web/live/container_live/index.ex:27
#: lib/cannery_web/live/container_live/show.ex:106
#: lib/cannery_web/live/container_live/show.ex:124
#, elixir-autogen, elixir-format
msgid "Edit %{name}"
msgstr ""
#: lib/cannery_web/live/container_live/index.ex:65
#: lib/cannery_web/live/container_live/show.ex:107
#: lib/cannery_web/live/container_live/show.ex:125
#, elixir-autogen, elixir-format
msgid "Edit %{name} tags"
msgstr ""
#: lib/cannery_web/components/container_card.ex:63
#: lib/cannery_web/live/ammo_type_live/show.html.heex:81
#: lib/cannery_web/live/ammo_type_live/show.html.heex:67
#: lib/cannery_web/live/container_live/show.html.heex:32
#, elixir-autogen, elixir-format
msgid "Rounds:"
msgstr ""
#: lib/cannery_web/live/container_live/show.ex:105
#, elixir-autogen, elixir-format
msgid "Show %{name}"
msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:224
#: lib/cannery_web/live/ammo_type_live/index.ex:178
#: lib/cannery_web/live/ammo_type_live/show.html.heex:148
#: lib/cannery_web/live/ammo_type_live/show.html.heex:142
#, elixir-autogen, elixir-format
msgid "No cost information"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.ex:102
#: lib/cannery_web/components/ammo_group_table_component.ex:87
#, elixir-autogen, elixir-format
msgid "% left"
msgstr ""
@ -784,14 +753,14 @@ msgstr ""
msgid "Ammo types"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.ex:105
#: lib/cannery_web/components/ammo_group_table_component.ex:66
#, elixir-autogen, elixir-format
msgid "Added on"
msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:49
#: lib/cannery_web/components/ammo_group_card.ex:57
#: lib/cannery_web/live/ammo_group_live/show.html.heex:30
#: lib/cannery_web/live/ammo_type_live/show.html.heex:129
#: lib/cannery_web/live/ammo_type_live/show.html.heex:123
#, elixir-autogen, elixir-format
msgid "Added on:"
msgstr ""
@ -860,7 +829,7 @@ msgstr ""
msgid "Move Ammo"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:105
#: lib/cannery_web/live/container_live/show.html.heex:111
#, elixir-autogen, elixir-format
msgid "No ammo in this container"
msgstr ""
@ -876,7 +845,7 @@ msgid "This ammo is not in a container"
msgstr ""
#: lib/cannery_web/components/container_card.ex:58
#: lib/cannery_web/live/ammo_type_live/show.html.heex:105
#: lib/cannery_web/live/ammo_type_live/show.html.heex:95
#: lib/cannery_web/live/container_live/show.html.heex:27
#, elixir-autogen, elixir-format
msgid "Packs:"
@ -898,55 +867,36 @@ msgstr ""
msgid "Leave \"Uses left\" blank to make invite unlimited"
msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:71
#: lib/cannery_web/components/ammo_group_card.ex:86
#, elixir-autogen, elixir-format
msgid "Container:"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:48
#: lib/cannery_web/live/ammo_type_live/index.html.heex:23
#: lib/cannery_web/live/ammo_type_live/show.html.heex:158
#: lib/cannery_web/live/ammo_type_live/show.html.heex:152
#: lib/cannery_web/live/container_live/show.html.heex:97
#, elixir-autogen, elixir-format
msgid "Show used"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.ex:110
#: lib/cannery_web/components/ammo_group_table_component.ex:61
#, elixir-autogen, elixir-format
msgid "Used up on"
msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:55
#: lib/cannery_web/components/ammo_group_card.ex:63
#, elixir-autogen, elixir-format
msgid "Used up on:"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.ex:206
#: lib/cannery_web/components/ammo_group_table_component.ex:195
#: lib/cannery_web/live/ammo_group_live/show.html.heex:19
#, elixir-autogen, elixir-format
msgid "%{percentage}%"
msgstr ""
#: lib/cannery_web/live/range_live/index.ex:121
#, elixir-autogen, elixir-format
msgid "Name: %{name}"
msgstr ""
#: lib/cannery_web/live/range_live/index.ex:115
#, elixir-autogen, elixir-format
msgid "Notes: %{notes}"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:62
#, elixir-autogen, elixir-format, fuzzy
msgid "Rounds fired"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:64
#, elixir-autogen, elixir-format
msgid "Rounds fired chart"
msgstr ""
#: lib/cannery_web/live/range_live/index.ex:125
#: lib/cannery_web/live/range_live/index.ex:114
#, elixir-autogen, elixir-format, fuzzy
msgid "Rounds shot: %{count}"
msgstr ""
@ -963,7 +913,9 @@ msgstr ""
msgid "Rounds"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:158
#: lib/cannery_web/live/container_live/index.html.heex:23
#: lib/cannery_web/live/container_live/show.html.heex:103
#, elixir-autogen, elixir-format
msgid "View as table"
msgstr ""
@ -973,7 +925,7 @@ msgstr ""
msgid "Total ever packs"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:121
#: lib/cannery_web/live/ammo_type_live/show.html.heex:111
#, elixir-autogen, elixir-format
msgid "Total ever packs:"
msgstr ""
@ -983,7 +935,7 @@ msgstr ""
msgid "Total ever rounds"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:97
#: lib/cannery_web/live/ammo_type_live/show.html.heex:83
#, elixir-autogen, elixir-format, fuzzy
msgid "Total ever rounds:"
msgstr ""
@ -993,7 +945,7 @@ msgstr ""
msgid "Used packs"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:113
#: lib/cannery_web/live/ammo_type_live/show.html.heex:103
#, elixir-autogen, elixir-format
msgid "Used packs:"
msgstr ""
@ -1003,7 +955,7 @@ msgstr ""
msgid "Used rounds"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:89
#: lib/cannery_web/live/ammo_type_live/show.html.heex:75
#, elixir-autogen, elixir-format, fuzzy
msgid "Used rounds:"
msgstr ""
@ -1012,3 +964,140 @@ msgstr ""
#, elixir-autogen, elixir-format, fuzzy
msgid "Used up!"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:64
#, elixir-autogen, elixir-format, fuzzy
msgid "Rounds shot chart"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:27
#, elixir-autogen, elixir-format, fuzzy
msgid "Blank:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:13
#, elixir-autogen, elixir-format, fuzzy
msgid "Bullet core:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:12
#, elixir-autogen, elixir-format, fuzzy
msgid "Bullet type:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:15
#, elixir-autogen, elixir-format, fuzzy
msgid "Caliber:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:14
#, elixir-autogen, elixir-format, fuzzy
msgid "Cartridge:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:16
#, elixir-autogen, elixir-format, fuzzy
msgid "Case material:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:28
#, elixir-autogen, elixir-format, fuzzy
msgid "Corrosive:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:24
#, elixir-autogen, elixir-format, fuzzy
msgid "Firing type:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:21
#, elixir-autogen, elixir-format, fuzzy
msgid "Grains:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:26
#, elixir-autogen, elixir-format, fuzzy
msgid "Incendiary:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:17
#, elixir-autogen, elixir-format, fuzzy
msgid "Jacket type:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:29
#, elixir-autogen, elixir-format, fuzzy
msgid "Manufacturer:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:18
#, elixir-autogen, elixir-format, fuzzy
msgid "Muzzle velocity:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:20
#, elixir-autogen, elixir-format, fuzzy
msgid "Powder grains per charge:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:19
#, elixir-autogen, elixir-format, fuzzy
msgid "Powder type:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:22
#, elixir-autogen, elixir-format, fuzzy
msgid "Pressure:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:23
#, elixir-autogen, elixir-format, fuzzy
msgid "Primer type:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:25
#, elixir-autogen, elixir-format, fuzzy
msgid "Tracer:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:30
#, elixir-autogen, elixir-format, fuzzy
msgid "UPC:"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.ex:137
#: lib/cannery_web/live/ammo_type_live/show.html.heex:132
#, elixir-autogen, elixir-format
msgid "Average CPR"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.ex:117
#, elixir-autogen, elixir-format, fuzzy
msgid "Edit %{ammo_type_name}"
msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:39
#: lib/cannery_web/components/ammo_group_table_component.ex:233
#, elixir-autogen, elixir-format
msgid "Empty"
msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:86
#, elixir-autogen, elixir-format
msgid "CPR"
msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:77
#, elixir-autogen, elixir-format
msgid "CPR:"
msgstr ""
#: lib/cannery_web/components/ammo_group_table_component.ex:84
#, elixir-autogen, elixir-format, fuzzy
msgid "Original Count"
msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:44
#, elixir-autogen, elixir-format, fuzzy
msgid "Original Count:"
msgstr ""

View File

@ -30,7 +30,7 @@ msgid "Container must be empty before deleting"
msgstr "Caithfidh an coimeádán a bheidh follamh roimh scriosadh"
#: lib/cannery_web/live/container_live/index.ex:88
#: lib/cannery_web/live/container_live/show.ex:71
#: lib/cannery_web/live/container_live/show.ex:75
#, elixir-autogen, elixir-format
msgid "Could not delete %{name}: %{error}"
msgstr "Ní feidir %{name} a scriosadh: %{error}"
@ -185,7 +185,7 @@ msgstr ""
msgid "Invalid number of copies, must be between 1 and %{max}. Was %{multiplier}"
msgstr ""
#: lib/cannery/ammo.ex:587
#: lib/cannery/ammo.ex:609
#, elixir-autogen, elixir-format
msgid "Invalid multiplier"
msgstr ""

View File

@ -30,7 +30,7 @@ msgid "%{name} created successfully"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.ex:47
#: lib/cannery_web/live/ammo_type_live/show.ex:28
#: lib/cannery_web/live/ammo_type_live/show.ex:56
#: lib/cannery_web/live/invite_live/index.ex:53
#: lib/cannery_web/live/invite_live/index.ex:133
#: lib/cannery_web/live/tag_live/index.ex:38
@ -49,7 +49,7 @@ msgid "%{name} enabled succesfully"
msgstr ""
#: lib/cannery_web/live/container_live/index.ex:81
#: lib/cannery_web/live/container_live/show.ex:61
#: lib/cannery_web/live/container_live/show.ex:65
#, elixir-autogen, elixir-format
msgid "%{name} has been deleted"
msgstr ""
@ -96,7 +96,7 @@ msgstr ""
msgid "Are you sure you want to delete the invite for %{name}?"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.ex:242
#: lib/cannery_web/live/ammo_group_live/index.html.heex:132
#: lib/cannery_web/live/ammo_group_live/show.html.heex:75
#, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this ammo?"
@ -183,7 +183,7 @@ msgstr ""
msgid "%{name} added successfully"
msgstr ""
#: lib/cannery_web/live/container_live/show.ex:37
#: lib/cannery_web/live/container_live/show.ex:41
#, elixir-autogen, elixir-format
msgid "%{tag_name} has been removed from %{container_name}"
msgstr ""
@ -204,7 +204,7 @@ msgid "Are you sure you want to unstage this ammo?"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:132
#: lib/cannery_web/live/range_live/index.ex:184
#: lib/cannery_web/live/range_live/index.ex:159
#, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this shot record?"
msgstr ""

View File

@ -19,7 +19,7 @@ msgid "%{name} created successfully"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.ex:47
#: lib/cannery_web/live/ammo_type_live/show.ex:28
#: lib/cannery_web/live/ammo_type_live/show.ex:56
#: lib/cannery_web/live/invite_live/index.ex:53
#: lib/cannery_web/live/invite_live/index.ex:133
#: lib/cannery_web/live/tag_live/index.ex:38
@ -38,7 +38,7 @@ msgid "%{name} enabled succesfully"
msgstr ""
#: lib/cannery_web/live/container_live/index.ex:81
#: lib/cannery_web/live/container_live/show.ex:61
#: lib/cannery_web/live/container_live/show.ex:65
#, elixir-autogen, elixir-format
msgid "%{name} has been deleted"
msgstr ""
@ -85,7 +85,7 @@ msgstr ""
msgid "Are you sure you want to delete the invite for %{name}?"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.ex:242
#: lib/cannery_web/live/ammo_group_live/index.html.heex:132
#: lib/cannery_web/live/ammo_group_live/show.html.heex:75
#, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this ammo?"
@ -172,7 +172,7 @@ msgstr ""
msgid "%{name} added successfully"
msgstr ""
#: lib/cannery_web/live/container_live/show.ex:37
#: lib/cannery_web/live/container_live/show.ex:41
#, elixir-autogen, elixir-format
msgid "%{tag_name} has been removed from %{container_name}"
msgstr ""
@ -193,7 +193,7 @@ msgid "Are you sure you want to unstage this ammo?"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:132
#: lib/cannery_web/live/range_live/index.ex:184
#: lib/cannery_web/live/range_live/index.ex:159
#, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this shot record?"
msgstr ""

View File

@ -232,7 +232,10 @@ defmodule Cannery.AmmoTest do
current_user = user_fixture()
ammo_type = ammo_type_fixture(current_user)
container = container_fixture(current_user)
{1, [ammo_group]} = ammo_group_fixture(%{"count" => 25}, ammo_type, container, current_user)
{1, [ammo_group]} =
%{"count" => 50, "price_paid" => 36.1}
|> ammo_group_fixture(ammo_type, container, current_user)
[
ammo_type: ammo_type,
@ -424,13 +427,13 @@ defmodule Cannery.AmmoTest do
|> Ammo.get_last_used_shot_group()
end
test "get_percentage_remaining/1 gets accurate total round count for ammo type",
test "get_percentage_remaining/1 gets accurate total round count",
%{ammo_group: ammo_group, current_user: current_user} do
assert 100 = Ammo.get_percentage_remaining(ammo_group)
shot_group_fixture(%{"count" => 14}, current_user, ammo_group)
assert 44 =
assert 72 =
ammo_group
|> Repo.reload!()
|> Repo.preload(:shot_groups, force: true)
@ -438,11 +441,66 @@ defmodule Cannery.AmmoTest do
shot_group_fixture(%{"count" => 11}, current_user, ammo_group)
assert 50 =
ammo_group
|> Repo.reload!()
|> Repo.preload(:shot_groups, force: true)
|> Ammo.get_percentage_remaining()
shot_group_fixture(%{"count" => 25}, current_user, ammo_group)
assert 0 =
ammo_group
|> Repo.reload!()
|> Repo.preload(:shot_groups, force: true)
|> Ammo.get_percentage_remaining()
end
test "get_cpr/1 gets accurate cpr",
%{ammo_group: ammo_group, current_user: current_user} do
assert %AmmoGroup{price_paid: nil} |> Ammo.get_cpr() |> is_nil()
assert %AmmoGroup{count: 1, price_paid: nil} |> Ammo.get_cpr() |> is_nil()
assert 1.0 = %AmmoGroup{count: 1, price_paid: 1.0} |> Ammo.get_cpr()
assert 1.5 = %AmmoGroup{count: 2, price_paid: 3.0} |> Ammo.get_cpr()
assert 0.722 = %AmmoGroup{count: 50, price_paid: 36.1} |> Ammo.get_cpr()
# with shot group, maintains total
shot_group_fixture(%{"count" => 14}, current_user, ammo_group)
assert 0.722 =
ammo_group
|> Repo.reload!()
|> Repo.preload(:shot_groups, force: true)
|> Ammo.get_cpr()
end
test "get_original_count/1 gets accurate original count",
%{ammo_group: ammo_group, current_user: current_user} do
assert 50 = Ammo.get_original_count(ammo_group)
shot_group_fixture(%{"count" => 14}, current_user, ammo_group)
assert 50 =
ammo_group
|> Repo.reload!()
|> Repo.preload(:shot_groups, force: true)
|> Ammo.get_original_count()
shot_group_fixture(%{"count" => 11}, current_user, ammo_group)
assert 50 =
ammo_group
|> Repo.reload!()
|> Repo.preload(:shot_groups, force: true)
|> Ammo.get_original_count()
shot_group_fixture(%{"count" => 25}, current_user, ammo_group)
assert 50 =
ammo_group
|> Repo.reload!()
|> Repo.preload(:shot_groups, force: true)
|> Ammo.get_original_count()
end
end
end

View File

@ -58,6 +58,8 @@ defmodule CanneryWeb.ExportControllerTest do
"price_paid" => ammo_group.price_paid,
"staged" => ammo_group.staged,
"used_count" => ammo_group |> Ammo.get_used_count(),
"original_count" => ammo_group |> Ammo.get_original_count(),
"cpr" => ammo_group |> Ammo.get_cpr(),
"percentage_remaining" => ammo_group |> Ammo.get_percentage_remaining()
}

View File

@ -184,9 +184,9 @@ defmodule CanneryWeb.AmmoTypeLiveTest do
describe "Index with ammo group" do
setup [:register_and_log_in_user, :create_ammo_type, :create_ammo_group]
test "shows additional ammo type info on toggle",
test "shows used ammo groups on toggle",
%{conn: conn, ammo_group: ammo_group, current_user: current_user} do
{:ok, show_live, html} = live(conn, Routes.ammo_type_index_path(conn, :index))
{:ok, index_live, html} = live(conn, Routes.ammo_type_index_path(conn, :index))
assert html =~ dgettext("actions", "Show used")
refute html =~ gettext("Used rounds")
@ -194,7 +194,7 @@ defmodule CanneryWeb.AmmoTypeLiveTest do
refute html =~ gettext("Used packs")
refute html =~ gettext("Total ever packs")
html = show_live |> element("[data-qa=\"toggle_show_used\"]") |> render_click()
html = index_live |> element("[data-qa=\"toggle_show_used\"]") |> render_click()
assert html =~ gettext("Used rounds")
assert html =~ gettext("Total ever rounds")
@ -207,8 +207,8 @@ defmodule CanneryWeb.AmmoTypeLiveTest do
shot_group_fixture(%{"count" => 5}, current_user, ammo_group)
{:ok, show_live, _html} = live(conn, Routes.ammo_type_index_path(conn, :index))
html = show_live |> element("[data-qa=\"toggle_show_used\"]") |> render_click()
{:ok, index_live, _html} = live(conn, Routes.ammo_type_index_path(conn, :index))
html = index_live |> element("[data-qa=\"toggle_show_used\"]") |> render_click()
assert html =~ "15"
assert html =~ "5"
@ -218,19 +218,22 @@ defmodule CanneryWeb.AmmoTypeLiveTest do
describe "Show ammo type" do
setup [:register_and_log_in_user, :create_ammo_type]
test "displays ammo_type", %{conn: conn, ammo_type: ammo_type} do
test "displays ammo_type", %{
conn: conn,
ammo_type: %{name: name, bullet_type: bullet_type} = ammo_type
} do
{:ok, _show_live, html} = live(conn, Routes.ammo_type_show_path(conn, :show, ammo_type))
assert html =~ gettext("Show Ammo type")
assert html =~ ammo_type.bullet_type
assert html =~ name
assert html =~ bullet_type
end
test "updates ammo_type within modal",
%{conn: conn, current_user: current_user, ammo_type: ammo_type} do
%{conn: conn, current_user: current_user, ammo_type: %{name: name} = ammo_type} do
{:ok, show_live, _html} = live(conn, Routes.ammo_type_show_path(conn, :show, ammo_type))
assert show_live |> element("[data-qa=\"edit\"]") |> render_click() =~
gettext("Edit Ammo type")
gettext("Edit %{ammo_type_name}", ammo_type_name: name)
assert_patch(show_live, Routes.ammo_type_show_path(conn, :edit, ammo_type))
@ -253,20 +256,35 @@ defmodule CanneryWeb.AmmoTypeLiveTest do
describe "Show ammo type with ammo group" do
setup [:register_and_log_in_user, :create_ammo_type, :create_ammo_group]
test "displays ammo group", %{conn: conn, ammo_type: ammo_type, container: container} do
test "displays ammo group", %{
conn: conn,
ammo_type: %{name: ammo_type_name} = ammo_type,
container: %{name: container_name}
} do
{:ok, _show_live, html} = live(conn, Routes.ammo_type_show_path(conn, :show, ammo_type))
assert html =~ gettext("Show Ammo type")
assert html =~ ammo_type_name
assert html =~ "some ammo group"
assert html =~ container.name
assert html =~ container_name
end
test "displays ammo group in table",
%{conn: conn, ammo_type: ammo_type, container: %{name: container_name}} do
{:ok, show_live, _html} = live(conn, Routes.ammo_type_show_path(conn, :show, ammo_type))
html = show_live |> element("[data-qa=\"toggle_table\"]") |> render_click()
assert_patch(show_live, Routes.ammo_type_show_path(conn, :table, ammo_type))
assert html =~ "some ammo group"
assert html =~ container_name
end
end
describe "Show ammo type with empty ammo group" do
setup [:register_and_log_in_user, :create_ammo_type, :create_empty_ammo_group]
test "hides empty ammo groups by default",
%{conn: conn, ammo_type: ammo_type} do
test "displays empty ammo groups on toggle",
%{conn: conn, ammo_type: ammo_type, container: %{name: container_name}} do
{:ok, show_live, html} = live(conn, Routes.ammo_type_show_path(conn, :show, ammo_type))
assert html =~ dgettext("actions", "Show used")
@ -276,6 +294,24 @@ defmodule CanneryWeb.AmmoTypeLiveTest do
assert html =~ "some ammo group"
assert html =~ "Empty"
assert html =~ container_name
end
test "displays empty ammo groups in table on toggle",
%{conn: conn, ammo_type: ammo_type, container: %{name: container_name}} do
{:ok, show_live, _html} = live(conn, Routes.ammo_type_show_path(conn, :show, ammo_type))
html = show_live |> element("[data-qa=\"toggle_table\"]") |> render_click()
assert_patch(show_live, Routes.ammo_type_show_path(conn, :table, ammo_type))
assert html =~ dgettext("actions", "Show used")
refute html =~ "some ammo group"
html = show_live |> element("[data-qa=\"toggle_show_used\"]") |> render_click()
assert html =~ "some ammo group"
assert html =~ "Empty"
assert html =~ container_name
end
end
end

View File

@ -46,13 +46,20 @@ defmodule CanneryWeb.ContainerLiveTest do
%{container: container}
end
defp create_ammo_group(%{container: container, current_user: current_user}) do
ammo_type = ammo_type_fixture(@ammo_type_attrs, current_user)
{1, [ammo_group]} = ammo_group_fixture(@ammo_group_attrs, ammo_type, container, current_user)
%{ammo_type: ammo_type, ammo_group: ammo_group}
end
defp create_empty_ammo_group(%{container: container, current_user: current_user}) do
ammo_type = ammo_type_fixture(@ammo_type_attrs, current_user)
{1, [ammo_group]} = ammo_group_fixture(@ammo_group_attrs, ammo_type, container, current_user)
shot_group = shot_group_fixture(@shot_group_attrs, current_user, ammo_group)
ammo_group = ammo_group |> Repo.reload!()
%{ammo_group: ammo_group, shot_group: shot_group}
%{ammo_type: ammo_type, ammo_group: ammo_group, shot_group: shot_group}
end
describe "Index regular" do
@ -306,11 +313,14 @@ defmodule CanneryWeb.ContainerLiveTest do
describe "Show" do
setup [:register_and_log_in_user, :create_container]
test "displays container", %{conn: conn, container: container} do
test "displays container", %{
conn: conn,
container: %{name: name, location: location} = container
} do
{:ok, _show_live, html} = live(conn, Routes.container_show_path(conn, :show, container))
assert html =~ gettext("Show %{name}", name: container.name)
assert html =~ container.location
assert html =~ name
assert html =~ location
end
test "updates container within modal", %{
@ -341,11 +351,34 @@ defmodule CanneryWeb.ContainerLiveTest do
end
end
describe "Show with ammo group" do
setup [:register_and_log_in_user, :create_container, :create_ammo_group]
test "displays ammo group",
%{conn: conn, ammo_type: %{name: ammo_type_name}, container: container} do
{:ok, _show_live, html} = live(conn, Routes.container_show_path(conn, :show, container))
assert html =~ ammo_type_name
assert html =~ "some ammo group"
end
test "displays ammo group in table",
%{conn: conn, ammo_type: %{name: ammo_type_name}, container: container} do
{:ok, show_live, _html} = live(conn, Routes.container_show_path(conn, :show, container))
html = show_live |> element("[data-qa=\"toggle_table\"]") |> render_click()
assert_patch(show_live, Routes.container_show_path(conn, :table, container))
assert html =~ ammo_type_name
assert html =~ "some ammo group"
end
end
describe "Show with empty ammo group" do
setup [:register_and_log_in_user, :create_container, :create_empty_ammo_group]
test "hides empty ammo groups by default",
%{conn: conn, container: container} do
%{conn: conn, ammo_type: %{name: ammo_type_name}, container: container} do
{:ok, show_live, html} = live(conn, Routes.container_show_path(conn, :show, container))
assert html =~ dgettext("actions", "Show used")
@ -353,6 +386,24 @@ defmodule CanneryWeb.ContainerLiveTest do
html = show_live |> element("[data-qa=\"toggle_show_used\"]") |> render_click()
assert html =~ ammo_type_name
assert html =~ "some ammo group"
assert html =~ "Empty"
end
test "displays empty ammo groups in table on toggle",
%{conn: conn, ammo_type: %{name: ammo_type_name}, container: container} do
{:ok, show_live, _html} = live(conn, Routes.container_show_path(conn, :show, container))
html = show_live |> element("[data-qa=\"toggle_table\"]") |> render_click()
assert_patch(show_live, Routes.container_show_path(conn, :table, container))
assert html =~ dgettext("actions", "Show used")
refute html =~ "some ammo group"
html = show_live |> element("[data-qa=\"toggle_show_used\"]") |> render_click()
assert html =~ ammo_type_name
assert html =~ "some ammo group"
assert html =~ "Empty"
end