forked from shibao/cannery
		
	use shot group table component instead
This commit is contained in:
		
							
								
								
									
										117
									
								
								lib/cannery_web/components/shot_group_table_component.ex
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										117
									
								
								lib/cannery_web/components/shot_group_table_component.ex
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,117 @@ | |||||||
|  | defmodule CanneryWeb.Components.ShotGroupTableComponent do | ||||||
|  |   @moduledoc """ | ||||||
|  |   A component that displays a list of shot groups | ||||||
|  |   """ | ||||||
|  |   use CanneryWeb, :live_component | ||||||
|  |   alias Cannery.{Accounts.User, ActivityLog.ShotGroup, Repo} | ||||||
|  |   alias Ecto.UUID | ||||||
|  |   alias Phoenix.LiveView.{Rendered, Socket} | ||||||
|  |  | ||||||
|  |   @impl true | ||||||
|  |   @spec update( | ||||||
|  |           %{ | ||||||
|  |             required(:id) => UUID.t(), | ||||||
|  |             required(:current_user) => User.t(), | ||||||
|  |             optional(:shot_groups) => [ShotGroup.t()], | ||||||
|  |             optional(:actions) => Rendered.t(), | ||||||
|  |             optional(any()) => any() | ||||||
|  |           }, | ||||||
|  |           Socket.t() | ||||||
|  |         ) :: {:ok, Socket.t()} | ||||||
|  |   def update(%{id: _id, shot_groups: _shot_groups, current_user: _current_user} = assigns, socket) do | ||||||
|  |     socket = | ||||||
|  |       socket | ||||||
|  |       |> assign(assigns) | ||||||
|  |       |> assign_new(:actions, fn -> [] end) | ||||||
|  |       |> display_shot_groups() | ||||||
|  |  | ||||||
|  |     {:ok, socket} | ||||||
|  |   end | ||||||
|  |  | ||||||
|  |   defp display_shot_groups( | ||||||
|  |          %{ | ||||||
|  |            assigns: %{ | ||||||
|  |              shot_groups: shot_groups, | ||||||
|  |              current_user: current_user, | ||||||
|  |              actions: actions | ||||||
|  |            } | ||||||
|  |          } = socket | ||||||
|  |        ) do | ||||||
|  |     columns = [ | ||||||
|  |       %{label: gettext("Ammo"), key: :name}, | ||||||
|  |       %{label: gettext("Rounds shot"), key: :count}, | ||||||
|  |       %{label: gettext("Notes"), key: :notes}, | ||||||
|  |       %{label: gettext("Date"), key: :date}, | ||||||
|  |       %{label: nil, key: :actions, sortable: false} | ||||||
|  |     ] | ||||||
|  |  | ||||||
|  |     extra_data = %{current_user: current_user, actions: actions} | ||||||
|  |  | ||||||
|  |     rows = | ||||||
|  |       shot_groups | ||||||
|  |       |> Enum.map(fn shot_group -> | ||||||
|  |         shot_group |> get_row_data_for_shot_group(columns, extra_data) | ||||||
|  |       end) | ||||||
|  |  | ||||||
|  |     socket | ||||||
|  |     |> assign( | ||||||
|  |       columns: columns, | ||||||
|  |       rows: rows | ||||||
|  |     ) | ||||||
|  |   end | ||||||
|  |  | ||||||
|  |   @impl true | ||||||
|  |   def render(assigns) do | ||||||
|  |     ~H""" | ||||||
|  |     <div id={@id} class="w-full"> | ||||||
|  |       <.live_component | ||||||
|  |         module={CanneryWeb.Components.TableComponent} | ||||||
|  |         id={"table-#{@id}"} | ||||||
|  |         columns={@columns} | ||||||
|  |         rows={@rows} | ||||||
|  |         initial_key={:date} | ||||||
|  |         initial_sort_mode={:desc} | ||||||
|  |       /> | ||||||
|  |     </div> | ||||||
|  |     """ | ||||||
|  |   end | ||||||
|  |  | ||||||
|  |   @spec get_row_data_for_shot_group(ShotGroup.t(), columns :: [map()], extra_data :: map()) :: | ||||||
|  |           map() | ||||||
|  |   defp get_row_data_for_shot_group(shot_group, columns, extra_data) do | ||||||
|  |     shot_group = shot_group |> Repo.preload(ammo_group: :ammo_type) | ||||||
|  |  | ||||||
|  |     columns | ||||||
|  |     |> Map.new(fn %{key: key} -> | ||||||
|  |       {key, get_row_value(key, shot_group, extra_data)} | ||||||
|  |     end) | ||||||
|  |   end | ||||||
|  |  | ||||||
|  |   defp get_row_value( | ||||||
|  |          :name, | ||||||
|  |          %{ammo_group: %{ammo_type: %{name: ammo_type_name} = ammo_group}}, | ||||||
|  |          _extra_data | ||||||
|  |        ) do | ||||||
|  |     assigns = %{ammo_group: ammo_group, ammo_type_name: ammo_type_name} | ||||||
|  |  | ||||||
|  |     name_block = ~H""" | ||||||
|  |     <.link navigate={Routes.ammo_group_show_path(Endpoint, :show, @ammo_group)} class="link"> | ||||||
|  |       <%= @ammo_type_name %> | ||||||
|  |     </.link> | ||||||
|  |     """ | ||||||
|  |  | ||||||
|  |     {ammo_type_name, name_block} | ||||||
|  |   end | ||||||
|  |  | ||||||
|  |   defp get_row_value(:date, %{date: date}, _extra_data), do: date |> display_date() | ||||||
|  |  | ||||||
|  |   defp get_row_value(:actions, shot_group, %{actions: actions}) do | ||||||
|  |     assigns = %{actions: actions, shot_group: shot_group} | ||||||
|  |  | ||||||
|  |     ~H""" | ||||||
|  |     <%= render_slot(@actions, @shot_group) %> | ||||||
|  |     """ | ||||||
|  |   end | ||||||
|  |  | ||||||
|  |   defp get_row_value(key, shot_group, _extra_data), do: shot_group |> Map.get(key) | ||||||
|  | end | ||||||
| @@ -112,26 +112,11 @@ defmodule CanneryWeb.RangeLive.Index do | |||||||
|       |> Repo.preload(ammo_group: :ammo_type) |       |> Repo.preload(ammo_group: :ammo_type) | ||||||
|  |  | ||||||
|     ammo_groups = Ammo.list_staged_ammo_groups(current_user) |     ammo_groups = Ammo.list_staged_ammo_groups(current_user) | ||||||
|  |  | ||||||
|     columns = [ |  | ||||||
|       %{label: gettext("Ammo"), key: :name}, |  | ||||||
|       %{label: gettext("Rounds shot"), key: :count}, |  | ||||||
|       %{label: gettext("Notes"), key: :notes}, |  | ||||||
|       %{label: gettext("Date"), key: :date}, |  | ||||||
|       %{label: nil, key: :actions, sortable: false} |  | ||||||
|     ] |  | ||||||
|  |  | ||||||
|     rows = |  | ||||||
|       shot_groups |  | ||||||
|       |> Enum.map(fn shot_group -> shot_group |> get_row_data_for_shot_group(columns) end) |  | ||||||
|  |  | ||||||
|     chart_data = shot_groups |> get_chart_data_for_shot_group() |     chart_data = shot_groups |> get_chart_data_for_shot_group() | ||||||
|  |  | ||||||
|     socket |     socket | ||||||
|     |> assign( |     |> assign( | ||||||
|       ammo_groups: ammo_groups, |       ammo_groups: ammo_groups, | ||||||
|       columns: columns, |  | ||||||
|       rows: rows, |  | ||||||
|       chart_data: chart_data, |       chart_data: chart_data, | ||||||
|       shot_groups: shot_groups |       shot_groups: shot_groups | ||||||
|     ) |     ) | ||||||
| @@ -153,59 +138,4 @@ defmodule CanneryWeb.RangeLive.Index do | |||||||
|     end) |     end) | ||||||
|     |> Enum.sort_by(fn %{date: date} -> date end, Date) |     |> Enum.sort_by(fn %{date: date} -> date end, Date) | ||||||
|   end |   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 |  | ||||||
|     shot_group = shot_group |> Repo.preload(ammo_group: :ammo_type) |  | ||||||
|     assigns = %{shot_group: shot_group} |  | ||||||
|  |  | ||||||
|     columns |  | ||||||
|     |> Map.new(fn %{key: key} -> |  | ||||||
|       value = |  | ||||||
|         case key do |  | ||||||
|           :name -> |  | ||||||
|             {shot_group.ammo_group.ammo_type.name, |  | ||||||
|              ~H""" |  | ||||||
|              <.link |  | ||||||
|                navigate={Routes.ammo_group_show_path(Endpoint, :show, @shot_group.ammo_group)} |  | ||||||
|                class="link" |  | ||||||
|              > |  | ||||||
|                <%= @shot_group.ammo_group.ammo_type.name %> |  | ||||||
|              </.link> |  | ||||||
|              """} |  | ||||||
|  |  | ||||||
|           :date -> |  | ||||||
|             date |> display_date() |  | ||||||
|  |  | ||||||
|           :actions -> |  | ||||||
|             ~H""" |  | ||||||
|             <div class="px-4 py-2 space-x-4 flex justify-center items-center"> |  | ||||||
|               <.link |  | ||||||
|                 patch={Routes.range_index_path(Endpoint, :edit, @shot_group)} |  | ||||||
|                 class="text-primary-600 link" |  | ||||||
|                 data-qa={"edit-#{@shot_group.id}"} |  | ||||||
|               > |  | ||||||
|                 <i class="fa-fw fa-lg fas fa-edit"></i> |  | ||||||
|               </.link> |  | ||||||
|  |  | ||||||
|               <.link |  | ||||||
|                 href="#" |  | ||||||
|                 class="text-primary-600 link" |  | ||||||
|                 phx-click="delete" |  | ||||||
|                 phx-value-id={@shot_group.id} |  | ||||||
|                 data-confirm={dgettext("prompts", "Are you sure you want to delete this shot record?")} |  | ||||||
|                 data-qa={"delete-#{@shot_group.id}"} |  | ||||||
|               > |  | ||||||
|                 <i class="fa-fw fa-lg fas fa-trash"></i> |  | ||||||
|               </.link> |  | ||||||
|             </div> |  | ||||||
|             """ |  | ||||||
|  |  | ||||||
|           key -> |  | ||||||
|             shot_group |> Map.get(key) |  | ||||||
|         end |  | ||||||
|  |  | ||||||
|       {key, value} |  | ||||||
|     end) |  | ||||||
|   end |  | ||||||
| end | end | ||||||
|   | |||||||
| @@ -92,13 +92,36 @@ | |||||||
|       </h1> |       </h1> | ||||||
|     <% else %> |     <% else %> | ||||||
|       <.live_component |       <.live_component | ||||||
|         module={CanneryWeb.Components.TableComponent} |         module={CanneryWeb.Components.ShotGroupTableComponent} | ||||||
|         id="shot_groups_index_table" |         id="shot_groups_index_table" | ||||||
|         columns={@columns} |         shot_groups={@shot_groups} | ||||||
|         rows={@rows} |         current_user={@current_user} | ||||||
|         initial_key={:date} |       > | ||||||
|         initial_sort_mode={:desc} |         <:actions :let={shot_group}> | ||||||
|       /> |           <div class="px-4 py-2 space-x-4 flex justify-center items-center"> | ||||||
|  |             <.link | ||||||
|  |               patch={Routes.range_index_path(Endpoint, :edit, shot_group)} | ||||||
|  |               class="text-primary-600 link" | ||||||
|  |               data-qa={"edit-#{shot_group.id}"} | ||||||
|  |             > | ||||||
|  |               <i class="fa-fw fa-lg fas fa-edit"></i> | ||||||
|  |             </.link> | ||||||
|  |  | ||||||
|  |             <.link | ||||||
|  |               href="#" | ||||||
|  |               class="text-primary-600 link" | ||||||
|  |               phx-click="delete" | ||||||
|  |               phx-value-id={shot_group.id} | ||||||
|  |               data-confirm={ | ||||||
|  |                 dgettext("prompts", "Are you sure you want to delete this shot record?") | ||||||
|  |               } | ||||||
|  |               data-qa={"delete-#{shot_group.id}"} | ||||||
|  |             > | ||||||
|  |               <i class="fa-fw fa-lg fas fa-trash"></i> | ||||||
|  |             </.link> | ||||||
|  |           </div> | ||||||
|  |         </:actions> | ||||||
|  |       </.live_component> | ||||||
|     <% end %> |     <% end %> | ||||||
|   <% end %> |   <% end %> | ||||||
| </div> | </div> | ||||||
|   | |||||||
| @@ -45,11 +45,11 @@ msgstr "Admins" | |||||||
| msgid "Admins:" | msgid "Admins:" | ||||||
| msgstr "Admins:" | msgstr "Admins:" | ||||||
|  |  | ||||||
|  | #: lib/cannery_web/components/shot_group_table_component.ex:41 | ||||||
| #: lib/cannery_web/components/topbar.ex:73 | #: lib/cannery_web/components/topbar.ex:73 | ||||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:70 | #: lib/cannery_web/live/ammo_group_live/index.ex:70 | ||||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:79 | #: lib/cannery_web/live/ammo_group_live/index.ex:79 | ||||||
| #: lib/cannery_web/live/ammo_group_live/index.html.heex:3 | #: lib/cannery_web/live/ammo_group_live/index.html.heex:3 | ||||||
| #: lib/cannery_web/live/range_live/index.ex:117 |  | ||||||
| #, elixir-autogen, elixir-format | #, elixir-autogen, elixir-format | ||||||
| msgid "Ammo" | msgid "Ammo" | ||||||
| msgstr "Munition" | msgstr "Munition" | ||||||
| @@ -313,10 +313,10 @@ msgstr "Keine Tags" | |||||||
|  |  | ||||||
| #: lib/cannery_web/components/add_shot_group_component.html.heex:37 | #: lib/cannery_web/components/add_shot_group_component.html.heex:37 | ||||||
| #: lib/cannery_web/components/ammo_group_table_component.ex:81 | #: lib/cannery_web/components/ammo_group_table_component.ex:81 | ||||||
|  | #: lib/cannery_web/components/shot_group_table_component.ex:43 | ||||||
| #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:49 | #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:49 | ||||||
| #: lib/cannery_web/live/ammo_group_live/show.ex:93 | #: lib/cannery_web/live/ammo_group_live/show.ex:93 | ||||||
| #: lib/cannery_web/live/range_live/form_component.html.heex:29 | #: lib/cannery_web/live/range_live/form_component.html.heex:29 | ||||||
| #: lib/cannery_web/live/range_live/index.ex:119 |  | ||||||
| #, elixir-autogen, elixir-format | #, elixir-autogen, elixir-format | ||||||
| msgid "Notes" | msgid "Notes" | ||||||
| msgstr "Bemerkungen" | msgstr "Bemerkungen" | ||||||
| @@ -478,9 +478,9 @@ msgid "Range day" | |||||||
| msgstr "Range Day" | msgstr "Range Day" | ||||||
|  |  | ||||||
| #: lib/cannery_web/components/add_shot_group_component.html.heex:45 | #: lib/cannery_web/components/add_shot_group_component.html.heex:45 | ||||||
|  | #: lib/cannery_web/components/shot_group_table_component.ex:44 | ||||||
| #: lib/cannery_web/live/ammo_group_live/show.ex:94 | #: lib/cannery_web/live/ammo_group_live/show.ex:94 | ||||||
| #: lib/cannery_web/live/range_live/form_component.html.heex:36 | #: lib/cannery_web/live/range_live/form_component.html.heex:36 | ||||||
| #: lib/cannery_web/live/range_live/index.ex:120 |  | ||||||
| #, elixir-autogen, elixir-format | #, elixir-autogen, elixir-format | ||||||
| msgid "Date" | msgid "Date" | ||||||
| msgstr "Datum" | msgstr "Datum" | ||||||
| @@ -524,8 +524,8 @@ msgstr "Keine Schüsse dokumentiert" | |||||||
| msgid "Rounds left" | msgid "Rounds left" | ||||||
| msgstr "Patronen verbleibend" | msgstr "Patronen verbleibend" | ||||||
|  |  | ||||||
|  | #: lib/cannery_web/components/shot_group_table_component.ex:42 | ||||||
| #: lib/cannery_web/live/ammo_group_live/show.ex:92 | #: lib/cannery_web/live/ammo_group_live/show.ex:92 | ||||||
| #: lib/cannery_web/live/range_live/index.ex:118 |  | ||||||
| #: lib/cannery_web/live/range_live/index.html.heex:62 | #: lib/cannery_web/live/range_live/index.html.heex:62 | ||||||
| #, elixir-autogen, elixir-format | #, elixir-autogen, elixir-format | ||||||
| msgid "Rounds shot" | msgid "Rounds shot" | ||||||
| @@ -862,7 +862,7 @@ msgstr "" | |||||||
| msgid "%{percentage}%" | msgid "%{percentage}%" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: lib/cannery_web/live/range_live/index.ex:151 | #: lib/cannery_web/live/range_live/index.ex:136 | ||||||
| #, elixir-autogen, elixir-format, fuzzy | #, elixir-autogen, elixir-format, fuzzy | ||||||
| msgid "Rounds shot: %{count}" | msgid "Rounds shot: %{count}" | ||||||
| msgstr "Patronen abgefeuert" | msgstr "Patronen abgefeuert" | ||||||
|   | |||||||
| @@ -209,7 +209,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:137 | #: lib/cannery_web/live/ammo_group_live/show.ex:137 | ||||||
| #: lib/cannery_web/live/range_live/index.ex:196 | #: lib/cannery_web/live/range_live/index.html.heex:116 | ||||||
| #, 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?" | ||||||
|   | |||||||
| @@ -30,11 +30,11 @@ msgstr "" | |||||||
| msgid "Admins:" | msgid "Admins:" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
|  | #: lib/cannery_web/components/shot_group_table_component.ex:41 | ||||||
| #: lib/cannery_web/components/topbar.ex:73 | #: lib/cannery_web/components/topbar.ex:73 | ||||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:70 | #: lib/cannery_web/live/ammo_group_live/index.ex:70 | ||||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:79 | #: lib/cannery_web/live/ammo_group_live/index.ex:79 | ||||||
| #: lib/cannery_web/live/ammo_group_live/index.html.heex:3 | #: lib/cannery_web/live/ammo_group_live/index.html.heex:3 | ||||||
| #: lib/cannery_web/live/range_live/index.ex:117 |  | ||||||
| #, elixir-autogen, elixir-format | #, elixir-autogen, elixir-format | ||||||
| msgid "Ammo" | msgid "Ammo" | ||||||
| msgstr "" | msgstr "" | ||||||
| @@ -298,10 +298,10 @@ msgstr "" | |||||||
|  |  | ||||||
| #: lib/cannery_web/components/add_shot_group_component.html.heex:37 | #: lib/cannery_web/components/add_shot_group_component.html.heex:37 | ||||||
| #: lib/cannery_web/components/ammo_group_table_component.ex:81 | #: lib/cannery_web/components/ammo_group_table_component.ex:81 | ||||||
|  | #: lib/cannery_web/components/shot_group_table_component.ex:43 | ||||||
| #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:49 | #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:49 | ||||||
| #: lib/cannery_web/live/ammo_group_live/show.ex:93 | #: lib/cannery_web/live/ammo_group_live/show.ex:93 | ||||||
| #: lib/cannery_web/live/range_live/form_component.html.heex:29 | #: lib/cannery_web/live/range_live/form_component.html.heex:29 | ||||||
| #: lib/cannery_web/live/range_live/index.ex:119 |  | ||||||
| #, elixir-autogen, elixir-format | #, elixir-autogen, elixir-format | ||||||
| msgid "Notes" | msgid "Notes" | ||||||
| msgstr "" | msgstr "" | ||||||
| @@ -461,9 +461,9 @@ msgid "Range day" | |||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: lib/cannery_web/components/add_shot_group_component.html.heex:45 | #: lib/cannery_web/components/add_shot_group_component.html.heex:45 | ||||||
|  | #: lib/cannery_web/components/shot_group_table_component.ex:44 | ||||||
| #: lib/cannery_web/live/ammo_group_live/show.ex:94 | #: lib/cannery_web/live/ammo_group_live/show.ex:94 | ||||||
| #: lib/cannery_web/live/range_live/form_component.html.heex:36 | #: lib/cannery_web/live/range_live/form_component.html.heex:36 | ||||||
| #: lib/cannery_web/live/range_live/index.ex:120 |  | ||||||
| #, elixir-autogen, elixir-format | #, elixir-autogen, elixir-format | ||||||
| msgid "Date" | msgid "Date" | ||||||
| msgstr "" | msgstr "" | ||||||
| @@ -507,8 +507,8 @@ msgstr "" | |||||||
| msgid "Rounds left" | msgid "Rounds left" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
|  | #: lib/cannery_web/components/shot_group_table_component.ex:42 | ||||||
| #: lib/cannery_web/live/ammo_group_live/show.ex:92 | #: lib/cannery_web/live/ammo_group_live/show.ex:92 | ||||||
| #: lib/cannery_web/live/range_live/index.ex:118 |  | ||||||
| #: lib/cannery_web/live/range_live/index.html.heex:62 | #: lib/cannery_web/live/range_live/index.html.heex:62 | ||||||
| #, elixir-autogen, elixir-format | #, elixir-autogen, elixir-format | ||||||
| msgid "Rounds shot" | msgid "Rounds shot" | ||||||
| @@ -845,7 +845,7 @@ msgstr "" | |||||||
| msgid "%{percentage}%" | msgid "%{percentage}%" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: lib/cannery_web/live/range_live/index.ex:151 | #: lib/cannery_web/live/range_live/index.ex:136 | ||||||
| #, elixir-autogen, elixir-format | #, elixir-autogen, elixir-format | ||||||
| msgid "Rounds shot: %{count}" | msgid "Rounds shot: %{count}" | ||||||
| msgstr "" | msgstr "" | ||||||
|   | |||||||
| @@ -31,11 +31,11 @@ msgstr "" | |||||||
| msgid "Admins:" | msgid "Admins:" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
|  | #: lib/cannery_web/components/shot_group_table_component.ex:41 | ||||||
| #: lib/cannery_web/components/topbar.ex:73 | #: lib/cannery_web/components/topbar.ex:73 | ||||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:70 | #: lib/cannery_web/live/ammo_group_live/index.ex:70 | ||||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:79 | #: lib/cannery_web/live/ammo_group_live/index.ex:79 | ||||||
| #: lib/cannery_web/live/ammo_group_live/index.html.heex:3 | #: lib/cannery_web/live/ammo_group_live/index.html.heex:3 | ||||||
| #: lib/cannery_web/live/range_live/index.ex:117 |  | ||||||
| #, elixir-autogen, elixir-format | #, elixir-autogen, elixir-format | ||||||
| msgid "Ammo" | msgid "Ammo" | ||||||
| msgstr "" | msgstr "" | ||||||
| @@ -299,10 +299,10 @@ msgstr "" | |||||||
|  |  | ||||||
| #: lib/cannery_web/components/add_shot_group_component.html.heex:37 | #: lib/cannery_web/components/add_shot_group_component.html.heex:37 | ||||||
| #: lib/cannery_web/components/ammo_group_table_component.ex:81 | #: lib/cannery_web/components/ammo_group_table_component.ex:81 | ||||||
|  | #: lib/cannery_web/components/shot_group_table_component.ex:43 | ||||||
| #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:49 | #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:49 | ||||||
| #: lib/cannery_web/live/ammo_group_live/show.ex:93 | #: lib/cannery_web/live/ammo_group_live/show.ex:93 | ||||||
| #: lib/cannery_web/live/range_live/form_component.html.heex:29 | #: lib/cannery_web/live/range_live/form_component.html.heex:29 | ||||||
| #: lib/cannery_web/live/range_live/index.ex:119 |  | ||||||
| #, elixir-autogen, elixir-format | #, elixir-autogen, elixir-format | ||||||
| msgid "Notes" | msgid "Notes" | ||||||
| msgstr "" | msgstr "" | ||||||
| @@ -462,9 +462,9 @@ msgid "Range day" | |||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: lib/cannery_web/components/add_shot_group_component.html.heex:45 | #: lib/cannery_web/components/add_shot_group_component.html.heex:45 | ||||||
|  | #: lib/cannery_web/components/shot_group_table_component.ex:44 | ||||||
| #: lib/cannery_web/live/ammo_group_live/show.ex:94 | #: lib/cannery_web/live/ammo_group_live/show.ex:94 | ||||||
| #: lib/cannery_web/live/range_live/form_component.html.heex:36 | #: lib/cannery_web/live/range_live/form_component.html.heex:36 | ||||||
| #: lib/cannery_web/live/range_live/index.ex:120 |  | ||||||
| #, elixir-autogen, elixir-format | #, elixir-autogen, elixir-format | ||||||
| msgid "Date" | msgid "Date" | ||||||
| msgstr "" | msgstr "" | ||||||
| @@ -508,8 +508,8 @@ msgstr "" | |||||||
| msgid "Rounds left" | msgid "Rounds left" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
|  | #: lib/cannery_web/components/shot_group_table_component.ex:42 | ||||||
| #: lib/cannery_web/live/ammo_group_live/show.ex:92 | #: lib/cannery_web/live/ammo_group_live/show.ex:92 | ||||||
| #: lib/cannery_web/live/range_live/index.ex:118 |  | ||||||
| #: lib/cannery_web/live/range_live/index.html.heex:62 | #: lib/cannery_web/live/range_live/index.html.heex:62 | ||||||
| #, elixir-autogen, elixir-format | #, elixir-autogen, elixir-format | ||||||
| msgid "Rounds shot" | msgid "Rounds shot" | ||||||
| @@ -846,7 +846,7 @@ msgstr "" | |||||||
| msgid "%{percentage}%" | msgid "%{percentage}%" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: lib/cannery_web/live/range_live/index.ex:151 | #: lib/cannery_web/live/range_live/index.ex:136 | ||||||
| #, elixir-autogen, elixir-format, fuzzy | #, elixir-autogen, elixir-format, fuzzy | ||||||
| msgid "Rounds shot: %{count}" | msgid "Rounds shot: %{count}" | ||||||
| msgstr "" | msgstr "" | ||||||
|   | |||||||
| @@ -189,7 +189,7 @@ msgid "Are you sure you want to unstage this ammo?" | |||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: lib/cannery_web/live/ammo_group_live/show.ex:137 | #: lib/cannery_web/live/ammo_group_live/show.ex:137 | ||||||
| #: lib/cannery_web/live/range_live/index.ex:196 | #: lib/cannery_web/live/range_live/index.html.heex:116 | ||||||
| #, 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 "" | ||||||
|   | |||||||
| @@ -45,11 +45,11 @@ msgstr "" | |||||||
| msgid "Admins:" | msgid "Admins:" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
|  | #: lib/cannery_web/components/shot_group_table_component.ex:41 | ||||||
| #: lib/cannery_web/components/topbar.ex:73 | #: lib/cannery_web/components/topbar.ex:73 | ||||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:70 | #: lib/cannery_web/live/ammo_group_live/index.ex:70 | ||||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:79 | #: lib/cannery_web/live/ammo_group_live/index.ex:79 | ||||||
| #: lib/cannery_web/live/ammo_group_live/index.html.heex:3 | #: lib/cannery_web/live/ammo_group_live/index.html.heex:3 | ||||||
| #: lib/cannery_web/live/range_live/index.ex:117 |  | ||||||
| #, elixir-autogen, elixir-format | #, elixir-autogen, elixir-format | ||||||
| msgid "Ammo" | msgid "Ammo" | ||||||
| msgstr "" | msgstr "" | ||||||
| @@ -313,10 +313,10 @@ msgstr "" | |||||||
|  |  | ||||||
| #: lib/cannery_web/components/add_shot_group_component.html.heex:37 | #: lib/cannery_web/components/add_shot_group_component.html.heex:37 | ||||||
| #: lib/cannery_web/components/ammo_group_table_component.ex:81 | #: lib/cannery_web/components/ammo_group_table_component.ex:81 | ||||||
|  | #: lib/cannery_web/components/shot_group_table_component.ex:43 | ||||||
| #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:49 | #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:49 | ||||||
| #: lib/cannery_web/live/ammo_group_live/show.ex:93 | #: lib/cannery_web/live/ammo_group_live/show.ex:93 | ||||||
| #: lib/cannery_web/live/range_live/form_component.html.heex:29 | #: lib/cannery_web/live/range_live/form_component.html.heex:29 | ||||||
| #: lib/cannery_web/live/range_live/index.ex:119 |  | ||||||
| #, elixir-autogen, elixir-format | #, elixir-autogen, elixir-format | ||||||
| msgid "Notes" | msgid "Notes" | ||||||
| msgstr "" | msgstr "" | ||||||
| @@ -476,9 +476,9 @@ msgid "Range day" | |||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: lib/cannery_web/components/add_shot_group_component.html.heex:45 | #: lib/cannery_web/components/add_shot_group_component.html.heex:45 | ||||||
|  | #: lib/cannery_web/components/shot_group_table_component.ex:44 | ||||||
| #: lib/cannery_web/live/ammo_group_live/show.ex:94 | #: lib/cannery_web/live/ammo_group_live/show.ex:94 | ||||||
| #: lib/cannery_web/live/range_live/form_component.html.heex:36 | #: lib/cannery_web/live/range_live/form_component.html.heex:36 | ||||||
| #: lib/cannery_web/live/range_live/index.ex:120 |  | ||||||
| #, elixir-autogen, elixir-format | #, elixir-autogen, elixir-format | ||||||
| msgid "Date" | msgid "Date" | ||||||
| msgstr "" | msgstr "" | ||||||
| @@ -522,8 +522,8 @@ msgstr "" | |||||||
| msgid "Rounds left" | msgid "Rounds left" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
|  | #: lib/cannery_web/components/shot_group_table_component.ex:42 | ||||||
| #: lib/cannery_web/live/ammo_group_live/show.ex:92 | #: lib/cannery_web/live/ammo_group_live/show.ex:92 | ||||||
| #: lib/cannery_web/live/range_live/index.ex:118 |  | ||||||
| #: lib/cannery_web/live/range_live/index.html.heex:62 | #: lib/cannery_web/live/range_live/index.html.heex:62 | ||||||
| #, elixir-autogen, elixir-format | #, elixir-autogen, elixir-format | ||||||
| msgid "Rounds shot" | msgid "Rounds shot" | ||||||
| @@ -860,7 +860,7 @@ msgstr "" | |||||||
| msgid "%{percentage}%" | msgid "%{percentage}%" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: lib/cannery_web/live/range_live/index.ex:151 | #: lib/cannery_web/live/range_live/index.ex:136 | ||||||
| #, elixir-autogen, elixir-format, fuzzy | #, elixir-autogen, elixir-format, fuzzy | ||||||
| msgid "Rounds shot: %{count}" | msgid "Rounds shot: %{count}" | ||||||
| msgstr "" | msgstr "" | ||||||
|   | |||||||
| @@ -208,7 +208,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:137 | #: lib/cannery_web/live/ammo_group_live/show.ex:137 | ||||||
| #: lib/cannery_web/live/range_live/index.ex:196 | #: lib/cannery_web/live/range_live/index.html.heex:116 | ||||||
| #, 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 "" | ||||||
|   | |||||||
| @@ -45,11 +45,11 @@ msgstr "Administrateur·ices" | |||||||
| msgid "Admins:" | msgid "Admins:" | ||||||
| msgstr "Administrateur·ices :" | msgstr "Administrateur·ices :" | ||||||
|  |  | ||||||
|  | #: lib/cannery_web/components/shot_group_table_component.ex:41 | ||||||
| #: lib/cannery_web/components/topbar.ex:73 | #: lib/cannery_web/components/topbar.ex:73 | ||||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:70 | #: lib/cannery_web/live/ammo_group_live/index.ex:70 | ||||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:79 | #: lib/cannery_web/live/ammo_group_live/index.ex:79 | ||||||
| #: lib/cannery_web/live/ammo_group_live/index.html.heex:3 | #: lib/cannery_web/live/ammo_group_live/index.html.heex:3 | ||||||
| #: lib/cannery_web/live/range_live/index.ex:117 |  | ||||||
| #, elixir-autogen, elixir-format | #, elixir-autogen, elixir-format | ||||||
| msgid "Ammo" | msgid "Ammo" | ||||||
| msgstr "Munition" | msgstr "Munition" | ||||||
| @@ -313,10 +313,10 @@ msgstr "Aucun tag" | |||||||
|  |  | ||||||
| #: lib/cannery_web/components/add_shot_group_component.html.heex:37 | #: lib/cannery_web/components/add_shot_group_component.html.heex:37 | ||||||
| #: lib/cannery_web/components/ammo_group_table_component.ex:81 | #: lib/cannery_web/components/ammo_group_table_component.ex:81 | ||||||
|  | #: lib/cannery_web/components/shot_group_table_component.ex:43 | ||||||
| #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:49 | #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:49 | ||||||
| #: lib/cannery_web/live/ammo_group_live/show.ex:93 | #: lib/cannery_web/live/ammo_group_live/show.ex:93 | ||||||
| #: lib/cannery_web/live/range_live/form_component.html.heex:29 | #: lib/cannery_web/live/range_live/form_component.html.heex:29 | ||||||
| #: lib/cannery_web/live/range_live/index.ex:119 |  | ||||||
| #, elixir-autogen, elixir-format | #, elixir-autogen, elixir-format | ||||||
| msgid "Notes" | msgid "Notes" | ||||||
| msgstr "Notes" | msgstr "Notes" | ||||||
| @@ -480,9 +480,9 @@ msgid "Range day" | |||||||
| msgstr "Journée de stand" | msgstr "Journée de stand" | ||||||
|  |  | ||||||
| #: lib/cannery_web/components/add_shot_group_component.html.heex:45 | #: lib/cannery_web/components/add_shot_group_component.html.heex:45 | ||||||
|  | #: lib/cannery_web/components/shot_group_table_component.ex:44 | ||||||
| #: lib/cannery_web/live/ammo_group_live/show.ex:94 | #: lib/cannery_web/live/ammo_group_live/show.ex:94 | ||||||
| #: lib/cannery_web/live/range_live/form_component.html.heex:36 | #: lib/cannery_web/live/range_live/form_component.html.heex:36 | ||||||
| #: lib/cannery_web/live/range_live/index.ex:120 |  | ||||||
| #, elixir-autogen, elixir-format | #, elixir-autogen, elixir-format | ||||||
| msgid "Date" | msgid "Date" | ||||||
| msgstr "Date" | msgstr "Date" | ||||||
| @@ -526,8 +526,8 @@ msgstr "Aucun tir enregistré" | |||||||
| msgid "Rounds left" | msgid "Rounds left" | ||||||
| msgstr "Cartouches restantes" | msgstr "Cartouches restantes" | ||||||
|  |  | ||||||
|  | #: lib/cannery_web/components/shot_group_table_component.ex:42 | ||||||
| #: lib/cannery_web/live/ammo_group_live/show.ex:92 | #: lib/cannery_web/live/ammo_group_live/show.ex:92 | ||||||
| #: lib/cannery_web/live/range_live/index.ex:118 |  | ||||||
| #: lib/cannery_web/live/range_live/index.html.heex:62 | #: lib/cannery_web/live/range_live/index.html.heex:62 | ||||||
| #, elixir-autogen, elixir-format | #, elixir-autogen, elixir-format | ||||||
| msgid "Rounds shot" | msgid "Rounds shot" | ||||||
| @@ -865,7 +865,7 @@ msgstr "" | |||||||
| msgid "%{percentage}%" | msgid "%{percentage}%" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: lib/cannery_web/live/range_live/index.ex:151 | #: lib/cannery_web/live/range_live/index.ex:136 | ||||||
| #, elixir-autogen, elixir-format, fuzzy | #, elixir-autogen, elixir-format, fuzzy | ||||||
| msgid "Rounds shot: %{count}" | msgid "Rounds shot: %{count}" | ||||||
| msgstr "Cartouches tirées" | msgstr "Cartouches tirées" | ||||||
|   | |||||||
| @@ -210,7 +210,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:137 | #: lib/cannery_web/live/ammo_group_live/show.ex:137 | ||||||
| #: lib/cannery_web/live/range_live/index.ex:196 | #: lib/cannery_web/live/range_live/index.html.heex:116 | ||||||
| #, 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 ?" | ||||||
|   | |||||||
| @@ -41,11 +41,11 @@ msgstr "" | |||||||
| msgid "Admins:" | msgid "Admins:" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
|  | #: lib/cannery_web/components/shot_group_table_component.ex:41 | ||||||
| #: lib/cannery_web/components/topbar.ex:73 | #: lib/cannery_web/components/topbar.ex:73 | ||||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:70 | #: lib/cannery_web/live/ammo_group_live/index.ex:70 | ||||||
| #: lib/cannery_web/live/ammo_group_live/index.ex:79 | #: lib/cannery_web/live/ammo_group_live/index.ex:79 | ||||||
| #: lib/cannery_web/live/ammo_group_live/index.html.heex:3 | #: lib/cannery_web/live/ammo_group_live/index.html.heex:3 | ||||||
| #: lib/cannery_web/live/range_live/index.ex:117 |  | ||||||
| #, elixir-autogen, elixir-format | #, elixir-autogen, elixir-format | ||||||
| msgid "Ammo" | msgid "Ammo" | ||||||
| msgstr "" | msgstr "" | ||||||
| @@ -309,10 +309,10 @@ msgstr "" | |||||||
|  |  | ||||||
| #: lib/cannery_web/components/add_shot_group_component.html.heex:37 | #: lib/cannery_web/components/add_shot_group_component.html.heex:37 | ||||||
| #: lib/cannery_web/components/ammo_group_table_component.ex:81 | #: lib/cannery_web/components/ammo_group_table_component.ex:81 | ||||||
|  | #: lib/cannery_web/components/shot_group_table_component.ex:43 | ||||||
| #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:49 | #: lib/cannery_web/live/ammo_group_live/form_component.html.heex:49 | ||||||
| #: lib/cannery_web/live/ammo_group_live/show.ex:93 | #: lib/cannery_web/live/ammo_group_live/show.ex:93 | ||||||
| #: lib/cannery_web/live/range_live/form_component.html.heex:29 | #: lib/cannery_web/live/range_live/form_component.html.heex:29 | ||||||
| #: lib/cannery_web/live/range_live/index.ex:119 |  | ||||||
| #, elixir-autogen, elixir-format | #, elixir-autogen, elixir-format | ||||||
| msgid "Notes" | msgid "Notes" | ||||||
| msgstr "" | msgstr "" | ||||||
| @@ -472,9 +472,9 @@ msgid "Range day" | |||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: lib/cannery_web/components/add_shot_group_component.html.heex:45 | #: lib/cannery_web/components/add_shot_group_component.html.heex:45 | ||||||
|  | #: lib/cannery_web/components/shot_group_table_component.ex:44 | ||||||
| #: lib/cannery_web/live/ammo_group_live/show.ex:94 | #: lib/cannery_web/live/ammo_group_live/show.ex:94 | ||||||
| #: lib/cannery_web/live/range_live/form_component.html.heex:36 | #: lib/cannery_web/live/range_live/form_component.html.heex:36 | ||||||
| #: lib/cannery_web/live/range_live/index.ex:120 |  | ||||||
| #, elixir-autogen, elixir-format | #, elixir-autogen, elixir-format | ||||||
| msgid "Date" | msgid "Date" | ||||||
| msgstr "" | msgstr "" | ||||||
| @@ -518,8 +518,8 @@ msgstr "" | |||||||
| msgid "Rounds left" | msgid "Rounds left" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
|  | #: lib/cannery_web/components/shot_group_table_component.ex:42 | ||||||
| #: lib/cannery_web/live/ammo_group_live/show.ex:92 | #: lib/cannery_web/live/ammo_group_live/show.ex:92 | ||||||
| #: lib/cannery_web/live/range_live/index.ex:118 |  | ||||||
| #: lib/cannery_web/live/range_live/index.html.heex:62 | #: lib/cannery_web/live/range_live/index.html.heex:62 | ||||||
| #, elixir-autogen, elixir-format | #, elixir-autogen, elixir-format | ||||||
| msgid "Rounds shot" | msgid "Rounds shot" | ||||||
| @@ -856,7 +856,7 @@ msgstr "" | |||||||
| msgid "%{percentage}%" | msgid "%{percentage}%" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: lib/cannery_web/live/range_live/index.ex:151 | #: lib/cannery_web/live/range_live/index.ex:136 | ||||||
| #, elixir-autogen, elixir-format, fuzzy | #, elixir-autogen, elixir-format, fuzzy | ||||||
| msgid "Rounds shot: %{count}" | msgid "Rounds shot: %{count}" | ||||||
| msgstr "" | msgstr "" | ||||||
|   | |||||||
| @@ -199,7 +199,7 @@ msgid "Are you sure you want to unstage this ammo?" | |||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: lib/cannery_web/live/ammo_group_live/show.ex:137 | #: lib/cannery_web/live/ammo_group_live/show.ex:137 | ||||||
| #: lib/cannery_web/live/range_live/index.ex:196 | #: lib/cannery_web/live/range_live/index.html.heex:116 | ||||||
| #, 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 "" | ||||||
|   | |||||||
| @@ -188,7 +188,7 @@ msgid "Are you sure you want to unstage this ammo?" | |||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: lib/cannery_web/live/ammo_group_live/show.ex:137 | #: lib/cannery_web/live/ammo_group_live/show.ex:137 | ||||||
| #: lib/cannery_web/live/range_live/index.ex:196 | #: lib/cannery_web/live/range_live/index.html.heex:116 | ||||||
| #, 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 "" | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user