prompt to create first ammo type before trying to create first ammo
continuous-integration/drone/push Build is passing Details

This commit is contained in:
shibao 2022-07-04 21:41:07 -04:00
parent 5836a82ff7
commit f246b9db93
26 changed files with 233 additions and 146 deletions

View File

@ -5,6 +5,7 @@
- Add pack and round count to container information
- Add cute logo >:3 Thank you [kalli](https://twitter.com/t0kkuro)!
- Add note about deleting an ammo type deleting all ammo of that type as well
- Prompt to create first ammo type before trying to create first ammo
# v0.5.3
- Update French translation: Thank you [duponin](https://udongein.xyz/users/duponin)!

View File

@ -25,6 +25,25 @@ defmodule Cannery.Ammo do
def list_ammo_types(%User{id: user_id}),
do: Repo.all(from at in AmmoType, where: at.user_id == ^user_id, order_by: at.name)
@doc """
Returns a count of ammo_types.
## Examples
iex> get_ammo_types_count!(%User{id: 123})
3
"""
@spec get_ammo_types_count!(User.t()) :: integer()
def get_ammo_types_count!(%User{id: user_id}) do
Repo.one(
from at in AmmoType,
where: at.user_id == ^user_id,
select: count(at.id),
distinct: true
)
end
@doc """
Gets a single ammo_type.

View File

@ -30,6 +30,25 @@ defmodule Cannery.Containers do
)
end
@doc """
Returns a count of containers.
## Examples
iex> get_containers_count!(%User{id: 123})
3
"""
@spec get_containers_count!(User.t()) :: integer()
def get_containers_count!(%User{id: user_id}) do
Repo.one(
from c in Container,
where: c.user_id == ^user_id,
select: count(c.id),
distinct: true
)
end
@doc """
Gets a single container.

View File

@ -22,7 +22,8 @@ defmodule CanneryWeb.AmmoGroupLive.FormComponent do
@spec update(Socket.t()) :: {:ok, Socket.t()}
def update(%{assigns: %{current_user: current_user}} = socket) do
%{assigns: %{ammo_types: ammo_types, containers: containers}} = socket =
%{assigns: %{ammo_types: ammo_types, containers: containers}} =
socket =
socket
|> assign(:ammo_group_create_limit, @ammo_group_create_limit)
|> assign(:ammo_types, Ammo.list_ammo_types(current_user))

View File

@ -74,7 +74,8 @@ defmodule CanneryWeb.AmmoGroupLive.Index do
defp display_ammo_groups(%{assigns: %{current_user: current_user}} = socket) do
ammo_groups = Ammo.list_ammo_groups(current_user) |> Repo.preload([:ammo_type, :container])
containers = Containers.list_containers(current_user)
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"},
@ -92,7 +93,13 @@ defmodule CanneryWeb.AmmoGroupLive.Index do
|> Enum.map(fn ammo_group -> ammo_group |> get_row_data_for_ammo_group(columns) end)
socket
|> assign(ammo_groups: ammo_groups, containers: containers, columns: columns, rows: rows)
|> assign(
ammo_groups: ammo_groups,
ammo_types_count: ammo_types_count,
containers_count: containers_count,
columns: columns,
rows: rows
)
end
@spec get_row_data_for_ammo_group(AmmoGroup.t(), [map()]) :: [map()]

View File

@ -8,8 +8,10 @@
<%= gettext("No Ammo") %>
<%= display_emoji("😔") %>
</h2>
<% end %>
<%= if @containers |> Enum.empty?() do %>
<%= cond do %>
<% @containers_count == 0 -> %>
<div class="flex justify-center items-center">
<h2 class="m-2 title text-md text-primary-600">
<%= dgettext("prompts", "You'll need to") %>
@ -20,31 +22,30 @@
class: "btn btn-primary"
) %>
</div>
<% else %>
<% @ammo_types_count == 0 -> %>
<div class="flex justify-center items-center">
<h2 class="m-2 title text-md text-primary-600">
<%= dgettext("prompts", "You'll need to") %>
</h2>
<%= live_patch(dgettext("actions", "add an ammo type first"),
to: Routes.ammo_type_index_path(Endpoint, :new),
class: "btn btn-primary"
) %>
</div>
<% @ammo_groups |> Enum.empty?() -> %>
<%= live_patch(dgettext("actions", "Add your first box!"),
to: Routes.ammo_group_index_path(Endpoint, :new),
class: "btn btn-primary"
) %>
<% end %>
<% else %>
<%= if @containers |> Enum.empty?() do %>
<div class="flex justify-center items-center">
<h2 class="m-2 title text-md text-primary-600">
<%= dgettext("prompts", "You'll need to") %>
</h2>
<%= live_patch(dgettext("actions", "add a container first"),
to: Routes.container_index_path(Endpoint, :new),
class: "btn btn-primary"
) %>
</div>
<% else %>
<% true -> %>
<%= live_patch(dgettext("actions", "Add Ammo"),
to: Routes.ammo_group_index_path(Endpoint, :new),
class: "btn btn-primary"
) %>
<% end %>
<% end %>
<%= unless @ammo_groups |> Enum.empty?() do %>
<.live_component
module={CanneryWeb.Components.TableComponent}
id="ammo_groups_index_table"
@ -66,7 +67,6 @@
ammo_group={@ammo_group}
return_to={Routes.ammo_group_index_path(Endpoint, :index)}
current_user={@current_user}
containers={@containers}
/>
</.modal>
<% @live_action == :add_shot_group -> %>

View File

@ -17,7 +17,7 @@ msgid "Add Ammo"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.html.heex:24
#: lib/cannery_web/live/ammo_group_live/index.html.heex:37
msgid "Add your first box!"
msgstr ""
@ -156,7 +156,7 @@ msgid "Why not get some ready to shoot?"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:144
#: lib/cannery_web/live/ammo_group_live/index.ex:151
#: lib/cannery_web/live/ammo_group_live/show.html.heex:91
#: lib/cannery_web/live/range_live/index.html.heex:36
msgid "Record shots"
@ -183,8 +183,7 @@ msgid "Copy to clipboard"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.html.heex:18
#: lib/cannery_web/live/ammo_group_live/index.html.heex:36
#: lib/cannery_web/live/ammo_group_live/index.html.heex:20
msgid "add a container first"
msgstr ""
@ -207,3 +206,8 @@ msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.html.heex:55
msgid "View in Catalog"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.html.heex:31
msgid "add an ammo type first"
msgstr ""

View File

@ -30,7 +30,7 @@ msgid "Add Ammo"
msgstr "Munition hinzufügen"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.html.heex:24
#: lib/cannery_web/live/ammo_group_live/index.html.heex:37
msgid "Add your first box!"
msgstr "Fügen Sie ihre erste Box hinzu!"
@ -169,7 +169,7 @@ msgid "Why not get some ready to shoot?"
msgstr "Warum nicht einige für den Schießstand auswählen?"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:144
#: lib/cannery_web/live/ammo_group_live/index.ex:151
#: lib/cannery_web/live/ammo_group_live/show.html.heex:91
#: lib/cannery_web/live/range_live/index.html.heex:36
msgid "Record shots"
@ -196,8 +196,7 @@ msgid "Copy to clipboard"
msgstr "In die Zwischenablage kopieren"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.html.heex:18
#: lib/cannery_web/live/ammo_group_live/index.html.heex:36
#: lib/cannery_web/live/ammo_group_live/index.html.heex:20
msgid "add a container first"
msgstr "Zuerst einen Behälter hinzufügen"
@ -220,3 +219,8 @@ msgstr "Sprache wechseln"
#: lib/cannery_web/live/ammo_group_live/show.html.heex:55
msgid "View in Catalog"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.html.heex:31
msgid "add an ammo type first"
msgstr ""

View File

@ -54,7 +54,7 @@ msgstr "Munition"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:21
#: lib/cannery_web/live/ammo_group_live/index.ex:80
#: lib/cannery_web/live/ammo_group_live/index.ex:81
msgid "Ammo type"
msgstr "Munitionsarten"
@ -119,7 +119,7 @@ msgstr "Gehäusematerial"
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/move_ammo_group_component.ex:67
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:48
#: lib/cannery_web/live/ammo_group_live/index.ex:85
#: lib/cannery_web/live/ammo_group_live/index.ex:86
msgid "Container"
msgstr "Behälter"
@ -139,7 +139,7 @@ msgstr "Korrosiv"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:27
#: lib/cannery_web/live/ammo_group_live/index.ex:81
#: lib/cannery_web/live/ammo_group_live/index.ex:82
msgid "Count"
msgstr "Anzahl"
@ -371,7 +371,7 @@ msgstr "Druck"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:34
#: lib/cannery_web/live/ammo_group_live/index.ex:82
#: lib/cannery_web/live/ammo_group_live/index.ex:83
msgid "Price paid"
msgstr "Kaufpreis"
@ -508,7 +508,7 @@ msgstr "Keine Tags für diesen Behälter"
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/topbar.ex:68
#: lib/cannery_web/live/ammo_group_live/index.ex:84
#: lib/cannery_web/live/ammo_group_live/index.ex:85
msgid "Range"
msgstr "Schießplatz"
@ -616,7 +616,7 @@ msgstr "Schießkladde"
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/ammo_group_card.ex:48
#: lib/cannery_web/live/ammo_group_live/index.ex:118
#: lib/cannery_web/live/ammo_group_live/index.ex:125
#: lib/cannery_web/live/ammo_group_live/show.html.heex:37
#: lib/cannery_web/live/ammo_group_live/show.html.heex:44
#: lib/cannery_web/live/ammo_type_live/index.ex:114
@ -681,12 +681,12 @@ msgid "New password"
msgstr "Neues Passwort"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:141
#: lib/cannery_web/live/ammo_group_live/index.ex:148
msgid "Stage"
msgstr "Markiert"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:141
#: lib/cannery_web/live/ammo_group_live/index.ex:148
msgid "Unstage"
msgstr "Demarkiert"
@ -737,7 +737,7 @@ msgid "No cost information"
msgstr "Keine Preisinformationen"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:83
#: lib/cannery_web/live/ammo_group_live/index.ex:84
msgid "% left"
msgstr "% verbleibend"
@ -823,7 +823,7 @@ msgid "Ammo types"
msgstr "Munitionsart"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:86
#: lib/cannery_web/live/ammo_group_live/index.ex:87
msgid "Added on"
msgstr "Hinzugefügt am"

View File

@ -24,7 +24,7 @@ msgstr ""
## date. Leave "msgstr"s empty as changing them here has no
## effect: edit them in PO (.po) files instead.
#, elixir-autogen, elixir-format
#: lib/cannery/containers.ex:121
#: lib/cannery/containers.ex:140
msgid "Container must be empty before deleting"
msgstr "Behälter muss vor dem Löschen leer sein"
@ -176,19 +176,19 @@ msgid "Tag could not be removed"
msgstr "Tag konnte nicht gelöscht werden"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/form_component.ex:146
#: lib/cannery_web/live/ammo_group_live/form_component.ex:156
msgid "Could not parse number of copies"
msgstr "Konnte die Anzahl der Kopien nicht verstehen"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/form_component.ex:131
#: lib/cannery_web/live/ammo_group_live/form_component.ex:141
msgid "Invalid number of copies, must be between 1 and %{max}. Was %{multiplier}"
msgstr ""
"Ungültige Nummer an Kopien. Muss zwischen 1 and %{max} liegen. War "
"%{multiplier}"
#, elixir-autogen, elixir-format
#: lib/cannery/ammo.ex:388
#: lib/cannery/ammo.ex:407
msgid "Invalid multiplier"
msgstr ""

View File

@ -88,7 +88,6 @@ msgstr ""
"zurückgenommen werden!"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/show.html.heex:27
#: lib/cannery_web/live/container_live/index.html.heex:46
#: lib/cannery_web/live/container_live/show.html.heex:49
#: lib/cannery_web/live/tag_live/index.html.heex:38
@ -101,9 +100,8 @@ msgid "Are you sure you want to delete the invite for %{name}?"
msgstr "Sind Sie sicher, dass sie die Einladung für %{name} löschen möchten?"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:177
#: lib/cannery_web/live/ammo_group_live/index.ex:184
#: lib/cannery_web/live/ammo_group_live/show.html.heex:71
#: lib/cannery_web/live/ammo_type_live/index.ex:140
msgid "Are you sure you want to delete this ammo?"
msgstr "Sind Sie sicher, dass sie diese Munition löschen möchten?"
@ -252,8 +250,8 @@ msgid "%{name} removed successfully"
msgstr "%{name} erfolgreich entfernt"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.html.heex:15
#: lib/cannery_web/live/ammo_group_live/index.html.heex:33
#: lib/cannery_web/live/ammo_group_live/index.html.heex:17
#: lib/cannery_web/live/ammo_group_live/index.html.heex:28
msgid "You'll need to"
msgstr "Sie müssen"
@ -283,13 +281,19 @@ msgid "Ammo unstaged succesfully"
msgstr "Munition erfolgreich demarkiert"
#, elixir-autogen, elixir-format, fuzzy
#: lib/cannery_web/live/ammo_group_live/form_component.ex:108
#: lib/cannery_web/live/ammo_group_live/form_component.ex:118
msgid "Ammo updated successfully"
msgstr "Munitionsgruppe erfolgreich aktualisiert"
#, elixir-autogen, elixir-format, fuzzy
#: lib/cannery_web/live/ammo_group_live/form_component.ex:167
#: lib/cannery_web/live/ammo_group_live/form_component.ex:177
msgid "Ammo added successfully"
msgid_plural "Ammo added successfully"
msgstr[0] "Munitionsgruppe erfolgreich aktualisiert"
msgstr[1] "Munitionsgruppe erfolgreich aktualisiert"
#, elixir-autogen, elixir-format, fuzzy
#: lib/cannery_web/live/ammo_type_live/index.ex:140
#: lib/cannery_web/live/ammo_type_live/show.html.heex:27
msgid "Are you sure you want to delete %{name}? This will delete all %{name} type ammo as well!"
msgstr "Sind Sie sicher, dass sie %{name} löschen möchten?"

View File

@ -39,7 +39,7 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:21
#: lib/cannery_web/live/ammo_group_live/index.ex:80
#: lib/cannery_web/live/ammo_group_live/index.ex:81
msgid "Ammo type"
msgstr ""
@ -104,7 +104,7 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/move_ammo_group_component.ex:67
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:48
#: lib/cannery_web/live/ammo_group_live/index.ex:85
#: lib/cannery_web/live/ammo_group_live/index.ex:86
msgid "Container"
msgstr ""
@ -124,7 +124,7 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:27
#: lib/cannery_web/live/ammo_group_live/index.ex:81
#: lib/cannery_web/live/ammo_group_live/index.ex:82
msgid "Count"
msgstr ""
@ -356,7 +356,7 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:34
#: lib/cannery_web/live/ammo_group_live/index.ex:82
#: lib/cannery_web/live/ammo_group_live/index.ex:83
msgid "Price paid"
msgstr ""
@ -491,7 +491,7 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/topbar.ex:68
#: lib/cannery_web/live/ammo_group_live/index.ex:84
#: lib/cannery_web/live/ammo_group_live/index.ex:85
msgid "Range"
msgstr ""
@ -599,7 +599,7 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/ammo_group_card.ex:48
#: lib/cannery_web/live/ammo_group_live/index.ex:118
#: lib/cannery_web/live/ammo_group_live/index.ex:125
#: lib/cannery_web/live/ammo_group_live/show.html.heex:37
#: lib/cannery_web/live/ammo_group_live/show.html.heex:44
#: lib/cannery_web/live/ammo_type_live/index.ex:114
@ -664,12 +664,12 @@ msgid "New password"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:141
#: lib/cannery_web/live/ammo_group_live/index.ex:148
msgid "Stage"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:141
#: lib/cannery_web/live/ammo_group_live/index.ex:148
msgid "Unstage"
msgstr ""
@ -720,7 +720,7 @@ msgid "No cost information"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:83
#: lib/cannery_web/live/ammo_group_live/index.ex:84
msgid "% left"
msgstr ""
@ -806,7 +806,7 @@ msgid "Ammo types"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:86
#: lib/cannery_web/live/ammo_group_live/index.ex:87
msgid "Added on"
msgstr ""

View File

@ -18,7 +18,7 @@ msgid "Add Ammo"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.html.heex:24
#: lib/cannery_web/live/ammo_group_live/index.html.heex:37
msgid "Add your first box!"
msgstr ""
@ -157,7 +157,7 @@ msgid "Why not get some ready to shoot?"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:144
#: lib/cannery_web/live/ammo_group_live/index.ex:151
#: lib/cannery_web/live/ammo_group_live/show.html.heex:91
#: lib/cannery_web/live/range_live/index.html.heex:36
msgid "Record shots"
@ -184,8 +184,7 @@ msgid "Copy to clipboard"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.html.heex:18
#: lib/cannery_web/live/ammo_group_live/index.html.heex:36
#: lib/cannery_web/live/ammo_group_live/index.html.heex:20
msgid "add a container first"
msgstr ""
@ -208,3 +207,8 @@ msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.html.heex:55
msgid "View in Catalog"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.html.heex:31
msgid "add an ammo type first"
msgstr ""

View File

@ -40,7 +40,7 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:21
#: lib/cannery_web/live/ammo_group_live/index.ex:80
#: lib/cannery_web/live/ammo_group_live/index.ex:81
msgid "Ammo type"
msgstr ""
@ -105,7 +105,7 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/move_ammo_group_component.ex:67
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:48
#: lib/cannery_web/live/ammo_group_live/index.ex:85
#: lib/cannery_web/live/ammo_group_live/index.ex:86
msgid "Container"
msgstr ""
@ -125,7 +125,7 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:27
#: lib/cannery_web/live/ammo_group_live/index.ex:81
#: lib/cannery_web/live/ammo_group_live/index.ex:82
msgid "Count"
msgstr ""
@ -357,7 +357,7 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:34
#: lib/cannery_web/live/ammo_group_live/index.ex:82
#: lib/cannery_web/live/ammo_group_live/index.ex:83
msgid "Price paid"
msgstr ""
@ -492,7 +492,7 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/topbar.ex:68
#: lib/cannery_web/live/ammo_group_live/index.ex:84
#: lib/cannery_web/live/ammo_group_live/index.ex:85
msgid "Range"
msgstr ""
@ -600,7 +600,7 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/ammo_group_card.ex:48
#: lib/cannery_web/live/ammo_group_live/index.ex:118
#: lib/cannery_web/live/ammo_group_live/index.ex:125
#: lib/cannery_web/live/ammo_group_live/show.html.heex:37
#: lib/cannery_web/live/ammo_group_live/show.html.heex:44
#: lib/cannery_web/live/ammo_type_live/index.ex:114
@ -665,12 +665,12 @@ msgid "New password"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:141
#: lib/cannery_web/live/ammo_group_live/index.ex:148
msgid "Stage"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:141
#: lib/cannery_web/live/ammo_group_live/index.ex:148
msgid "Unstage"
msgstr ""
@ -721,7 +721,7 @@ msgid "No cost information"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:83
#: lib/cannery_web/live/ammo_group_live/index.ex:84
msgid "% left"
msgstr ""
@ -807,7 +807,7 @@ msgid "Ammo types"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:86
#: lib/cannery_web/live/ammo_group_live/index.ex:87
msgid "Added on"
msgstr ""

View File

@ -11,7 +11,7 @@ msgstr ""
"Language: en\n"
#, elixir-autogen, elixir-format
#: lib/cannery/containers.ex:121
#: lib/cannery/containers.ex:140
msgid "Container must be empty before deleting"
msgstr ""
@ -161,17 +161,17 @@ msgid "Tag could not be removed"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/form_component.ex:146
#: lib/cannery_web/live/ammo_group_live/form_component.ex:156
msgid "Could not parse number of copies"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/form_component.ex:131
#: lib/cannery_web/live/ammo_group_live/form_component.ex:141
msgid "Invalid number of copies, must be between 1 and %{max}. Was %{multiplier}"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery/ammo.ex:388
#: lib/cannery/ammo.ex:407
msgid "Invalid multiplier"
msgstr ""

View File

@ -74,7 +74,6 @@ msgid "Are you sure you want to delete %{email}? This action is permanent!"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/show.html.heex:27
#: lib/cannery_web/live/container_live/index.html.heex:46
#: lib/cannery_web/live/container_live/show.html.heex:49
#: lib/cannery_web/live/tag_live/index.html.heex:38
@ -87,9 +86,8 @@ msgid "Are you sure you want to delete the invite for %{name}?"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:177
#: lib/cannery_web/live/ammo_group_live/index.ex:184
#: lib/cannery_web/live/ammo_group_live/show.html.heex:71
#: lib/cannery_web/live/ammo_type_live/index.ex:140
msgid "Are you sure you want to delete this ammo?"
msgstr ""
@ -232,8 +230,8 @@ msgid "%{name} removed successfully"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.html.heex:15
#: lib/cannery_web/live/ammo_group_live/index.html.heex:33
#: lib/cannery_web/live/ammo_group_live/index.html.heex:17
#: lib/cannery_web/live/ammo_group_live/index.html.heex:28
msgid "You'll need to"
msgstr ""
@ -263,13 +261,19 @@ msgid "Ammo unstaged succesfully"
msgstr ""
#, elixir-autogen, elixir-format, fuzzy
#: lib/cannery_web/live/ammo_group_live/form_component.ex:108
#: lib/cannery_web/live/ammo_group_live/form_component.ex:118
msgid "Ammo updated successfully"
msgstr ""
#, elixir-autogen, elixir-format, fuzzy
#: lib/cannery_web/live/ammo_group_live/form_component.ex:167
#: lib/cannery_web/live/ammo_group_live/form_component.ex:177
msgid "Ammo added successfully"
msgid_plural "Ammo added successfully"
msgstr[0] ""
msgstr[1] ""
#, elixir-autogen, elixir-format, fuzzy
#: lib/cannery_web/live/ammo_type_live/index.ex:140
#: lib/cannery_web/live/ammo_type_live/show.html.heex:27
msgid "Are you sure you want to delete %{name}? This will delete all %{name} type ammo as well!"
msgstr ""

View File

@ -11,7 +11,7 @@ msgid ""
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery/containers.ex:121
#: lib/cannery/containers.ex:140
msgid "Container must be empty before deleting"
msgstr ""
@ -160,17 +160,17 @@ msgid "Tag could not be removed"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/form_component.ex:146
#: lib/cannery_web/live/ammo_group_live/form_component.ex:156
msgid "Could not parse number of copies"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/form_component.ex:131
#: lib/cannery_web/live/ammo_group_live/form_component.ex:141
msgid "Invalid number of copies, must be between 1 and %{max}. Was %{multiplier}"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery/ammo.ex:388
#: lib/cannery/ammo.ex:407
msgid "Invalid multiplier"
msgstr ""

View File

@ -28,7 +28,7 @@ msgid "Add Ammo"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.html.heex:24
#: lib/cannery_web/live/ammo_group_live/index.html.heex:37
msgid "Add your first box!"
msgstr ""
@ -167,7 +167,7 @@ msgid "Why not get some ready to shoot?"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:144
#: lib/cannery_web/live/ammo_group_live/index.ex:151
#: lib/cannery_web/live/ammo_group_live/show.html.heex:91
#: lib/cannery_web/live/range_live/index.html.heex:36
msgid "Record shots"
@ -194,8 +194,7 @@ msgid "Copy to clipboard"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.html.heex:18
#: lib/cannery_web/live/ammo_group_live/index.html.heex:36
#: lib/cannery_web/live/ammo_group_live/index.html.heex:20
msgid "add a container first"
msgstr ""
@ -218,3 +217,8 @@ msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.html.heex:55
msgid "View in Catalog"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.html.heex:31
msgid "add an ammo type first"
msgstr ""

View File

@ -50,7 +50,7 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:21
#: lib/cannery_web/live/ammo_group_live/index.ex:80
#: lib/cannery_web/live/ammo_group_live/index.ex:81
msgid "Ammo type"
msgstr ""
@ -115,7 +115,7 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/move_ammo_group_component.ex:67
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:48
#: lib/cannery_web/live/ammo_group_live/index.ex:85
#: lib/cannery_web/live/ammo_group_live/index.ex:86
msgid "Container"
msgstr ""
@ -135,7 +135,7 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:27
#: lib/cannery_web/live/ammo_group_live/index.ex:81
#: lib/cannery_web/live/ammo_group_live/index.ex:82
msgid "Count"
msgstr ""
@ -367,7 +367,7 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:34
#: lib/cannery_web/live/ammo_group_live/index.ex:82
#: lib/cannery_web/live/ammo_group_live/index.ex:83
msgid "Price paid"
msgstr ""
@ -502,7 +502,7 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/topbar.ex:68
#: lib/cannery_web/live/ammo_group_live/index.ex:84
#: lib/cannery_web/live/ammo_group_live/index.ex:85
msgid "Range"
msgstr ""
@ -610,7 +610,7 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/ammo_group_card.ex:48
#: lib/cannery_web/live/ammo_group_live/index.ex:118
#: lib/cannery_web/live/ammo_group_live/index.ex:125
#: lib/cannery_web/live/ammo_group_live/show.html.heex:37
#: lib/cannery_web/live/ammo_group_live/show.html.heex:44
#: lib/cannery_web/live/ammo_type_live/index.ex:114
@ -675,12 +675,12 @@ msgid "New password"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:141
#: lib/cannery_web/live/ammo_group_live/index.ex:148
msgid "Stage"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:141
#: lib/cannery_web/live/ammo_group_live/index.ex:148
msgid "Unstage"
msgstr ""
@ -731,7 +731,7 @@ msgid "No cost information"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:83
#: lib/cannery_web/live/ammo_group_live/index.ex:84
msgid "% left"
msgstr ""
@ -817,7 +817,7 @@ msgid "Ammo types"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:86
#: lib/cannery_web/live/ammo_group_live/index.ex:87
msgid "Added on"
msgstr ""

View File

@ -22,7 +22,7 @@ msgstr ""
## date. Leave "msgstr"s empty as changing them here has no
## effect: edit them in PO (.po) files instead.
#, elixir-autogen, elixir-format
#: lib/cannery/containers.ex:121
#: lib/cannery/containers.ex:140
msgid "Container must be empty before deleting"
msgstr ""
@ -171,17 +171,17 @@ msgid "Tag could not be removed"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/form_component.ex:146
#: lib/cannery_web/live/ammo_group_live/form_component.ex:156
msgid "Could not parse number of copies"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/form_component.ex:131
#: lib/cannery_web/live/ammo_group_live/form_component.ex:141
msgid "Invalid number of copies, must be between 1 and %{max}. Was %{multiplier}"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery/ammo.ex:388
#: lib/cannery/ammo.ex:407
msgid "Invalid multiplier"
msgstr ""

View File

@ -84,7 +84,6 @@ msgid "Are you sure you want to delete %{email}? This action is permanent!"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/show.html.heex:27
#: lib/cannery_web/live/container_live/index.html.heex:46
#: lib/cannery_web/live/container_live/show.html.heex:49
#: lib/cannery_web/live/tag_live/index.html.heex:38
@ -97,9 +96,8 @@ msgid "Are you sure you want to delete the invite for %{name}?"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:177
#: lib/cannery_web/live/ammo_group_live/index.ex:184
#: lib/cannery_web/live/ammo_group_live/show.html.heex:71
#: lib/cannery_web/live/ammo_type_live/index.ex:140
msgid "Are you sure you want to delete this ammo?"
msgstr ""
@ -242,8 +240,8 @@ msgid "%{name} removed successfully"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.html.heex:15
#: lib/cannery_web/live/ammo_group_live/index.html.heex:33
#: lib/cannery_web/live/ammo_group_live/index.html.heex:17
#: lib/cannery_web/live/ammo_group_live/index.html.heex:28
msgid "You'll need to"
msgstr ""
@ -273,13 +271,19 @@ msgid "Ammo unstaged succesfully"
msgstr ""
#, elixir-autogen, elixir-format, fuzzy
#: lib/cannery_web/live/ammo_group_live/form_component.ex:108
#: lib/cannery_web/live/ammo_group_live/form_component.ex:118
msgid "Ammo updated successfully"
msgstr ""
#, elixir-autogen, elixir-format, fuzzy
#: lib/cannery_web/live/ammo_group_live/form_component.ex:167
#: lib/cannery_web/live/ammo_group_live/form_component.ex:177
msgid "Ammo added successfully"
msgid_plural "Ammo added successfully"
msgstr[0] ""
msgstr[1] ""
#, elixir-autogen, elixir-format, fuzzy
#: lib/cannery_web/live/ammo_type_live/index.ex:140
#: lib/cannery_web/live/ammo_type_live/show.html.heex:27
msgid "Are you sure you want to delete %{name}? This will delete all %{name} type ammo as well!"
msgstr ""

View File

@ -30,7 +30,7 @@ msgid "Add Ammo"
msgstr "ajouter munition"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.html.heex:24
#: lib/cannery_web/live/ammo_group_live/index.html.heex:37
msgid "Add your first box!"
msgstr "Ajoutez votre première caisse !"
@ -169,7 +169,7 @@ msgid "Why not get some ready to shoot?"
msgstr "Pourquoi pas en préparer pour tirer?"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:144
#: lib/cannery_web/live/ammo_group_live/index.ex:151
#: lib/cannery_web/live/ammo_group_live/show.html.heex:91
#: lib/cannery_web/live/range_live/index.html.heex:36
msgid "Record shots"
@ -196,8 +196,7 @@ msgid "Copy to clipboard"
msgstr "Copier dans le presse-papier"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.html.heex:18
#: lib/cannery_web/live/ammo_group_live/index.html.heex:36
#: lib/cannery_web/live/ammo_group_live/index.html.heex:20
msgid "add a container first"
msgstr "ajouter un conteneur en premier"
@ -220,3 +219,8 @@ msgstr "Changer la langue"
#: lib/cannery_web/live/ammo_group_live/show.html.heex:55
msgid "View in Catalog"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.html.heex:31
msgid "add an ammo type first"
msgstr ""

View File

@ -54,7 +54,7 @@ msgstr "Munition"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:21
#: lib/cannery_web/live/ammo_group_live/index.ex:80
#: lib/cannery_web/live/ammo_group_live/index.ex:81
msgid "Ammo type"
msgstr "Type de munition"
@ -119,7 +119,7 @@ msgstr "Matériau de la caisse"
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/move_ammo_group_component.ex:67
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:48
#: lib/cannery_web/live/ammo_group_live/index.ex:85
#: lib/cannery_web/live/ammo_group_live/index.ex:86
msgid "Container"
msgstr "Conteneur"
@ -139,7 +139,7 @@ msgstr "Corrosive"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:27
#: lib/cannery_web/live/ammo_group_live/index.ex:81
#: lib/cannery_web/live/ammo_group_live/index.ex:82
msgid "Count"
msgstr "Quantité"
@ -371,7 +371,7 @@ msgstr "Pression"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:34
#: lib/cannery_web/live/ammo_group_live/index.ex:82
#: lib/cannery_web/live/ammo_group_live/index.ex:83
msgid "Price paid"
msgstr "Prix payé"
@ -510,7 +510,7 @@ msgstr "Aucun tag pour ce conteneur"
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/topbar.ex:68
#: lib/cannery_web/live/ammo_group_live/index.ex:84
#: lib/cannery_web/live/ammo_group_live/index.ex:85
msgid "Range"
msgstr "Portée"
@ -618,7 +618,7 @@ msgstr "Évènements de tir"
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/ammo_group_card.ex:48
#: lib/cannery_web/live/ammo_group_live/index.ex:118
#: lib/cannery_web/live/ammo_group_live/index.ex:125
#: lib/cannery_web/live/ammo_group_live/show.html.heex:37
#: lib/cannery_web/live/ammo_group_live/show.html.heex:44
#: lib/cannery_web/live/ammo_type_live/index.ex:114
@ -683,12 +683,12 @@ msgid "New password"
msgstr "Nouveau mot de passe"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:141
#: lib/cannery_web/live/ammo_group_live/index.ex:148
msgid "Stage"
msgstr "Sélectionné"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:141
#: lib/cannery_web/live/ammo_group_live/index.ex:148
msgid "Unstage"
msgstr "Désélectionner"
@ -739,7 +739,7 @@ msgid "No cost information"
msgstr "Aucune information de prix"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:83
#: lib/cannery_web/live/ammo_group_live/index.ex:84
msgid "% left"
msgstr "%restante"
@ -825,7 +825,7 @@ msgid "Ammo types"
msgstr "Types de munition"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:86
#: lib/cannery_web/live/ammo_group_live/index.ex:87
msgid "Added on"
msgstr "Ajouté le"

View File

@ -24,7 +24,7 @@ msgstr ""
## date. Leave "msgstr"s empty as changing them here has no
## effect: edit them in PO (.po) files instead.
#, elixir-autogen, elixir-format
#: lib/cannery/containers.ex:121
#: lib/cannery/containers.ex:140
msgid "Container must be empty before deleting"
msgstr "Le conteneur doit être vide pour être supprimé"
@ -177,17 +177,17 @@ msgid "Tag could not be removed"
msgstr "Le tag na pas pu être retiré"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/form_component.ex:146
#: lib/cannery_web/live/ammo_group_live/form_component.ex:156
msgid "Could not parse number of copies"
msgstr "Impossible d'analyser le nombre de copies"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/form_component.ex:131
#: lib/cannery_web/live/ammo_group_live/form_component.ex:141
msgid "Invalid number of copies, must be between 1 and %{max}. Was %{multiplier}"
msgstr "Nombre de copies invalide, doit être 1 et %{max}. Été %{multiplier}"
#, elixir-autogen, elixir-format
#: lib/cannery/ammo.ex:388
#: lib/cannery/ammo.ex:407
msgid "Invalid multiplier"
msgstr ""

View File

@ -89,7 +89,6 @@ msgstr ""
"Êtes-vous certain·e de supprimer %{email}? Cette action est définitive!"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/show.html.heex:27
#: lib/cannery_web/live/container_live/index.html.heex:46
#: lib/cannery_web/live/container_live/show.html.heex:49
#: lib/cannery_web/live/tag_live/index.html.heex:38
@ -102,9 +101,8 @@ msgid "Are you sure you want to delete the invite for %{name}?"
msgstr "Êtes-vous certain·e de supprimer linvitation pour %{name}?"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:177
#: lib/cannery_web/live/ammo_group_live/index.ex:184
#: lib/cannery_web/live/ammo_group_live/show.html.heex:71
#: lib/cannery_web/live/ammo_type_live/index.ex:140
msgid "Are you sure you want to delete this ammo?"
msgstr "Êtes-vous certain·e de supprimer cette munition?"
@ -253,8 +251,8 @@ msgid "%{name} removed successfully"
msgstr "%{name} retiré avec succès"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.html.heex:15
#: lib/cannery_web/live/ammo_group_live/index.html.heex:33
#: lib/cannery_web/live/ammo_group_live/index.html.heex:17
#: lib/cannery_web/live/ammo_group_live/index.html.heex:28
msgid "You'll need to"
msgstr "Vous aurez besoin de"
@ -284,13 +282,19 @@ msgid "Ammo unstaged succesfully"
msgstr "Groupe de munition désélectionner avec succès"
#, elixir-autogen, elixir-format, fuzzy
#: lib/cannery_web/live/ammo_group_live/form_component.ex:108
#: lib/cannery_web/live/ammo_group_live/form_component.ex:118
msgid "Ammo updated successfully"
msgstr "Groupe de munition mis à jour avec succès"
#, elixir-autogen, elixir-format, fuzzy
#: lib/cannery_web/live/ammo_group_live/form_component.ex:167
#: lib/cannery_web/live/ammo_group_live/form_component.ex:177
msgid "Ammo added successfully"
msgid_plural "Ammo added successfully"
msgstr[0] "Groupe de munition mis à jour avec succès"
msgstr[1] "Groupe de munition mis à jour avec succès"
#, elixir-autogen, elixir-format, fuzzy
#: lib/cannery_web/live/ammo_type_live/index.ex:140
#: lib/cannery_web/live/ammo_type_live/show.html.heex:27
msgid "Are you sure you want to delete %{name}? This will delete all %{name} type ammo as well!"
msgstr "Êtes-vous certain·e de supprimer %{name}?"

View File

@ -73,7 +73,6 @@ msgid "Are you sure you want to delete %{email}? This action is permanent!"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/show.html.heex:27
#: lib/cannery_web/live/container_live/index.html.heex:46
#: lib/cannery_web/live/container_live/show.html.heex:49
#: lib/cannery_web/live/tag_live/index.html.heex:38
@ -86,9 +85,8 @@ msgid "Are you sure you want to delete the invite for %{name}?"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:177
#: lib/cannery_web/live/ammo_group_live/index.ex:184
#: lib/cannery_web/live/ammo_group_live/show.html.heex:71
#: lib/cannery_web/live/ammo_type_live/index.ex:140
msgid "Are you sure you want to delete this ammo?"
msgstr ""
@ -231,8 +229,8 @@ msgid "%{name} removed successfully"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.html.heex:15
#: lib/cannery_web/live/ammo_group_live/index.html.heex:33
#: lib/cannery_web/live/ammo_group_live/index.html.heex:17
#: lib/cannery_web/live/ammo_group_live/index.html.heex:28
msgid "You'll need to"
msgstr ""
@ -262,13 +260,19 @@ msgid "Ammo unstaged succesfully"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/form_component.ex:108
#: lib/cannery_web/live/ammo_group_live/form_component.ex:118
msgid "Ammo updated successfully"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/form_component.ex:167
#: lib/cannery_web/live/ammo_group_live/form_component.ex:177
msgid "Ammo added successfully"
msgid_plural "Ammo added successfully"
msgstr[0] ""
msgstr[1] ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/index.ex:140
#: lib/cannery_web/live/ammo_type_live/show.html.heex:27
msgid "Are you sure you want to delete %{name}? This will delete all %{name} type ammo as well!"
msgstr ""