Compare commits

..

10 Commits

Author SHA1 Message Date
db4b3fab24 add attrs to ammo group card
All checks were successful
continuous-integration/drone/push Build is passing
2022-11-09 21:29:50 -05:00
d86f5a6d98 add attrs to container card 2022-11-09 21:29:45 -05:00
9420337228 add attrs to invite card 2022-11-09 21:29:30 -05:00
e2a4dc4b92 add attrs to tag card 2022-11-09 21:15:28 -05:00
175eef95fb add attrs to user card 2022-11-09 21:13:24 -05:00
ba8d7988b3 add graph to range page 2022-11-09 21:04:57 -05:00
1f017ced4a add inital_key and initial_sort_mode to table component 2022-11-09 21:03:46 -05:00
67304ae22e fix some gettexts 2022-11-09 18:47:13 -05:00
30da5bc4f7 update node 2022-11-09 18:12:59 -05:00
580d703f12 add test for container name in ammo type 2022-11-08 22:33:51 -05:00
49 changed files with 821 additions and 322 deletions

View File

@ -1,3 +1,3 @@
elixir 1.14.1-otp-25 elixir 1.14.1-otp-25
erlang 25.1.2 erlang 25.1.2
nodejs 16.13.2 nodejs 18.12.1

View File

@ -1,4 +1,4 @@
# v0.5.5 # v0.6.0
- Update translations - Update translations
- Display used-up date on used-up ammo - Display used-up date on used-up ammo
- Make ammo index page a bit more compact - Make ammo index page a bit more compact
@ -10,7 +10,8 @@
- Make container show page a bit more compact - Make container show page a bit more compact
- Make container show page filter used-up ammo - Make container show page filter used-up ammo
- Forgot to add the logo as the favicon whoops - Forgot to add the logo as the favicon whoops
- Update project dependencies, use Elixir v1.14.1 - Add graph to range page
- Update project dependencies
# v0.5.4 # v0.5.4
- Rename "Ammo" tab to "Catalog", and "Manage" tab is now "Ammo" - Rename "Ammo" tab to "Catalog", and "Manage" tab is now "Ammo"

View File

@ -26,6 +26,7 @@ import { Socket } from 'phoenix'
import { LiveSocket } from 'phoenix_live_view' import { LiveSocket } from 'phoenix_live_view'
import topbar from '../vendor/topbar' import topbar from '../vendor/topbar'
import MaintainAttrs from './maintain_attrs' import MaintainAttrs from './maintain_attrs'
import ShotLogChart from './shot_log_chart'
import Alpine from 'alpinejs' import Alpine from 'alpinejs'
const csrfToken = document.querySelector("meta[name='csrf-token']").getAttribute('content') const csrfToken = document.querySelector("meta[name='csrf-token']").getAttribute('content')
@ -36,7 +37,7 @@ const liveSocket = new LiveSocket('/live', Socket, {
} }
}, },
params: { _csrf_token: csrfToken }, params: { _csrf_token: csrfToken },
hooks: { MaintainAttrs } hooks: { MaintainAttrs, ShotLogChart }
}) })
// alpine.js // alpine.js

View File

@ -0,0 +1,83 @@
import { Chart, Title, Tooltip, Legend, LineController, LineElement, PointElement, TimeScale, LinearScale } from 'chart.js'
import 'chartjs-adapter-date-fns'
Chart.register(Title, Tooltip, Legend, LineController, LineElement, PointElement, TimeScale, LinearScale)
export default {
initalizeChart (el) {
const data = JSON.parse(el.dataset.chartData)
this.el.chart = new Chart(el, {
type: 'line',
data: {
datasets: [{
label: el.dataset.label,
data: data.map(({ date, count, labels }) => ({
labels,
x: date,
y: count
})),
backgroundColor: el.dataset.color,
borderColor: el.dataset.color,
fill: true,
borderWidth: 4
}]
},
options: {
elements: {
point: {
radius: 7,
hoverRadius: 10
}
},
plugins: {
legend: {
position: 'bottom',
labels: {
padding: 20
}
},
tooltip: {
displayColors: false,
callbacks: {
label: ({ raw: { labels } }) => labels
}
}
},
scales: {
y: {
beginAtZero: true,
stacked: true,
grace: '15%',
ticks: {
padding: 15
}
},
x: {
type: 'time',
time: {
unit: 'day'
}
}
},
transitions: {
show: {
animations: {
x: {
from: 0
}
}
},
hide: {
animations: {
x: {
to: 0
}
}
}
}
}
})
},
mounted () { this.initalizeChart(this.el) },
updated () { this.initalizeChart(this.el) }
}

View File

@ -8,6 +8,9 @@
"dependencies": { "dependencies": {
"@fortawesome/fontawesome-free": "^6.1.1", "@fortawesome/fontawesome-free": "^6.1.1",
"alpinejs": "^3.10.2", "alpinejs": "^3.10.2",
"chart.js": "^3.9.1",
"chartjs-adapter-date-fns": "^2.0.0",
"date-fns": "^2.29.3",
"phoenix": "file:../deps/phoenix", "phoenix": "file:../deps/phoenix",
"phoenix_html": "file:../deps/phoenix_html", "phoenix_html": "file:../deps/phoenix_html",
"phoenix_live_view": "file:../deps/phoenix_live_view", "phoenix_live_view": "file:../deps/phoenix_live_view",
@ -35,17 +38,21 @@
"webpack": "^5.72.0", "webpack": "^5.72.0",
"webpack-cli": "^4.9.2", "webpack-cli": "^4.9.2",
"webpack-dev-server": "^4.9.0" "webpack-dev-server": "^4.9.0"
},
"engines": {
"node": "18.12.1",
"npm": "8.19.2"
} }
}, },
"../deps/phoenix": { "../deps/phoenix": {
"version": "1.6.8", "version": "1.6.15",
"license": "MIT" "license": "MIT"
}, },
"../deps/phoenix_html": { "../deps/phoenix_html": {
"version": "3.2.0" "version": "3.2.0"
}, },
"../deps/phoenix_live_view": { "../deps/phoenix_live_view": {
"version": "0.17.9", "version": "0.18.2",
"license": "MIT" "license": "MIT"
}, },
"node_modules/@ampproject/remapping": { "node_modules/@ampproject/remapping": {
@ -3162,6 +3169,19 @@
"node": ">=4" "node": ">=4"
} }
}, },
"node_modules/chart.js": {
"version": "3.9.1",
"resolved": "https://registry.npmjs.org/chart.js/-/chart.js-3.9.1.tgz",
"integrity": "sha512-Ro2JbLmvg83gXF5F4sniaQ+lTbSv18E+TIf2cOeiH1Iqd2PGFOtem+DUufMZsCJwFE7ywPOpfXFBwRTGq7dh6w=="
},
"node_modules/chartjs-adapter-date-fns": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/chartjs-adapter-date-fns/-/chartjs-adapter-date-fns-2.0.0.tgz",
"integrity": "sha512-rmZINGLe+9IiiEB0kb57vH3UugAtYw33anRiw5kS2Tu87agpetDDoouquycWc9pRsKtQo5j+vLsYHyr8etAvFw==",
"peerDependencies": {
"chart.js": "^3.0.0"
}
},
"node_modules/chokidar": { "node_modules/chokidar": {
"version": "3.5.3", "version": "3.5.3",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
@ -3846,6 +3866,18 @@
"node": ">=8.0.0" "node": ">=8.0.0"
} }
}, },
"node_modules/date-fns": {
"version": "2.29.3",
"resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz",
"integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==",
"engines": {
"node": ">=0.11"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/date-fns"
}
},
"node_modules/debug": { "node_modules/debug": {
"version": "4.3.4", "version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
@ -12533,6 +12565,17 @@
"supports-color": "^5.3.0" "supports-color": "^5.3.0"
} }
}, },
"chart.js": {
"version": "3.9.1",
"resolved": "https://registry.npmjs.org/chart.js/-/chart.js-3.9.1.tgz",
"integrity": "sha512-Ro2JbLmvg83gXF5F4sniaQ+lTbSv18E+TIf2cOeiH1Iqd2PGFOtem+DUufMZsCJwFE7ywPOpfXFBwRTGq7dh6w=="
},
"chartjs-adapter-date-fns": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/chartjs-adapter-date-fns/-/chartjs-adapter-date-fns-2.0.0.tgz",
"integrity": "sha512-rmZINGLe+9IiiEB0kb57vH3UugAtYw33anRiw5kS2Tu87agpetDDoouquycWc9pRsKtQo5j+vLsYHyr8etAvFw==",
"requires": {}
},
"chokidar": { "chokidar": {
"version": "3.5.3", "version": "3.5.3",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
@ -13021,6 +13064,11 @@
"css-tree": "^1.1.2" "css-tree": "^1.1.2"
} }
}, },
"date-fns": {
"version": "2.29.3",
"resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz",
"integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA=="
},
"debug": { "debug": {
"version": "4.3.4", "version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",

View File

@ -2,6 +2,10 @@
"repository": {}, "repository": {},
"description": " ", "description": " ",
"license": "MIT", "license": "MIT",
"engines": {
"node": "18.12.1",
"npm": "8.19.2"
},
"scripts": { "scripts": {
"deploy": "NODE_ENV=production webpack --mode production", "deploy": "NODE_ENV=production webpack --mode production",
"watch": "webpack --mode development --watch --watch-options-stdin", "watch": "webpack --mode development --watch --watch-options-stdin",
@ -11,6 +15,9 @@
"dependencies": { "dependencies": {
"@fortawesome/fontawesome-free": "^6.1.1", "@fortawesome/fontawesome-free": "^6.1.1",
"alpinejs": "^3.10.2", "alpinejs": "^3.10.2",
"chart.js": "^3.9.1",
"chartjs-adapter-date-fns": "^2.0.0",
"date-fns": "^2.29.3",
"phoenix": "file:../deps/phoenix", "phoenix": "file:../deps/phoenix",
"phoenix_html": "file:../deps/phoenix_html", "phoenix_html": "file:../deps/phoenix_html",
"phoenix_live_view": "file:../deps/phoenix_live_view", "phoenix_live_view": "file:../deps/phoenix_live_view",

View File

@ -58,7 +58,7 @@ defmodule Cannery.ActivityLog.ShotGroup do
|> cast(attrs, [:count, :notes, :date]) |> cast(attrs, [:count, :notes, :date])
|> validate_number(:count, greater_than: 0) |> validate_number(:count, greater_than: 0)
|> validate_create_shot_group_count(ammo_group) |> validate_create_shot_group_count(ammo_group)
|> validate_required([:count, :ammo_group_id, :user_id]) |> validate_required([:count, :date, :ammo_group_id, :user_id])
end end
def create_changeset(shot_group, _invalid_user, _invalid_ammo_group, attrs) do def create_changeset(shot_group, _invalid_user, _invalid_ammo_group, attrs) do
@ -90,7 +90,7 @@ defmodule Cannery.ActivityLog.ShotGroup do
shot_group shot_group
|> cast(attrs, [:count, :notes, :date]) |> cast(attrs, [:count, :notes, :date])
|> validate_number(:count, greater_than: 0) |> validate_number(:count, greater_than: 0)
|> validate_required([:count]) |> validate_required([:count, :date])
|> validate_update_shot_group_count(shot_group, user) |> validate_update_shot_group_count(shot_group, user)
end end

View File

@ -120,18 +120,4 @@ defmodule Cannery.Tags do
""" """
@spec delete_tag!(Tag.t(), User.t()) :: Tag.t() @spec delete_tag!(Tag.t(), User.t()) :: Tag.t()
def delete_tag!(%Tag{user_id: user_id} = tag, %User{id: user_id}), do: tag |> Repo.delete!() def delete_tag!(%Tag{user_id: user_id} = tag, %User{id: user_id}), do: tag |> Repo.delete!()
@doc """
Get a random tag bg_color in `#ffffff` hex format
## Examples
iex> random_color()
"#cc0066"
"""
@spec random_bg_color() :: <<_::7>>
def random_bg_color do
["#cc0066", "#ff6699", "#6666ff", "#0066cc", "#00cc66", "#669900", "#ff9900", "#996633"]
|> Enum.random()
end
end end

View File

@ -4,9 +4,13 @@ defmodule CanneryWeb.Components.AmmoGroupCard do
""" """
use CanneryWeb, :component use CanneryWeb, :component
alias Cannery.{Ammo, Repo} alias Cannery.{Ammo, Ammo.AmmoGroup, Repo}
alias CanneryWeb.Endpoint alias CanneryWeb.Endpoint
attr :ammo_group, AmmoGroup, required: true
attr :show_container, :boolean, default: false
slot(:inner_block)
def ammo_group_card(%{ammo_group: ammo_group} = assigns) do def ammo_group_card(%{ammo_group: ammo_group} = assigns) do
assigns = assigns =
%{show_container: show_container} = assigns |> assign_new(:show_container, fn -> false end) %{show_container: show_container} = assigns |> assign_new(:show_container, fn -> false end)

View File

@ -5,11 +5,20 @@ defmodule CanneryWeb.Components.ContainerCard do
use CanneryWeb, :component use CanneryWeb, :component
import CanneryWeb.Components.TagCard import CanneryWeb.Components.TagCard
alias Cannery.{Containers, Repo} alias Cannery.{Containers, Containers.Container, Repo}
alias CanneryWeb.Endpoint alias CanneryWeb.Endpoint
alias Phoenix.LiveView.Rendered
attr :container, Container, required: true
slot(:tag_actions)
slot(:inner_block)
@spec container_card(assigns :: map()) :: Rendered.t()
def container_card(%{container: container} = assigns) do def container_card(%{container: container} = assigns) do
assigns = assigns |> Map.put(:container, container |> Repo.preload([:tags, :ammo_groups])) assigns =
assigns
|> assign(container: container |> Repo.preload([:tags, :ammo_groups]))
|> assign_new(:tag_actions, fn -> [] end)
~H""" ~H"""
<div <div
@ -63,9 +72,7 @@ defmodule CanneryWeb.Components.ContainerCard do
<% end %> <% end %>
<% end %> <% end %>
<%= if assigns |> Map.has_key?(:tag_actions) do %> <%= render_slot(@tag_actions) %>
<%= render_slot(@tag_actions) %>
<% end %>
</div> </div>
</div> </div>

View File

@ -4,9 +4,16 @@ defmodule CanneryWeb.Components.InviteCard do
""" """
use CanneryWeb, :component use CanneryWeb, :component
alias Cannery.Invites.Invite
alias CanneryWeb.Endpoint alias CanneryWeb.Endpoint
attr :invite, Invite, required: true
slot(:inner_block)
slot(:code_actions)
def invite_card(assigns) do def invite_card(assigns) do
assigns = assigns |> assign_new(:code_actions, fn -> [] end)
~H""" ~H"""
<div class="mx-4 my-2 px-8 py-4 flex flex-col justify-center items-center space-y-4 <div class="mx-4 my-2 px-8 py-4 flex flex-col justify-center items-center space-y-4
border border-gray-400 rounded-lg shadow-lg hover:shadow-md border border-gray-400 rounded-lg shadow-lg hover:shadow-md
@ -34,9 +41,7 @@ defmodule CanneryWeb.Components.InviteCard do
<%= Routes.user_registration_url(Endpoint, :new, invite: @invite.token) %> <%= Routes.user_registration_url(Endpoint, :new, invite: @invite.token) %>
</code> </code>
<%= if @code_actions do %> <%= render_slot(@code_actions) %>
<%= render_slot(@code_actions) %>
<% end %>
</div> </div>
<%= if @inner_block do %> <%= if @inner_block do %>

View File

@ -77,7 +77,7 @@ defmodule CanneryWeb.Components.MoveAmmoGroupComponent do
~H""" ~H"""
<div class="w-full flex flex-col space-y-8 justify-center items-center"> <div class="w-full flex flex-col space-y-8 justify-center items-center">
<h2 class="mb-8 text-center title text-xl text-primary-600"> <h2 class="mb-8 text-center title text-xl text-primary-600">
<%= gettext("Move ammo") %> <%= dgettext("actions", "Move ammo") %>
</h2> </h2>
<%= if @containers |> Enum.empty?() do %> <%= if @containers |> Enum.empty?() do %>

View File

@ -36,18 +36,38 @@ defmodule CanneryWeb.Components.TableComponent do
list(%{ list(%{
(key :: atom()) => any() | {custom_sort_value :: String.t(), value :: any()} (key :: atom()) => any() | {custom_sort_value :: String.t(), value :: any()}
}), }),
optional(:inital_key) => atom(),
optional(:initial_sort_mode) => atom(),
optional(any()) => any() optional(any()) => any()
}, },
Socket.t() Socket.t()
) :: {:ok, Socket.t()} ) :: {:ok, Socket.t()}
def update(%{columns: columns, rows: rows} = assigns, socket) do def update(%{columns: columns, rows: rows} = assigns, socket) do
initial_key = columns |> List.first() |> Map.get(:key) initial_key =
rows = rows |> Enum.sort_by(fn row -> row |> Map.get(initial_key) end, :asc) if assigns |> Map.has_key?(:initial_key) do
assigns.initial_key
else
columns |> List.first() |> Map.get(:key)
end
initial_sort_mode =
if assigns |> Map.has_key?(:initial_sort_mode) do
assigns.initial_sort_mode
else
:asc
end
rows = rows |> Enum.sort_by(fn row -> row |> Map.get(initial_key) end, initial_sort_mode)
socket = socket =
socket socket
|> assign(assigns) |> assign(assigns)
|> assign(columns: columns, rows: rows, last_sort_key: initial_key, sort_mode: :asc) |> assign(
columns: columns,
rows: rows,
last_sort_key: initial_key,
sort_mode: initial_sort_mode
)
{:ok, socket} {:ok, socket}
end end

View File

@ -4,6 +4,10 @@ defmodule CanneryWeb.Components.TagCard do
""" """
use CanneryWeb, :component use CanneryWeb, :component
alias Cannery.Tags.Tag
attr :tag, Tag, required: true
slot(:inner_block, required: true)
def tag_card(assigns) do def tag_card(assigns) do
~H""" ~H"""
@ -19,6 +23,8 @@ defmodule CanneryWeb.Components.TagCard do
""" """
end end
attr :tag, Tag, required: true
def simple_tag_card(assigns) do def simple_tag_card(assigns) do
~H""" ~H"""
<h1 <h1

View File

@ -4,6 +4,10 @@ defmodule CanneryWeb.Components.UserCard do
""" """
use CanneryWeb, :component use CanneryWeb, :component
alias Cannery.Accounts.User
attr :user, User, required: true
slot(:inner_block, required: true)
def user_card(assigns) do def user_card(assigns) do
~H""" ~H"""

View File

@ -82,8 +82,8 @@
<div class="flex flex-wrap justify-center items-center text-primary-600"> <div class="flex flex-wrap justify-center items-center text-primary-600">
<button type="button" class="mx-4 my-2 btn btn-primary" phx-click="toggle_staged"> <button type="button" class="mx-4 my-2 btn btn-primary" phx-click="toggle_staged">
<%= if @ammo_group.staged, <%= if @ammo_group.staged,
do: gettext("Unstage from range"), do: dgettext("actions", "Unstage from range"),
else: gettext("Stage for range") %> else: dgettext("actions", "Stage for range") %>
</button> </button>
<.link <.link

View File

@ -94,7 +94,7 @@
<div class="flex flex-col justify-center items-center"> <div class="flex flex-col justify-center items-center">
<.toggle_button action="toggle_show_used" value={@show_used}> <.toggle_button action="toggle_show_used" value={@show_used}>
<span class="title text-lg text-primary-600"> <span class="title text-lg text-primary-600">
<%= gettext("Show used") %> <%= dgettext("actions", "Show used") %>
</span> </span>
</.toggle_button> </.toggle_button>
</div> </div>

View File

@ -57,11 +57,11 @@
<%= if invite.disabled_at |> is_nil() do %> <%= if invite.disabled_at |> is_nil() do %>
<a href="#" class="btn btn-primary" phx-click="disable_invite" phx-value-id={invite.id}> <a href="#" class="btn btn-primary" phx-click="disable_invite" phx-value-id={invite.id}>
<%= gettext("Disable") %> <%= dgettext("actions", "Disable") %>
</a> </a>
<% else %> <% else %>
<a href="#" class="btn btn-primary" phx-click="enable_invite" phx-value-id={invite.id}> <a href="#" class="btn btn-primary" phx-click="enable_invite" phx-value-id={invite.id}>
<%= gettext("Enable") %> <%= dgettext("actions", "Enable") %>
</a> </a>
<% end %> <% end %>
@ -77,7 +77,7 @@
) )
} }
> >
<%= gettext("Set Unlimited") %> <%= dgettext("actions", "Set Unlimited") %>
</a> </a>
<% end %> <% end %>
</.invite_card> </.invite_card>

View File

@ -88,17 +88,67 @@ defmodule CanneryWeb.RangeLive.Index do
shot_groups shot_groups
|> Enum.map(fn shot_group -> shot_group |> get_row_data_for_shot_group(columns) end) |> 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)
socket socket
|> assign(ammo_groups: ammo_groups, columns: columns, rows: rows, shot_groups: shot_groups) |> assign(
ammo_groups: ammo_groups,
columns: columns,
rows: rows,
chart_data: chart_data,
shot_groups: shot_groups
)
end end
@spec get_row_data_for_shot_group(ShotGroup.t(), [map()]) :: [map()] @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)
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}
end)
|> Map.put(:labels, labels)
end
@spec get_row_data_for_shot_group(ShotGroup.t(), [map()]) :: map()
defp get_row_data_for_shot_group(%{date: date} = shot_group, columns) do defp get_row_data_for_shot_group(%{date: date} = shot_group, columns) do
shot_group = shot_group |> Repo.preload(ammo_group: :ammo_type) shot_group = shot_group |> Repo.preload(ammo_group: :ammo_type)
assigns = %{shot_group: shot_group} assigns = %{shot_group: shot_group}
columns columns
|> Enum.into(%{}, fn %{key: key} -> |> Map.new(fn %{key: key} ->
value = value =
case key do case key do
:name -> :name ->

View File

@ -27,8 +27,8 @@
data-confirm={"#{dgettext("prompts", "Are you sure you want to unstage this ammo?")}"} data-confirm={"#{dgettext("prompts", "Are you sure you want to unstage this ammo?")}"}
> >
<%= if ammo_group.staged, <%= if ammo_group.staged,
do: gettext("Unstage from range"), do: dgettext("actions", "Unstage from range"),
else: gettext("Stage for range") %> else: dgettext("actions", "Stage for range") %>
</button> </button>
<.link <.link
@ -53,11 +53,27 @@
<%= gettext("Shot log") %> <%= gettext("Shot log") %>
</h1> </h1>
<canvas
id="shot-log-chart"
phx-hook="ShotLogChart"
phx-update="ignore"
class="max-h-72"
data-chart-data={Jason.encode!(@chart_data)}
data-label={gettext("Rounds fired")}
data-color={random_color()}
aria-label={gettext("Rounds fired chart")}
role="img"
>
<%= dgettext("errors", "Your browser does not support the canvas element.") %>
</canvas>
<.live_component <.live_component
module={CanneryWeb.Components.TableComponent} module={CanneryWeb.Components.TableComponent}
id="shot_groups_index_table" id="shot_groups_index_table"
columns={@columns} columns={@columns}
rows={@rows} rows={@rows}
initial_key={:date}
initial_sort_mode={:desc}
/> />
<% end %> <% end %>
</div> </div>

View File

@ -6,7 +6,7 @@ defmodule CanneryWeb.TagLive.Index do
use CanneryWeb, :live_view use CanneryWeb, :live_view
import CanneryWeb.Components.TagCard import CanneryWeb.Components.TagCard
alias Cannery.{Tags, Tags.Tag} alias Cannery.{Tags, Tags.Tag}
alias CanneryWeb.Endpoint alias CanneryWeb.{Endpoint, ViewHelpers}
@impl true @impl true
def mount(_params, _session, socket), do: {:ok, socket |> display_tags()} def mount(_params, _session, socket), do: {:ok, socket |> display_tags()}
@ -25,7 +25,7 @@ defmodule CanneryWeb.TagLive.Index do
defp apply_action(socket, :new, _params) do defp apply_action(socket, :new, _params) do
socket socket
|> assign(:page_title, gettext("New Tag")) |> assign(:page_title, gettext("New Tag"))
|> assign(:tag, %Tag{bg_color: Tags.random_bg_color(), text_color: "#ffffff"}) |> assign(:tag, %Tag{bg_color: ViewHelpers.random_color(), text_color: "#ffffff"})
end end
defp apply_action(socket, :index, _params) do defp apply_action(socket, :index, _params) do

View File

@ -115,4 +115,18 @@ defmodule CanneryWeb.ViewHelpers do
</label> </label>
""" """
end end
@doc """
Get a random color in `#ffffff` hex format
## Examples
iex> random_color()
"#cc0066"
"""
@spec random_color() :: <<_::7>>
def random_color do
["#cc0066", "#ff6699", "#6666ff", "#0066cc", "#00cc66", "#669900", "#ff9900", "#996633"]
|> Enum.random()
end
end end

View File

@ -211,3 +211,40 @@ msgstr ""
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "add an ammo type first" msgid "add an ammo type first"
msgstr "" msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:60
#, elixir-autogen, elixir-format
msgid "Disable"
msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:64
#, elixir-autogen, elixir-format
msgid "Enable"
msgstr ""
#: lib/cannery_web/components/move_ammo_group_component.ex:80
#, elixir-autogen, elixir-format
msgid "Move ammo"
msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:80
#, elixir-autogen, elixir-format
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
msgid "Stage for range"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.html.heex:85
#: lib/cannery_web/live/range_live/index.html.heex:30
#, elixir-autogen, elixir-format
msgid "Unstage from range"
msgstr ""

View File

@ -224,3 +224,40 @@ msgstr ""
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "add an ammo type first" msgid "add an ammo type first"
msgstr "" msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:60
#, elixir-autogen, elixir-format
msgid "Disable"
msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:64
#, elixir-autogen, elixir-format
msgid "Enable"
msgstr ""
#: lib/cannery_web/components/move_ammo_group_component.ex:80
#, elixir-autogen, elixir-format
msgid "Move ammo"
msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:80
#, elixir-autogen, elixir-format
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
msgid "Stage for range"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.html.heex:85
#: lib/cannery_web/live/range_live/index.html.heex:30
#, elixir-autogen, elixir-format
msgid "Unstage from range"
msgstr ""

View File

@ -143,7 +143,7 @@ msgstr "Korrosiv"
msgid "Count" msgid "Count"
msgstr "Anzahl" msgstr "Anzahl"
#: lib/cannery_web/components/ammo_group_card.ex:33 #: lib/cannery_web/components/ammo_group_card.ex:37
#: lib/cannery_web/live/ammo_group_live/show.html.heex:8 #: lib/cannery_web/live/ammo_group_live/show.html.heex:8
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Count:" msgid "Count:"
@ -155,17 +155,12 @@ msgstr "Anzahl:"
msgid "Description" msgid "Description"
msgstr "Beschreibung" msgstr "Beschreibung"
#: lib/cannery_web/components/container_card.ex:30 #: lib/cannery_web/components/container_card.ex:39
#: lib/cannery_web/live/container_live/show.html.heex:8 #: lib/cannery_web/live/container_live/show.html.heex:8
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Description:" msgid "Description:"
msgstr "Beschreibung:" msgstr "Beschreibung:"
#: lib/cannery_web/live/invite_live/index.html.heex:60
#, elixir-autogen, elixir-format
msgid "Disable"
msgstr "Deaktivieren"
#: lib/cannery_web/live/home_live.ex:61 #: lib/cannery_web/live/home_live.ex:61
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Easy to Use:" msgid "Easy to Use:"
@ -192,11 +187,6 @@ msgstr "Einladung bearbeiten"
msgid "Edit Tag" msgid "Edit Tag"
msgstr "Tag bearbeiten" msgstr "Tag bearbeiten"
#: lib/cannery_web/live/invite_live/index.html.heex:64
#, elixir-autogen, elixir-format
msgid "Enable"
msgstr "Aktivieren"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:35 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:35
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Example bullet type abbreviations" msgid "Example bullet type abbreviations"
@ -226,7 +216,7 @@ msgstr "Brandmunition"
msgid "Instance Information" msgid "Instance Information"
msgstr "Instanzinformationen" msgstr "Instanzinformationen"
#: lib/cannery_web/components/invite_card.ex:25 #: lib/cannery_web/components/invite_card.ex:32
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Invite Disabled" msgid "Invite Disabled"
msgstr "Einladung deaktiviert" msgstr "Einladung deaktiviert"
@ -254,7 +244,7 @@ msgstr "Für 60 Tage eingeloggt bleiben"
msgid "Location" msgid "Location"
msgstr "Standort" msgstr "Standort"
#: lib/cannery_web/components/container_card.ex:42 #: lib/cannery_web/components/container_card.ex:51
#: lib/cannery_web/live/container_live/show.html.heex:20 #: lib/cannery_web/live/container_live/show.html.heex:20
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Location:" msgid "Location:"
@ -351,7 +341,7 @@ msgstr "Keine Tags"
msgid "Notes" msgid "Notes"
msgstr "Bemerkungen" msgstr "Bemerkungen"
#: lib/cannery_web/components/ammo_group_card.ex:39 #: lib/cannery_web/components/ammo_group_card.ex:43
#: lib/cannery_web/live/ammo_group_live/show.html.heex:24 #: lib/cannery_web/live/ammo_group_live/show.html.heex:24
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Notes:" msgid "Notes:"
@ -375,7 +365,7 @@ msgstr "Druck"
msgid "Price paid" msgid "Price paid"
msgstr "Kaufpreis" msgstr "Kaufpreis"
#: lib/cannery_web/components/ammo_group_card.ex:58 #: lib/cannery_web/components/ammo_group_card.ex:62
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Price paid:" msgid "Price paid:"
msgstr "Kaufpreis:" msgstr "Kaufpreis:"
@ -404,11 +394,6 @@ msgstr ""
"Hosten Sie Ihre eigene Instanz oder verwenden Sie eine Instanz, der Sie " "Hosten Sie Ihre eigene Instanz oder verwenden Sie eine Instanz, der Sie "
"vertrauen." "vertrauen."
#: lib/cannery_web/live/invite_live/index.html.heex:80
#, elixir-autogen, elixir-format
msgid "Set Unlimited"
msgstr "Unbegrenzt setzen"
#: lib/cannery_web/controllers/user_settings_controller.ex:10 #: lib/cannery_web/controllers/user_settings_controller.ex:10
#: lib/cannery_web/templates/user_settings/edit.html.heex:3 #: lib/cannery_web/templates/user_settings/edit.html.heex:3
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -470,7 +455,7 @@ msgstr "Leuchtspur"
msgid "Type" msgid "Type"
msgstr "Art" msgstr "Art"
#: lib/cannery_web/components/container_card.ex:36 #: lib/cannery_web/components/container_card.ex:45
#: lib/cannery_web/live/container_live/show.html.heex:14 #: lib/cannery_web/live/container_live/show.html.heex:14
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Type:" msgid "Type:"
@ -481,7 +466,7 @@ msgstr "Art:"
msgid "Users" msgid "Users"
msgstr "Benutzer" msgstr "Benutzer"
#: lib/cannery_web/components/invite_card.ex:20 #: lib/cannery_web/components/invite_card.ex:27
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Uses Left:" msgid "Uses Left:"
msgstr "Verbleibende Nutzung:" msgstr "Verbleibende Nutzung:"
@ -533,18 +518,6 @@ msgstr "Schüsse abgegeben"
msgid "No ammo staged" msgid "No ammo staged"
msgstr "Keine Munition selektiert" msgstr "Keine Munition selektiert"
#: 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
msgid "Stage for range"
msgstr "Für Schießplatz selektieren"
#: lib/cannery_web/live/ammo_group_live/show.html.heex:85
#: lib/cannery_web/live/range_live/index.html.heex:30
#, elixir-autogen, elixir-format
msgid "Unstage from range"
msgstr "Für Schießplatz deselektieren"
#: lib/cannery_web/components/add_shot_group_component.html.heex:3 #: lib/cannery_web/components/add_shot_group_component.html.heex:3
#: lib/cannery_web/live/ammo_group_live/index.ex:26 #: lib/cannery_web/live/ammo_group_live/index.ex:26
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -599,7 +572,6 @@ msgstr "Schießkladde"
msgid "Move Ammo group" msgid "Move Ammo group"
msgstr "Munitionsgruppe verschieben" msgstr "Munitionsgruppe verschieben"
#: lib/cannery_web/components/move_ammo_group_component.ex:80
#: lib/cannery_web/live/ammo_group_live/index.ex:253 #: lib/cannery_web/live/ammo_group_live/index.ex:253
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Move ammo" msgid "Move ammo"
@ -615,7 +587,7 @@ msgstr "Kein weiterer Behälter"
msgid "Shot log" msgid "Shot log"
msgstr "Schießkladde" msgstr "Schießkladde"
#: lib/cannery_web/components/ammo_group_card.ex:59 #: lib/cannery_web/components/ammo_group_card.ex:63
#: lib/cannery_web/live/ammo_group_live/index.ex:145 #: lib/cannery_web/live/ammo_group_live/index.ex:145
#: lib/cannery_web/live/ammo_group_live/show.html.heex:37 #: lib/cannery_web/live/ammo_group_live/show.html.heex:37
#: lib/cannery_web/live/ammo_group_live/show.html.heex:44 #: lib/cannery_web/live/ammo_group_live/show.html.heex:44
@ -720,7 +692,7 @@ msgstr "%{name} bearbeiten"
msgid "Edit %{name} tags" msgid "Edit %{name} tags"
msgstr "Editiere %{name} Tags" msgstr "Editiere %{name} Tags"
#: lib/cannery_web/components/container_card.ex:54 #: lib/cannery_web/components/container_card.ex:63
#: lib/cannery_web/live/container_live/show.html.heex:32 #: lib/cannery_web/live/container_live/show.html.heex:32
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Rounds:" msgid "Rounds:"
@ -828,14 +800,14 @@ msgstr "Munitionsart"
msgid "Added on" msgid "Added on"
msgstr "Hinzugefügt am" msgstr "Hinzugefügt am"
#: lib/cannery_web/components/ammo_group_card.ex:45 #: lib/cannery_web/components/ammo_group_card.ex:49
#: lib/cannery_web/live/ammo_group_live/show.html.heex:30 #: lib/cannery_web/live/ammo_group_live/show.html.heex:30
#: lib/cannery_web/live/ammo_type_live/show.html.heex:97 #: lib/cannery_web/live/ammo_type_live/show.html.heex:97
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Added on:" msgid "Added on:"
msgstr "Hinzugefügt am:" msgstr "Hinzugefügt am:"
#: lib/cannery_web/components/user_card.ex:30 #: lib/cannery_web/components/user_card.ex:34
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "User registered on" msgid "User registered on"
msgstr "Benutzer registriert am" msgstr "Benutzer registriert am"
@ -914,7 +886,7 @@ msgstr "Zeige Munitionsarten"
msgid "This ammo is not in a container" msgid "This ammo is not in a container"
msgstr "Diese Munitionsgruppe ist nicht in einem Behälter" msgstr "Diese Munitionsgruppe ist nicht in einem Behälter"
#: lib/cannery_web/components/container_card.ex:49 #: lib/cannery_web/components/container_card.ex:58
#: lib/cannery_web/live/container_live/show.html.heex:27 #: lib/cannery_web/live/container_live/show.html.heex:27
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Packs:" msgid "Packs:"
@ -941,14 +913,13 @@ msgstr ""
msgid "Total # of ammo" msgid "Total # of ammo"
msgstr "Summe aller Patronen" msgstr "Summe aller Patronen"
#: lib/cannery_web/components/ammo_group_card.ex:67 #: lib/cannery_web/components/ammo_group_card.ex:71
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Container:" msgid "Container:"
msgstr "Behälter" msgstr "Behälter"
#: lib/cannery_web/live/ammo_group_live/index.html.heex:48 #: lib/cannery_web/live/ammo_group_live/index.html.heex:48
#: lib/cannery_web/live/ammo_type_live/show.html.heex:126 #: lib/cannery_web/live/ammo_type_live/show.html.heex:126
#: lib/cannery_web/live/container_live/show.html.heex:97
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Show used" msgid "Show used"
msgstr "" msgstr ""
@ -958,7 +929,7 @@ msgstr ""
msgid "Used up on" msgid "Used up on"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:51 #: lib/cannery_web/components/ammo_group_card.ex:55
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Used up on:" msgid "Used up on:"
msgstr "" msgstr ""
@ -968,3 +939,28 @@ msgstr ""
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "%{percentage}%" msgid "%{percentage}%"
msgstr "" 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
#, elixir-autogen, elixir-format, fuzzy
msgid "Rounds shot: %{count}"
msgstr "Patronen abgefeuert"

View File

@ -201,3 +201,8 @@ msgstr ""
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Please select a valid user and ammo group" msgid "Please select a valid user and ammo group"
msgstr "" msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:67
#, elixir-autogen, elixir-format
msgid "Your browser does not support the canvas element."
msgstr ""

View File

@ -213,7 +213,7 @@ msgid "Are you sure you want to unstage this ammo?"
msgstr "Sind sie sicher, dass Sie diese Munition demarkieren möchten?" msgstr "Sind sie sicher, dass Sie diese Munition demarkieren möchten?"
#: lib/cannery_web/live/ammo_group_live/show.ex:132 #: lib/cannery_web/live/ammo_group_live/show.ex:132
#: lib/cannery_web/live/range_live/index.ex:131 #: lib/cannery_web/live/range_live/index.ex:181
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this shot record?" msgid "Are you sure you want to delete this shot record?"
msgstr "Sind sie sicher, dass sie die Schießkladde löschen möchten?" msgstr "Sind sie sicher, dass sie die Schießkladde löschen möchten?"

View File

@ -128,7 +128,7 @@ msgstr ""
msgid "Count" msgid "Count"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:33 #: lib/cannery_web/components/ammo_group_card.ex:37
#: lib/cannery_web/live/ammo_group_live/show.html.heex:8 #: lib/cannery_web/live/ammo_group_live/show.html.heex:8
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Count:" msgid "Count:"
@ -140,17 +140,12 @@ msgstr ""
msgid "Description" msgid "Description"
msgstr "" msgstr ""
#: lib/cannery_web/components/container_card.ex:30 #: lib/cannery_web/components/container_card.ex:39
#: lib/cannery_web/live/container_live/show.html.heex:8 #: lib/cannery_web/live/container_live/show.html.heex:8
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Description:" msgid "Description:"
msgstr "" msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:60
#, elixir-autogen, elixir-format
msgid "Disable"
msgstr ""
#: lib/cannery_web/live/home_live.ex:61 #: lib/cannery_web/live/home_live.ex:61
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Easy to Use:" msgid "Easy to Use:"
@ -177,11 +172,6 @@ msgstr ""
msgid "Edit Tag" msgid "Edit Tag"
msgstr "" msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:64
#, elixir-autogen, elixir-format
msgid "Enable"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:35 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:35
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Example bullet type abbreviations" msgid "Example bullet type abbreviations"
@ -211,7 +201,7 @@ msgstr ""
msgid "Instance Information" msgid "Instance Information"
msgstr "" msgstr ""
#: lib/cannery_web/components/invite_card.ex:25 #: lib/cannery_web/components/invite_card.ex:32
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Invite Disabled" msgid "Invite Disabled"
msgstr "" msgstr ""
@ -239,7 +229,7 @@ msgstr ""
msgid "Location" msgid "Location"
msgstr "" msgstr ""
#: lib/cannery_web/components/container_card.ex:42 #: lib/cannery_web/components/container_card.ex:51
#: lib/cannery_web/live/container_live/show.html.heex:20 #: lib/cannery_web/live/container_live/show.html.heex:20
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Location:" msgid "Location:"
@ -336,7 +326,7 @@ msgstr ""
msgid "Notes" msgid "Notes"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:39 #: lib/cannery_web/components/ammo_group_card.ex:43
#: lib/cannery_web/live/ammo_group_live/show.html.heex:24 #: lib/cannery_web/live/ammo_group_live/show.html.heex:24
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Notes:" msgid "Notes:"
@ -360,7 +350,7 @@ msgstr ""
msgid "Price paid" msgid "Price paid"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:58 #: lib/cannery_web/components/ammo_group_card.ex:62
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Price paid:" msgid "Price paid:"
msgstr "" msgstr ""
@ -387,11 +377,6 @@ msgstr ""
msgid "Self-host your own instance, or use an instance from someone you trust." msgid "Self-host your own instance, or use an instance from someone you trust."
msgstr "" msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:80
#, elixir-autogen, elixir-format
msgid "Set Unlimited"
msgstr ""
#: lib/cannery_web/controllers/user_settings_controller.ex:10 #: lib/cannery_web/controllers/user_settings_controller.ex:10
#: lib/cannery_web/templates/user_settings/edit.html.heex:3 #: lib/cannery_web/templates/user_settings/edit.html.heex:3
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -453,7 +438,7 @@ msgstr ""
msgid "Type" msgid "Type"
msgstr "" msgstr ""
#: lib/cannery_web/components/container_card.ex:36 #: lib/cannery_web/components/container_card.ex:45
#: lib/cannery_web/live/container_live/show.html.heex:14 #: lib/cannery_web/live/container_live/show.html.heex:14
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Type:" msgid "Type:"
@ -464,7 +449,7 @@ msgstr ""
msgid "Users" msgid "Users"
msgstr "" msgstr ""
#: lib/cannery_web/components/invite_card.ex:20 #: lib/cannery_web/components/invite_card.ex:27
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Uses Left:" msgid "Uses Left:"
msgstr "" msgstr ""
@ -516,18 +501,6 @@ msgstr ""
msgid "No ammo staged" msgid "No ammo staged"
msgstr "" 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
msgid "Stage for range"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.html.heex:85
#: lib/cannery_web/live/range_live/index.html.heex:30
#, elixir-autogen, elixir-format
msgid "Unstage from range"
msgstr ""
#: lib/cannery_web/components/add_shot_group_component.html.heex:3 #: lib/cannery_web/components/add_shot_group_component.html.heex:3
#: lib/cannery_web/live/ammo_group_live/index.ex:26 #: lib/cannery_web/live/ammo_group_live/index.ex:26
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -582,7 +555,6 @@ msgstr ""
msgid "Move Ammo group" msgid "Move Ammo group"
msgstr "" msgstr ""
#: lib/cannery_web/components/move_ammo_group_component.ex:80
#: lib/cannery_web/live/ammo_group_live/index.ex:253 #: lib/cannery_web/live/ammo_group_live/index.ex:253
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Move ammo" msgid "Move ammo"
@ -598,7 +570,7 @@ msgstr ""
msgid "Shot log" msgid "Shot log"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:59 #: lib/cannery_web/components/ammo_group_card.ex:63
#: lib/cannery_web/live/ammo_group_live/index.ex:145 #: lib/cannery_web/live/ammo_group_live/index.ex:145
#: lib/cannery_web/live/ammo_group_live/show.html.heex:37 #: lib/cannery_web/live/ammo_group_live/show.html.heex:37
#: lib/cannery_web/live/ammo_group_live/show.html.heex:44 #: lib/cannery_web/live/ammo_group_live/show.html.heex:44
@ -703,7 +675,7 @@ msgstr ""
msgid "Edit %{name} tags" msgid "Edit %{name} tags"
msgstr "" msgstr ""
#: lib/cannery_web/components/container_card.ex:54 #: lib/cannery_web/components/container_card.ex:63
#: lib/cannery_web/live/container_live/show.html.heex:32 #: lib/cannery_web/live/container_live/show.html.heex:32
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Rounds:" msgid "Rounds:"
@ -811,14 +783,14 @@ msgstr ""
msgid "Added on" msgid "Added on"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:45 #: lib/cannery_web/components/ammo_group_card.ex:49
#: lib/cannery_web/live/ammo_group_live/show.html.heex:30 #: lib/cannery_web/live/ammo_group_live/show.html.heex:30
#: lib/cannery_web/live/ammo_type_live/show.html.heex:97 #: lib/cannery_web/live/ammo_type_live/show.html.heex:97
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Added on:" msgid "Added on:"
msgstr "" msgstr ""
#: lib/cannery_web/components/user_card.ex:30 #: lib/cannery_web/components/user_card.ex:34
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "User registered on" msgid "User registered on"
msgstr "" msgstr ""
@ -897,7 +869,7 @@ msgstr ""
msgid "This ammo is not in a container" msgid "This ammo is not in a container"
msgstr "" msgstr ""
#: lib/cannery_web/components/container_card.ex:49 #: lib/cannery_web/components/container_card.ex:58
#: lib/cannery_web/live/container_live/show.html.heex:27 #: lib/cannery_web/live/container_live/show.html.heex:27
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Packs:" msgid "Packs:"
@ -924,14 +896,13 @@ msgstr ""
msgid "Total # of ammo" msgid "Total # of ammo"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:67 #: lib/cannery_web/components/ammo_group_card.ex:71
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Container:" msgid "Container:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:48 #: lib/cannery_web/live/ammo_group_live/index.html.heex:48
#: lib/cannery_web/live/ammo_type_live/show.html.heex:126 #: lib/cannery_web/live/ammo_type_live/show.html.heex:126
#: lib/cannery_web/live/container_live/show.html.heex:97
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Show used" msgid "Show used"
msgstr "" msgstr ""
@ -941,7 +912,7 @@ msgstr ""
msgid "Used up on" msgid "Used up on"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:51 #: lib/cannery_web/components/ammo_group_card.ex:55
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Used up on:" msgid "Used up on:"
msgstr "" msgstr ""
@ -951,3 +922,28 @@ msgstr ""
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "%{percentage}%" msgid "%{percentage}%"
msgstr "" 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
#, elixir-autogen, elixir-format
msgid "Rounds shot: %{count}"
msgstr ""

View File

@ -212,3 +212,40 @@ msgstr ""
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "add an ammo type first" msgid "add an ammo type first"
msgstr "" msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:60
#, elixir-autogen, elixir-format
msgid "Disable"
msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:64
#, elixir-autogen, elixir-format
msgid "Enable"
msgstr ""
#: lib/cannery_web/components/move_ammo_group_component.ex:80
#, elixir-autogen, elixir-format
msgid "Move ammo"
msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:80
#, elixir-autogen, elixir-format
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
msgid "Stage for range"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.html.heex:85
#: lib/cannery_web/live/range_live/index.html.heex:30
#, elixir-autogen, elixir-format
msgid "Unstage from range"
msgstr ""

View File

@ -129,7 +129,7 @@ msgstr ""
msgid "Count" msgid "Count"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:33 #: lib/cannery_web/components/ammo_group_card.ex:37
#: lib/cannery_web/live/ammo_group_live/show.html.heex:8 #: lib/cannery_web/live/ammo_group_live/show.html.heex:8
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Count:" msgid "Count:"
@ -141,17 +141,12 @@ msgstr ""
msgid "Description" msgid "Description"
msgstr "" msgstr ""
#: lib/cannery_web/components/container_card.ex:30 #: lib/cannery_web/components/container_card.ex:39
#: lib/cannery_web/live/container_live/show.html.heex:8 #: lib/cannery_web/live/container_live/show.html.heex:8
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Description:" msgid "Description:"
msgstr "" msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:60
#, elixir-autogen, elixir-format
msgid "Disable"
msgstr ""
#: lib/cannery_web/live/home_live.ex:61 #: lib/cannery_web/live/home_live.ex:61
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Easy to Use:" msgid "Easy to Use:"
@ -178,11 +173,6 @@ msgstr ""
msgid "Edit Tag" msgid "Edit Tag"
msgstr "" msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:64
#, elixir-autogen, elixir-format
msgid "Enable"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:35 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:35
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Example bullet type abbreviations" msgid "Example bullet type abbreviations"
@ -212,7 +202,7 @@ msgstr ""
msgid "Instance Information" msgid "Instance Information"
msgstr "" msgstr ""
#: lib/cannery_web/components/invite_card.ex:25 #: lib/cannery_web/components/invite_card.ex:32
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Invite Disabled" msgid "Invite Disabled"
msgstr "" msgstr ""
@ -240,7 +230,7 @@ msgstr ""
msgid "Location" msgid "Location"
msgstr "" msgstr ""
#: lib/cannery_web/components/container_card.ex:42 #: lib/cannery_web/components/container_card.ex:51
#: lib/cannery_web/live/container_live/show.html.heex:20 #: lib/cannery_web/live/container_live/show.html.heex:20
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Location:" msgid "Location:"
@ -337,7 +327,7 @@ msgstr ""
msgid "Notes" msgid "Notes"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:39 #: lib/cannery_web/components/ammo_group_card.ex:43
#: lib/cannery_web/live/ammo_group_live/show.html.heex:24 #: lib/cannery_web/live/ammo_group_live/show.html.heex:24
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Notes:" msgid "Notes:"
@ -361,7 +351,7 @@ msgstr ""
msgid "Price paid" msgid "Price paid"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:58 #: lib/cannery_web/components/ammo_group_card.ex:62
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Price paid:" msgid "Price paid:"
msgstr "" msgstr ""
@ -388,11 +378,6 @@ msgstr ""
msgid "Self-host your own instance, or use an instance from someone you trust." msgid "Self-host your own instance, or use an instance from someone you trust."
msgstr "" msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:80
#, elixir-autogen, elixir-format
msgid "Set Unlimited"
msgstr ""
#: lib/cannery_web/controllers/user_settings_controller.ex:10 #: lib/cannery_web/controllers/user_settings_controller.ex:10
#: lib/cannery_web/templates/user_settings/edit.html.heex:3 #: lib/cannery_web/templates/user_settings/edit.html.heex:3
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -454,7 +439,7 @@ msgstr ""
msgid "Type" msgid "Type"
msgstr "" msgstr ""
#: lib/cannery_web/components/container_card.ex:36 #: lib/cannery_web/components/container_card.ex:45
#: lib/cannery_web/live/container_live/show.html.heex:14 #: lib/cannery_web/live/container_live/show.html.heex:14
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Type:" msgid "Type:"
@ -465,7 +450,7 @@ msgstr ""
msgid "Users" msgid "Users"
msgstr "" msgstr ""
#: lib/cannery_web/components/invite_card.ex:20 #: lib/cannery_web/components/invite_card.ex:27
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Uses Left:" msgid "Uses Left:"
msgstr "" msgstr ""
@ -517,18 +502,6 @@ msgstr ""
msgid "No ammo staged" msgid "No ammo staged"
msgstr "" 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
msgid "Stage for range"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.html.heex:85
#: lib/cannery_web/live/range_live/index.html.heex:30
#, elixir-autogen, elixir-format
msgid "Unstage from range"
msgstr ""
#: lib/cannery_web/components/add_shot_group_component.html.heex:3 #: lib/cannery_web/components/add_shot_group_component.html.heex:3
#: lib/cannery_web/live/ammo_group_live/index.ex:26 #: lib/cannery_web/live/ammo_group_live/index.ex:26
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -583,7 +556,6 @@ msgstr ""
msgid "Move Ammo group" msgid "Move Ammo group"
msgstr "" msgstr ""
#: lib/cannery_web/components/move_ammo_group_component.ex:80
#: lib/cannery_web/live/ammo_group_live/index.ex:253 #: lib/cannery_web/live/ammo_group_live/index.ex:253
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Move ammo" msgid "Move ammo"
@ -599,7 +571,7 @@ msgstr ""
msgid "Shot log" msgid "Shot log"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:59 #: lib/cannery_web/components/ammo_group_card.ex:63
#: lib/cannery_web/live/ammo_group_live/index.ex:145 #: lib/cannery_web/live/ammo_group_live/index.ex:145
#: lib/cannery_web/live/ammo_group_live/show.html.heex:37 #: lib/cannery_web/live/ammo_group_live/show.html.heex:37
#: lib/cannery_web/live/ammo_group_live/show.html.heex:44 #: lib/cannery_web/live/ammo_group_live/show.html.heex:44
@ -704,7 +676,7 @@ msgstr ""
msgid "Edit %{name} tags" msgid "Edit %{name} tags"
msgstr "" msgstr ""
#: lib/cannery_web/components/container_card.ex:54 #: lib/cannery_web/components/container_card.ex:63
#: lib/cannery_web/live/container_live/show.html.heex:32 #: lib/cannery_web/live/container_live/show.html.heex:32
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Rounds:" msgid "Rounds:"
@ -812,14 +784,14 @@ msgstr ""
msgid "Added on" msgid "Added on"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:45 #: lib/cannery_web/components/ammo_group_card.ex:49
#: lib/cannery_web/live/ammo_group_live/show.html.heex:30 #: lib/cannery_web/live/ammo_group_live/show.html.heex:30
#: lib/cannery_web/live/ammo_type_live/show.html.heex:97 #: lib/cannery_web/live/ammo_type_live/show.html.heex:97
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Added on:" msgid "Added on:"
msgstr "" msgstr ""
#: lib/cannery_web/components/user_card.ex:30 #: lib/cannery_web/components/user_card.ex:34
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "User registered on" msgid "User registered on"
msgstr "" msgstr ""
@ -898,7 +870,7 @@ msgstr ""
msgid "This ammo is not in a container" msgid "This ammo is not in a container"
msgstr "" msgstr ""
#: lib/cannery_web/components/container_card.ex:49 #: lib/cannery_web/components/container_card.ex:58
#: lib/cannery_web/live/container_live/show.html.heex:27 #: lib/cannery_web/live/container_live/show.html.heex:27
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Packs:" msgid "Packs:"
@ -925,14 +897,13 @@ msgstr ""
msgid "Total # of ammo" msgid "Total # of ammo"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:67 #: lib/cannery_web/components/ammo_group_card.ex:71
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Container:" msgid "Container:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:48 #: lib/cannery_web/live/ammo_group_live/index.html.heex:48
#: lib/cannery_web/live/ammo_type_live/show.html.heex:126 #: lib/cannery_web/live/ammo_type_live/show.html.heex:126
#: lib/cannery_web/live/container_live/show.html.heex:97
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Show used" msgid "Show used"
msgstr "" msgstr ""
@ -942,7 +913,7 @@ msgstr ""
msgid "Used up on" msgid "Used up on"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:51 #: lib/cannery_web/components/ammo_group_card.ex:55
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Used up on:" msgid "Used up on:"
msgstr "" msgstr ""
@ -952,3 +923,28 @@ msgstr ""
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "%{percentage}%" msgid "%{percentage}%"
msgstr "" 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
#, elixir-autogen, elixir-format, fuzzy
msgid "Rounds shot: %{count}"
msgstr ""

View File

@ -184,3 +184,8 @@ msgstr ""
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Please select a valid user and ammo group" msgid "Please select a valid user and ammo group"
msgstr "" msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:67
#, elixir-autogen, elixir-format
msgid "Your browser does not support the canvas element."
msgstr ""

View File

@ -193,7 +193,7 @@ msgid "Are you sure you want to unstage this ammo?"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:132 #: lib/cannery_web/live/ammo_group_live/show.ex:132
#: lib/cannery_web/live/range_live/index.ex:131 #: lib/cannery_web/live/range_live/index.ex:181
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this shot record?" msgid "Are you sure you want to delete this shot record?"
msgstr "" msgstr ""

View File

@ -183,3 +183,8 @@ msgstr ""
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Please select a valid user and ammo group" msgid "Please select a valid user and ammo group"
msgstr "" msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:67
#, elixir-autogen, elixir-format
msgid "Your browser does not support the canvas element."
msgstr ""

View File

@ -224,3 +224,40 @@ msgstr ""
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "add an ammo type first" msgid "add an ammo type first"
msgstr "" msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:60
#, elixir-autogen, elixir-format
msgid "Disable"
msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:64
#, elixir-autogen, elixir-format
msgid "Enable"
msgstr ""
#: lib/cannery_web/components/move_ammo_group_component.ex:80
#, elixir-autogen, elixir-format
msgid "Move ammo"
msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:80
#, elixir-autogen, elixir-format
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
msgid "Stage for range"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.html.heex:85
#: lib/cannery_web/live/range_live/index.html.heex:30
#, elixir-autogen, elixir-format
msgid "Unstage from range"
msgstr ""

View File

@ -143,7 +143,7 @@ msgstr ""
msgid "Count" msgid "Count"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:33 #: lib/cannery_web/components/ammo_group_card.ex:37
#: lib/cannery_web/live/ammo_group_live/show.html.heex:8 #: lib/cannery_web/live/ammo_group_live/show.html.heex:8
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Count:" msgid "Count:"
@ -155,17 +155,12 @@ msgstr ""
msgid "Description" msgid "Description"
msgstr "" msgstr ""
#: lib/cannery_web/components/container_card.ex:30 #: lib/cannery_web/components/container_card.ex:39
#: lib/cannery_web/live/container_live/show.html.heex:8 #: lib/cannery_web/live/container_live/show.html.heex:8
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Description:" msgid "Description:"
msgstr "" msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:60
#, elixir-autogen, elixir-format
msgid "Disable"
msgstr ""
#: lib/cannery_web/live/home_live.ex:61 #: lib/cannery_web/live/home_live.ex:61
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Easy to Use:" msgid "Easy to Use:"
@ -192,11 +187,6 @@ msgstr ""
msgid "Edit Tag" msgid "Edit Tag"
msgstr "" msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:64
#, elixir-autogen, elixir-format
msgid "Enable"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:35 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:35
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Example bullet type abbreviations" msgid "Example bullet type abbreviations"
@ -226,7 +216,7 @@ msgstr ""
msgid "Instance Information" msgid "Instance Information"
msgstr "" msgstr ""
#: lib/cannery_web/components/invite_card.ex:25 #: lib/cannery_web/components/invite_card.ex:32
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Invite Disabled" msgid "Invite Disabled"
msgstr "" msgstr ""
@ -254,7 +244,7 @@ msgstr ""
msgid "Location" msgid "Location"
msgstr "" msgstr ""
#: lib/cannery_web/components/container_card.ex:42 #: lib/cannery_web/components/container_card.ex:51
#: lib/cannery_web/live/container_live/show.html.heex:20 #: lib/cannery_web/live/container_live/show.html.heex:20
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Location:" msgid "Location:"
@ -351,7 +341,7 @@ msgstr ""
msgid "Notes" msgid "Notes"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:39 #: lib/cannery_web/components/ammo_group_card.ex:43
#: lib/cannery_web/live/ammo_group_live/show.html.heex:24 #: lib/cannery_web/live/ammo_group_live/show.html.heex:24
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Notes:" msgid "Notes:"
@ -375,7 +365,7 @@ msgstr ""
msgid "Price paid" msgid "Price paid"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:58 #: lib/cannery_web/components/ammo_group_card.ex:62
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Price paid:" msgid "Price paid:"
msgstr "" msgstr ""
@ -402,11 +392,6 @@ msgstr ""
msgid "Self-host your own instance, or use an instance from someone you trust." msgid "Self-host your own instance, or use an instance from someone you trust."
msgstr "" msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:80
#, elixir-autogen, elixir-format
msgid "Set Unlimited"
msgstr ""
#: lib/cannery_web/controllers/user_settings_controller.ex:10 #: lib/cannery_web/controllers/user_settings_controller.ex:10
#: lib/cannery_web/templates/user_settings/edit.html.heex:3 #: lib/cannery_web/templates/user_settings/edit.html.heex:3
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -468,7 +453,7 @@ msgstr ""
msgid "Type" msgid "Type"
msgstr "" msgstr ""
#: lib/cannery_web/components/container_card.ex:36 #: lib/cannery_web/components/container_card.ex:45
#: lib/cannery_web/live/container_live/show.html.heex:14 #: lib/cannery_web/live/container_live/show.html.heex:14
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Type:" msgid "Type:"
@ -479,7 +464,7 @@ msgstr ""
msgid "Users" msgid "Users"
msgstr "" msgstr ""
#: lib/cannery_web/components/invite_card.ex:20 #: lib/cannery_web/components/invite_card.ex:27
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Uses Left:" msgid "Uses Left:"
msgstr "" msgstr ""
@ -531,18 +516,6 @@ msgstr ""
msgid "No ammo staged" msgid "No ammo staged"
msgstr "" 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
msgid "Stage for range"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.html.heex:85
#: lib/cannery_web/live/range_live/index.html.heex:30
#, elixir-autogen, elixir-format
msgid "Unstage from range"
msgstr ""
#: lib/cannery_web/components/add_shot_group_component.html.heex:3 #: lib/cannery_web/components/add_shot_group_component.html.heex:3
#: lib/cannery_web/live/ammo_group_live/index.ex:26 #: lib/cannery_web/live/ammo_group_live/index.ex:26
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -597,7 +570,6 @@ msgstr ""
msgid "Move Ammo group" msgid "Move Ammo group"
msgstr "" msgstr ""
#: lib/cannery_web/components/move_ammo_group_component.ex:80
#: lib/cannery_web/live/ammo_group_live/index.ex:253 #: lib/cannery_web/live/ammo_group_live/index.ex:253
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Move ammo" msgid "Move ammo"
@ -613,7 +585,7 @@ msgstr ""
msgid "Shot log" msgid "Shot log"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:59 #: lib/cannery_web/components/ammo_group_card.ex:63
#: lib/cannery_web/live/ammo_group_live/index.ex:145 #: lib/cannery_web/live/ammo_group_live/index.ex:145
#: lib/cannery_web/live/ammo_group_live/show.html.heex:37 #: lib/cannery_web/live/ammo_group_live/show.html.heex:37
#: lib/cannery_web/live/ammo_group_live/show.html.heex:44 #: lib/cannery_web/live/ammo_group_live/show.html.heex:44
@ -718,7 +690,7 @@ msgstr ""
msgid "Edit %{name} tags" msgid "Edit %{name} tags"
msgstr "" msgstr ""
#: lib/cannery_web/components/container_card.ex:54 #: lib/cannery_web/components/container_card.ex:63
#: lib/cannery_web/live/container_live/show.html.heex:32 #: lib/cannery_web/live/container_live/show.html.heex:32
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Rounds:" msgid "Rounds:"
@ -826,14 +798,14 @@ msgstr ""
msgid "Added on" msgid "Added on"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:45 #: lib/cannery_web/components/ammo_group_card.ex:49
#: lib/cannery_web/live/ammo_group_live/show.html.heex:30 #: lib/cannery_web/live/ammo_group_live/show.html.heex:30
#: lib/cannery_web/live/ammo_type_live/show.html.heex:97 #: lib/cannery_web/live/ammo_type_live/show.html.heex:97
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Added on:" msgid "Added on:"
msgstr "" msgstr ""
#: lib/cannery_web/components/user_card.ex:30 #: lib/cannery_web/components/user_card.ex:34
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "User registered on" msgid "User registered on"
msgstr "" msgstr ""
@ -912,7 +884,7 @@ msgstr ""
msgid "This ammo is not in a container" msgid "This ammo is not in a container"
msgstr "" msgstr ""
#: lib/cannery_web/components/container_card.ex:49 #: lib/cannery_web/components/container_card.ex:58
#: lib/cannery_web/live/container_live/show.html.heex:27 #: lib/cannery_web/live/container_live/show.html.heex:27
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Packs:" msgid "Packs:"
@ -939,14 +911,13 @@ msgstr ""
msgid "Total # of ammo" msgid "Total # of ammo"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:67 #: lib/cannery_web/components/ammo_group_card.ex:71
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Container:" msgid "Container:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:48 #: lib/cannery_web/live/ammo_group_live/index.html.heex:48
#: lib/cannery_web/live/ammo_type_live/show.html.heex:126 #: lib/cannery_web/live/ammo_type_live/show.html.heex:126
#: lib/cannery_web/live/container_live/show.html.heex:97
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Show used" msgid "Show used"
msgstr "" msgstr ""
@ -956,7 +927,7 @@ msgstr ""
msgid "Used up on" msgid "Used up on"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:51 #: lib/cannery_web/components/ammo_group_card.ex:55
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Used up on:" msgid "Used up on:"
msgstr "" msgstr ""
@ -966,3 +937,28 @@ msgstr ""
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "%{percentage}%" msgid "%{percentage}%"
msgstr "" 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
#, elixir-autogen, elixir-format, fuzzy
msgid "Rounds shot: %{count}"
msgstr ""

View File

@ -199,3 +199,8 @@ msgstr ""
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Please select a valid user and ammo group" msgid "Please select a valid user and ammo group"
msgstr "" msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:67
#, elixir-autogen, elixir-format
msgid "Your browser does not support the canvas element."
msgstr ""

View File

@ -212,7 +212,7 @@ msgid "Are you sure you want to unstage this ammo?"
msgstr "Está seguro que desea desmontar esta munición?" msgstr "Está seguro que desea desmontar esta munición?"
#: lib/cannery_web/live/ammo_group_live/show.ex:132 #: lib/cannery_web/live/ammo_group_live/show.ex:132
#: lib/cannery_web/live/range_live/index.ex:131 #: lib/cannery_web/live/range_live/index.ex:181
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this shot record?" msgid "Are you sure you want to delete this shot record?"
msgstr "" msgstr ""

View File

@ -224,3 +224,40 @@ msgstr "Voir en catalogue"
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "add an ammo type first" msgid "add an ammo type first"
msgstr "Ajoutez d'abord un type de munitions" msgstr "Ajoutez d'abord un type de munitions"
#: lib/cannery_web/live/invite_live/index.html.heex:60
#, elixir-autogen, elixir-format
msgid "Disable"
msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:64
#, elixir-autogen, elixir-format
msgid "Enable"
msgstr ""
#: lib/cannery_web/components/move_ammo_group_component.ex:80
#, elixir-autogen, elixir-format
msgid "Move ammo"
msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:80
#, elixir-autogen, elixir-format
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
msgid "Stage for range"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.html.heex:85
#: lib/cannery_web/live/range_live/index.html.heex:30
#, elixir-autogen, elixir-format
msgid "Unstage from range"
msgstr ""

View File

@ -143,7 +143,7 @@ msgstr "Corrosive"
msgid "Count" msgid "Count"
msgstr "Quantité" msgstr "Quantité"
#: lib/cannery_web/components/ammo_group_card.ex:33 #: lib/cannery_web/components/ammo_group_card.ex:37
#: lib/cannery_web/live/ammo_group_live/show.html.heex:8 #: lib/cannery_web/live/ammo_group_live/show.html.heex:8
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Count:" msgid "Count:"
@ -155,17 +155,12 @@ msgstr "Quantité:"
msgid "Description" msgid "Description"
msgstr "Description" msgstr "Description"
#: lib/cannery_web/components/container_card.ex:30 #: lib/cannery_web/components/container_card.ex:39
#: lib/cannery_web/live/container_live/show.html.heex:8 #: lib/cannery_web/live/container_live/show.html.heex:8
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Description:" msgid "Description:"
msgstr "Description:" msgstr "Description:"
#: lib/cannery_web/live/invite_live/index.html.heex:60
#, elixir-autogen, elixir-format
msgid "Disable"
msgstr "Désactiver"
#: lib/cannery_web/live/home_live.ex:61 #: lib/cannery_web/live/home_live.ex:61
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Easy to Use:" msgid "Easy to Use:"
@ -192,11 +187,6 @@ msgstr "Modifier linvitation"
msgid "Edit Tag" msgid "Edit Tag"
msgstr "Modifier le tag" msgstr "Modifier le tag"
#: lib/cannery_web/live/invite_live/index.html.heex:64
#, elixir-autogen, elixir-format
msgid "Enable"
msgstr "Activer"
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:35 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:35
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Example bullet type abbreviations" msgid "Example bullet type abbreviations"
@ -226,7 +216,7 @@ msgstr "Incendiaire"
msgid "Instance Information" msgid "Instance Information"
msgstr "Information de linstance" msgstr "Information de linstance"
#: lib/cannery_web/components/invite_card.ex:25 #: lib/cannery_web/components/invite_card.ex:32
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Invite Disabled" msgid "Invite Disabled"
msgstr "Invitation désactivée" msgstr "Invitation désactivée"
@ -254,7 +244,7 @@ msgstr "Me garder authentifié durant 60 jours"
msgid "Location" msgid "Location"
msgstr "Localisation" msgstr "Localisation"
#: lib/cannery_web/components/container_card.ex:42 #: lib/cannery_web/components/container_card.ex:51
#: lib/cannery_web/live/container_live/show.html.heex:20 #: lib/cannery_web/live/container_live/show.html.heex:20
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Location:" msgid "Location:"
@ -351,7 +341,7 @@ msgstr "Aucun tag"
msgid "Notes" msgid "Notes"
msgstr "Notes" msgstr "Notes"
#: lib/cannery_web/components/ammo_group_card.ex:39 #: lib/cannery_web/components/ammo_group_card.ex:43
#: lib/cannery_web/live/ammo_group_live/show.html.heex:24 #: lib/cannery_web/live/ammo_group_live/show.html.heex:24
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Notes:" msgid "Notes:"
@ -375,7 +365,7 @@ msgstr "Pression"
msgid "Price paid" msgid "Price paid"
msgstr "Prix payé" msgstr "Prix payé"
#: lib/cannery_web/components/ammo_group_card.ex:58 #: lib/cannery_web/components/ammo_group_card.ex:62
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Price paid:" msgid "Price paid:"
msgstr "Prix payé:" msgstr "Prix payé:"
@ -404,11 +394,6 @@ msgstr ""
"Auto-hébergez votre propre instance ou utilisez celle dune personne à " "Auto-hébergez votre propre instance ou utilisez celle dune personne à "
"laquelle vous faîtes confiance." "laquelle vous faîtes confiance."
#: lib/cannery_web/live/invite_live/index.html.heex:80
#, elixir-autogen, elixir-format
msgid "Set Unlimited"
msgstr "Mettre illimité"
#: lib/cannery_web/controllers/user_settings_controller.ex:10 #: lib/cannery_web/controllers/user_settings_controller.ex:10
#: lib/cannery_web/templates/user_settings/edit.html.heex:3 #: lib/cannery_web/templates/user_settings/edit.html.heex:3
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -472,7 +457,7 @@ msgstr "Traceuse"
msgid "Type" msgid "Type"
msgstr "Type" msgstr "Type"
#: lib/cannery_web/components/container_card.ex:36 #: lib/cannery_web/components/container_card.ex:45
#: lib/cannery_web/live/container_live/show.html.heex:14 #: lib/cannery_web/live/container_live/show.html.heex:14
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Type:" msgid "Type:"
@ -483,7 +468,7 @@ msgstr "Type:"
msgid "Users" msgid "Users"
msgstr "Utilisateurs" msgstr "Utilisateurs"
#: lib/cannery_web/components/invite_card.ex:20 #: lib/cannery_web/components/invite_card.ex:27
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Uses Left:" msgid "Uses Left:"
msgstr "Utilisations restantes:" msgstr "Utilisations restantes:"
@ -535,18 +520,6 @@ msgstr "Tirs réalisés"
msgid "No ammo staged" msgid "No ammo staged"
msgstr "Aucune munition sélectionnée" msgstr "Aucune munition sélectionnée"
#: 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
msgid "Stage for range"
msgstr "Sélectionné pour le stand"
#: lib/cannery_web/live/ammo_group_live/show.html.heex:85
#: lib/cannery_web/live/range_live/index.html.heex:30
#, elixir-autogen, elixir-format
msgid "Unstage from range"
msgstr "Désélectionner pour le stand"
#: lib/cannery_web/components/add_shot_group_component.html.heex:3 #: lib/cannery_web/components/add_shot_group_component.html.heex:3
#: lib/cannery_web/live/ammo_group_live/index.ex:26 #: lib/cannery_web/live/ammo_group_live/index.ex:26
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -601,7 +574,6 @@ msgstr "Enregistrements de tir"
msgid "Move Ammo group" msgid "Move Ammo group"
msgstr "Déplacer le groupe de munition" msgstr "Déplacer le groupe de munition"
#: lib/cannery_web/components/move_ammo_group_component.ex:80
#: lib/cannery_web/live/ammo_group_live/index.ex:253 #: lib/cannery_web/live/ammo_group_live/index.ex:253
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Move ammo" msgid "Move ammo"
@ -617,7 +589,7 @@ msgstr "Aucun autre conteneur"
msgid "Shot log" msgid "Shot log"
msgstr "Évènements de tir" msgstr "Évènements de tir"
#: lib/cannery_web/components/ammo_group_card.ex:59 #: lib/cannery_web/components/ammo_group_card.ex:63
#: lib/cannery_web/live/ammo_group_live/index.ex:145 #: lib/cannery_web/live/ammo_group_live/index.ex:145
#: lib/cannery_web/live/ammo_group_live/show.html.heex:37 #: lib/cannery_web/live/ammo_group_live/show.html.heex:37
#: lib/cannery_web/live/ammo_group_live/show.html.heex:44 #: lib/cannery_web/live/ammo_group_live/show.html.heex:44
@ -722,7 +694,7 @@ msgstr "Éditer %{name}"
msgid "Edit %{name} tags" msgid "Edit %{name} tags"
msgstr "Éditer les tags de %{name}" msgstr "Éditer les tags de %{name}"
#: lib/cannery_web/components/container_card.ex:54 #: lib/cannery_web/components/container_card.ex:63
#: lib/cannery_web/live/container_live/show.html.heex:32 #: lib/cannery_web/live/container_live/show.html.heex:32
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Rounds:" msgid "Rounds:"
@ -830,14 +802,14 @@ msgstr "Types de munition"
msgid "Added on" msgid "Added on"
msgstr "Ajouté le" msgstr "Ajouté le"
#: lib/cannery_web/components/ammo_group_card.ex:45 #: lib/cannery_web/components/ammo_group_card.ex:49
#: lib/cannery_web/live/ammo_group_live/show.html.heex:30 #: lib/cannery_web/live/ammo_group_live/show.html.heex:30
#: lib/cannery_web/live/ammo_type_live/show.html.heex:97 #: lib/cannery_web/live/ammo_type_live/show.html.heex:97
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Added on:" msgid "Added on:"
msgstr "Ajouté le:" msgstr "Ajouté le:"
#: lib/cannery_web/components/user_card.ex:30 #: lib/cannery_web/components/user_card.ex:34
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "User registered on" msgid "User registered on"
msgstr "Utilisateur·ice enregistré·e le" msgstr "Utilisateur·ice enregistré·e le"
@ -916,7 +888,7 @@ msgstr "Montrer le type de munition"
msgid "This ammo is not in a container" msgid "This ammo is not in a container"
msgstr "Ce groupe de munition nest pas dans un conteneur" msgstr "Ce groupe de munition nest pas dans un conteneur"
#: lib/cannery_web/components/container_card.ex:49 #: lib/cannery_web/components/container_card.ex:58
#: lib/cannery_web/live/container_live/show.html.heex:27 #: lib/cannery_web/live/container_live/show.html.heex:27
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Packs:" msgid "Packs:"
@ -944,14 +916,13 @@ msgstr ""
msgid "Total # of ammo" msgid "Total # of ammo"
msgstr "Quantité de cartouches" msgstr "Quantité de cartouches"
#: lib/cannery_web/components/ammo_group_card.ex:67 #: lib/cannery_web/components/ammo_group_card.ex:71
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Container:" msgid "Container:"
msgstr "Conteneur" msgstr "Conteneur"
#: lib/cannery_web/live/ammo_group_live/index.html.heex:48 #: lib/cannery_web/live/ammo_group_live/index.html.heex:48
#: lib/cannery_web/live/ammo_type_live/show.html.heex:126 #: lib/cannery_web/live/ammo_type_live/show.html.heex:126
#: lib/cannery_web/live/container_live/show.html.heex:97
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Show used" msgid "Show used"
msgstr "" msgstr ""
@ -961,7 +932,7 @@ msgstr ""
msgid "Used up on" msgid "Used up on"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:51 #: lib/cannery_web/components/ammo_group_card.ex:55
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Used up on:" msgid "Used up on:"
msgstr "" msgstr ""
@ -971,3 +942,28 @@ msgstr ""
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "%{percentage}%" msgid "%{percentage}%"
msgstr "" 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
#, elixir-autogen, elixir-format, fuzzy
msgid "Rounds shot: %{count}"
msgstr "Cartouches tirées"

View File

@ -200,3 +200,8 @@ msgstr "Veuillez choisir un type de munitions et un conteneur"
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Please select a valid user and ammo group" msgid "Please select a valid user and ammo group"
msgstr "Veuillez choisir un utilisateur valide et un groupe de munitions" msgstr "Veuillez choisir un utilisateur valide et un groupe de munitions"
#: lib/cannery_web/live/range_live/index.html.heex:67
#, elixir-autogen, elixir-format
msgid "Your browser does not support the canvas element."
msgstr ""

View File

@ -214,7 +214,7 @@ msgid "Are you sure you want to unstage this ammo?"
msgstr "Êtes-vous certain·e de vouloir désélectionner cette munition?" msgstr "Êtes-vous certain·e de vouloir désélectionner cette munition?"
#: lib/cannery_web/live/ammo_group_live/show.ex:132 #: lib/cannery_web/live/ammo_group_live/show.ex:132
#: lib/cannery_web/live/range_live/index.ex:131 #: lib/cannery_web/live/range_live/index.ex:181
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this shot record?" msgid "Are you sure you want to delete this shot record?"
msgstr "Êtes-vous certain·e de vouloir supprimer cet enregistrement de tir?" msgstr "Êtes-vous certain·e de vouloir supprimer cet enregistrement de tir?"

View File

@ -222,3 +222,40 @@ msgstr ""
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "add an ammo type first" msgid "add an ammo type first"
msgstr "" msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:60
#, elixir-autogen, elixir-format
msgid "Disable"
msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:64
#, elixir-autogen, elixir-format
msgid "Enable"
msgstr ""
#: lib/cannery_web/components/move_ammo_group_component.ex:80
#, elixir-autogen, elixir-format
msgid "Move ammo"
msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:80
#, elixir-autogen, elixir-format
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
msgid "Stage for range"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.html.heex:85
#: lib/cannery_web/live/range_live/index.html.heex:30
#, elixir-autogen, elixir-format
msgid "Unstage from range"
msgstr ""

View File

@ -139,7 +139,7 @@ msgstr ""
msgid "Count" msgid "Count"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:33 #: lib/cannery_web/components/ammo_group_card.ex:37
#: lib/cannery_web/live/ammo_group_live/show.html.heex:8 #: lib/cannery_web/live/ammo_group_live/show.html.heex:8
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Count:" msgid "Count:"
@ -151,17 +151,12 @@ msgstr ""
msgid "Description" msgid "Description"
msgstr "" msgstr ""
#: lib/cannery_web/components/container_card.ex:30 #: lib/cannery_web/components/container_card.ex:39
#: lib/cannery_web/live/container_live/show.html.heex:8 #: lib/cannery_web/live/container_live/show.html.heex:8
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Description:" msgid "Description:"
msgstr "" msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:60
#, elixir-autogen, elixir-format
msgid "Disable"
msgstr ""
#: lib/cannery_web/live/home_live.ex:61 #: lib/cannery_web/live/home_live.ex:61
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Easy to Use:" msgid "Easy to Use:"
@ -188,11 +183,6 @@ msgstr ""
msgid "Edit Tag" msgid "Edit Tag"
msgstr "" msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:64
#, elixir-autogen, elixir-format
msgid "Enable"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:35 #: lib/cannery_web/live/ammo_type_live/form_component.html.heex:35
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Example bullet type abbreviations" msgid "Example bullet type abbreviations"
@ -222,7 +212,7 @@ msgstr ""
msgid "Instance Information" msgid "Instance Information"
msgstr "" msgstr ""
#: lib/cannery_web/components/invite_card.ex:25 #: lib/cannery_web/components/invite_card.ex:32
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Invite Disabled" msgid "Invite Disabled"
msgstr "" msgstr ""
@ -250,7 +240,7 @@ msgstr ""
msgid "Location" msgid "Location"
msgstr "" msgstr ""
#: lib/cannery_web/components/container_card.ex:42 #: lib/cannery_web/components/container_card.ex:51
#: lib/cannery_web/live/container_live/show.html.heex:20 #: lib/cannery_web/live/container_live/show.html.heex:20
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Location:" msgid "Location:"
@ -347,7 +337,7 @@ msgstr ""
msgid "Notes" msgid "Notes"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:39 #: lib/cannery_web/components/ammo_group_card.ex:43
#: lib/cannery_web/live/ammo_group_live/show.html.heex:24 #: lib/cannery_web/live/ammo_group_live/show.html.heex:24
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Notes:" msgid "Notes:"
@ -371,7 +361,7 @@ msgstr ""
msgid "Price paid" msgid "Price paid"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:58 #: lib/cannery_web/components/ammo_group_card.ex:62
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Price paid:" msgid "Price paid:"
msgstr "" msgstr ""
@ -398,11 +388,6 @@ msgstr ""
msgid "Self-host your own instance, or use an instance from someone you trust." msgid "Self-host your own instance, or use an instance from someone you trust."
msgstr "" msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:80
#, elixir-autogen, elixir-format
msgid "Set Unlimited"
msgstr ""
#: lib/cannery_web/controllers/user_settings_controller.ex:10 #: lib/cannery_web/controllers/user_settings_controller.ex:10
#: lib/cannery_web/templates/user_settings/edit.html.heex:3 #: lib/cannery_web/templates/user_settings/edit.html.heex:3
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -464,7 +449,7 @@ msgstr ""
msgid "Type" msgid "Type"
msgstr "" msgstr ""
#: lib/cannery_web/components/container_card.ex:36 #: lib/cannery_web/components/container_card.ex:45
#: lib/cannery_web/live/container_live/show.html.heex:14 #: lib/cannery_web/live/container_live/show.html.heex:14
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Type:" msgid "Type:"
@ -475,7 +460,7 @@ msgstr ""
msgid "Users" msgid "Users"
msgstr "" msgstr ""
#: lib/cannery_web/components/invite_card.ex:20 #: lib/cannery_web/components/invite_card.ex:27
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Uses Left:" msgid "Uses Left:"
msgstr "" msgstr ""
@ -527,18 +512,6 @@ msgstr ""
msgid "No ammo staged" msgid "No ammo staged"
msgstr "" 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
msgid "Stage for range"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.html.heex:85
#: lib/cannery_web/live/range_live/index.html.heex:30
#, elixir-autogen, elixir-format
msgid "Unstage from range"
msgstr ""
#: lib/cannery_web/components/add_shot_group_component.html.heex:3 #: lib/cannery_web/components/add_shot_group_component.html.heex:3
#: lib/cannery_web/live/ammo_group_live/index.ex:26 #: lib/cannery_web/live/ammo_group_live/index.ex:26
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -593,7 +566,6 @@ msgstr ""
msgid "Move Ammo group" msgid "Move Ammo group"
msgstr "" msgstr ""
#: lib/cannery_web/components/move_ammo_group_component.ex:80
#: lib/cannery_web/live/ammo_group_live/index.ex:253 #: lib/cannery_web/live/ammo_group_live/index.ex:253
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Move ammo" msgid "Move ammo"
@ -609,7 +581,7 @@ msgstr ""
msgid "Shot log" msgid "Shot log"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:59 #: lib/cannery_web/components/ammo_group_card.ex:63
#: lib/cannery_web/live/ammo_group_live/index.ex:145 #: lib/cannery_web/live/ammo_group_live/index.ex:145
#: lib/cannery_web/live/ammo_group_live/show.html.heex:37 #: lib/cannery_web/live/ammo_group_live/show.html.heex:37
#: lib/cannery_web/live/ammo_group_live/show.html.heex:44 #: lib/cannery_web/live/ammo_group_live/show.html.heex:44
@ -714,7 +686,7 @@ msgstr ""
msgid "Edit %{name} tags" msgid "Edit %{name} tags"
msgstr "" msgstr ""
#: lib/cannery_web/components/container_card.ex:54 #: lib/cannery_web/components/container_card.ex:63
#: lib/cannery_web/live/container_live/show.html.heex:32 #: lib/cannery_web/live/container_live/show.html.heex:32
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Rounds:" msgid "Rounds:"
@ -822,14 +794,14 @@ msgstr ""
msgid "Added on" msgid "Added on"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:45 #: lib/cannery_web/components/ammo_group_card.ex:49
#: lib/cannery_web/live/ammo_group_live/show.html.heex:30 #: lib/cannery_web/live/ammo_group_live/show.html.heex:30
#: lib/cannery_web/live/ammo_type_live/show.html.heex:97 #: lib/cannery_web/live/ammo_type_live/show.html.heex:97
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Added on:" msgid "Added on:"
msgstr "" msgstr ""
#: lib/cannery_web/components/user_card.ex:30 #: lib/cannery_web/components/user_card.ex:34
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "User registered on" msgid "User registered on"
msgstr "" msgstr ""
@ -908,7 +880,7 @@ msgstr ""
msgid "This ammo is not in a container" msgid "This ammo is not in a container"
msgstr "" msgstr ""
#: lib/cannery_web/components/container_card.ex:49 #: lib/cannery_web/components/container_card.ex:58
#: lib/cannery_web/live/container_live/show.html.heex:27 #: lib/cannery_web/live/container_live/show.html.heex:27
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Packs:" msgid "Packs:"
@ -935,14 +907,13 @@ msgstr ""
msgid "Total # of ammo" msgid "Total # of ammo"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:67 #: lib/cannery_web/components/ammo_group_card.ex:71
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Container:" msgid "Container:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:48 #: lib/cannery_web/live/ammo_group_live/index.html.heex:48
#: lib/cannery_web/live/ammo_type_live/show.html.heex:126 #: lib/cannery_web/live/ammo_type_live/show.html.heex:126
#: lib/cannery_web/live/container_live/show.html.heex:97
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Show used" msgid "Show used"
msgstr "" msgstr ""
@ -952,7 +923,7 @@ msgstr ""
msgid "Used up on" msgid "Used up on"
msgstr "" msgstr ""
#: lib/cannery_web/components/ammo_group_card.ex:51 #: lib/cannery_web/components/ammo_group_card.ex:55
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Used up on:" msgid "Used up on:"
msgstr "" msgstr ""
@ -962,3 +933,28 @@ msgstr ""
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "%{percentage}%" msgid "%{percentage}%"
msgstr "" 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
#, elixir-autogen, elixir-format, fuzzy
msgid "Rounds shot: %{count}"
msgstr ""

View File

@ -199,3 +199,8 @@ msgstr ""
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Please select a valid user and ammo group" msgid "Please select a valid user and ammo group"
msgstr "" msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:67
#, elixir-autogen, elixir-format
msgid "Your browser does not support the canvas element."
msgstr ""

View File

@ -203,7 +203,7 @@ msgid "Are you sure you want to unstage this ammo?"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:132 #: lib/cannery_web/live/ammo_group_live/show.ex:132
#: lib/cannery_web/live/range_live/index.ex:131 #: lib/cannery_web/live/range_live/index.ex:181
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this shot record?" msgid "Are you sure you want to delete this shot record?"
msgstr "" msgstr ""

View File

@ -192,7 +192,7 @@ msgid "Are you sure you want to unstage this ammo?"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:132 #: lib/cannery_web/live/ammo_group_live/show.ex:132
#: lib/cannery_web/live/range_live/index.ex:131 #: lib/cannery_web/live/range_live/index.ex:181
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this shot record?" msgid "Are you sure you want to delete this shot record?"
msgstr "" msgstr ""

View File

@ -212,7 +212,7 @@ defmodule CanneryWeb.AmmoGroupLiveTest do
test "hides empty ammo groups by default", %{conn: conn, empty_ammo_group: ammo_group} do test "hides empty ammo groups by default", %{conn: conn, empty_ammo_group: ammo_group} do
{:ok, show_live, html} = live(conn, Routes.ammo_group_index_path(conn, :index)) {:ok, show_live, html} = live(conn, Routes.ammo_group_index_path(conn, :index))
assert html =~ gettext("Show used") assert html =~ dgettext("actions", "Show used")
refute html =~ gettext("$%{amount}", amount: 50.00 |> :erlang.float_to_binary(decimals: 2)) refute html =~ gettext("$%{amount}", amount: 50.00 |> :erlang.float_to_binary(decimals: 2))
refute html =~ refute html =~

View File

@ -48,13 +48,20 @@ defmodule CanneryWeb.AmmoTypeLiveTest do
%{ammo_type: ammo_type_fixture(@create_attrs, current_user)} %{ammo_type: ammo_type_fixture(@create_attrs, current_user)}
end end
defp create_ammo_group(%{ammo_type: ammo_type, current_user: current_user}) do
container = container_fixture(current_user)
{1, [ammo_group]} = ammo_group_fixture(@ammo_group_attrs, ammo_type, container, current_user)
%{ammo_group: ammo_group, container: container}
end
defp create_empty_ammo_group(%{ammo_type: ammo_type, current_user: current_user}) do defp create_empty_ammo_group(%{ammo_type: ammo_type, current_user: current_user}) do
container = container_fixture(current_user) container = container_fixture(current_user)
{1, [ammo_group]} = ammo_group_fixture(@ammo_group_attrs, ammo_type, container, 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) shot_group = shot_group_fixture(@shot_group_attrs, current_user, ammo_group)
ammo_group = ammo_group |> Repo.reload!() ammo_group = ammo_group |> Repo.reload!()
%{ammo_group: ammo_group, shot_group: shot_group} %{ammo_group: ammo_group, container: container, shot_group: shot_group}
end end
describe "Index" do describe "Index" do
@ -157,6 +164,18 @@ defmodule CanneryWeb.AmmoTypeLiveTest do
end end
end end
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
{:ok, _show_live, html} = live(conn, Routes.ammo_type_show_path(conn, :show, ammo_type))
assert html =~ gettext("Show Ammo type")
assert html =~ "some ammo group"
assert html =~ container.name
end
end
describe "Show ammo type with empty ammo group" do describe "Show ammo type with empty ammo group" do
setup [:register_and_log_in_user, :create_ammo_type, :create_empty_ammo_group] setup [:register_and_log_in_user, :create_ammo_type, :create_empty_ammo_group]
@ -164,7 +183,7 @@ defmodule CanneryWeb.AmmoTypeLiveTest do
%{conn: conn, ammo_type: ammo_type} do %{conn: conn, ammo_type: ammo_type} do
{:ok, show_live, html} = live(conn, Routes.ammo_type_show_path(conn, :show, ammo_type)) {:ok, show_live, html} = live(conn, Routes.ammo_type_show_path(conn, :show, ammo_type))
assert html =~ gettext("Show used") assert html =~ dgettext("actions", "Show used")
refute html =~ "some ammo group" refute html =~ "some ammo group"
html = show_live |> element("[data-qa=\"toggle_show_used\"]") |> render_click() html = show_live |> element("[data-qa=\"toggle_show_used\"]") |> render_click()

View File

@ -167,7 +167,7 @@ defmodule CanneryWeb.ContainerLiveTest do
%{conn: conn, container: container} do %{conn: conn, container: container} do
{:ok, show_live, html} = live(conn, Routes.container_show_path(conn, :show, container)) {:ok, show_live, html} = live(conn, Routes.container_show_path(conn, :show, container))
assert html =~ gettext("Show used") assert html =~ dgettext("actions", "Show used")
refute html =~ "some ammo group" refute html =~ "some ammo group"
html = show_live |> element("[data-qa=\"toggle_show_used\"]") |> render_click() html = show_live |> element("[data-qa=\"toggle_show_used\"]") |> render_click()