forked from shibao/cannery
fix ammo type table not displaying correct information
This commit is contained in:
parent
40e4f6fe0a
commit
ca81924ebe
@ -1,6 +1,7 @@
|
|||||||
# v0.8.6
|
# v0.8.6
|
||||||
- Fix duplicate entries showing up
|
- Fix duplicate entries showing up
|
||||||
- Show ammo groups under a type in a table by default
|
- Show ammo groups under a type in a table by default
|
||||||
|
- Only show historical ammo type information when displaying "Show used" in table
|
||||||
|
|
||||||
# v0.8.5
|
# v0.8.5
|
||||||
- Add link in readme to github mirror
|
- Add link in readme to github mirror
|
||||||
|
@ -103,13 +103,13 @@ defmodule CanneryWeb.Components.AmmoTypeTableComponent do
|
|||||||
[
|
[
|
||||||
%{
|
%{
|
||||||
label: gettext("Used packs"),
|
label: gettext("Used packs"),
|
||||||
key: :used_packs_count,
|
key: :used_pack_count,
|
||||||
type: :used_packs_count
|
type: :used_pack_count
|
||||||
},
|
},
|
||||||
%{
|
%{
|
||||||
label: gettext("Total ever packs"),
|
label: gettext("Total ever packs"),
|
||||||
key: :historical_packs_count,
|
key: :historical_pack_count,
|
||||||
type: :historical_packs_count
|
type: :historical_pack_count
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
else
|
else
|
||||||
@ -122,23 +122,21 @@ defmodule CanneryWeb.Components.AmmoTypeTableComponent do
|
|||||||
])
|
])
|
||||||
|
|
||||||
round_counts = ammo_types |> Ammo.get_round_count_for_ammo_types(current_user)
|
round_counts = ammo_types |> Ammo.get_round_count_for_ammo_types(current_user)
|
||||||
|
|
||||||
used_counts =
|
|
||||||
show_used && ammo_types |> ActivityLog.get_used_count_for_ammo_types(current_user)
|
|
||||||
|
|
||||||
historical_round_counts =
|
|
||||||
show_used && ammo_types |> Ammo.get_historical_count_for_ammo_types(current_user)
|
|
||||||
|
|
||||||
packs_count = ammo_types |> Ammo.get_ammo_groups_count_for_types(current_user)
|
packs_count = ammo_types |> Ammo.get_ammo_groups_count_for_types(current_user)
|
||||||
|
|
||||||
historical_packs_count =
|
|
||||||
show_used && ammo_types |> Ammo.get_ammo_groups_count_for_types(current_user, true)
|
|
||||||
|
|
||||||
used_packs_count =
|
|
||||||
show_used && ammo_types |> Ammo.get_used_ammo_groups_count_for_types(current_user)
|
|
||||||
|
|
||||||
average_costs = ammo_types |> Ammo.get_average_cost_for_ammo_types(current_user)
|
average_costs = ammo_types |> Ammo.get_average_cost_for_ammo_types(current_user)
|
||||||
|
|
||||||
|
[used_counts, historical_round_counts, historical_pack_counts, used_pack_counts] =
|
||||||
|
if show_used do
|
||||||
|
[
|
||||||
|
ammo_types |> ActivityLog.get_used_count_for_ammo_types(current_user),
|
||||||
|
ammo_types |> Ammo.get_historical_count_for_ammo_types(current_user),
|
||||||
|
ammo_types |> Ammo.get_ammo_groups_count_for_types(current_user, true),
|
||||||
|
ammo_types |> Ammo.get_used_ammo_groups_count_for_types(current_user)
|
||||||
|
]
|
||||||
|
else
|
||||||
|
[nil, nil, nil, nil]
|
||||||
|
end
|
||||||
|
|
||||||
extra_data = %{
|
extra_data = %{
|
||||||
actions: actions,
|
actions: actions,
|
||||||
current_user: current_user,
|
current_user: current_user,
|
||||||
@ -146,8 +144,8 @@ defmodule CanneryWeb.Components.AmmoTypeTableComponent do
|
|||||||
round_counts: round_counts,
|
round_counts: round_counts,
|
||||||
historical_round_counts: historical_round_counts,
|
historical_round_counts: historical_round_counts,
|
||||||
packs_count: packs_count,
|
packs_count: packs_count,
|
||||||
used_packs_count: used_packs_count,
|
used_pack_counts: used_pack_counts,
|
||||||
historical_packs_count: historical_packs_count,
|
historical_pack_counts: historical_pack_counts,
|
||||||
average_costs: average_costs
|
average_costs: average_costs
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -192,33 +190,46 @@ defmodule CanneryWeb.Components.AmmoTypeTableComponent do
|
|||||||
_key,
|
_key,
|
||||||
%{id: ammo_type_id},
|
%{id: ammo_type_id},
|
||||||
%{historical_round_counts: historical_round_counts}
|
%{historical_round_counts: historical_round_counts}
|
||||||
),
|
) do
|
||||||
do: Map.get(historical_round_counts, ammo_type_id)
|
Map.get(historical_round_counts, ammo_type_id)
|
||||||
|
end
|
||||||
defp get_ammo_type_value(:used_round_count, _key, %{id: ammo_type_id}, %{
|
|
||||||
used_counts: used_counts
|
|
||||||
}),
|
|
||||||
do: Map.get(used_counts, ammo_type_id)
|
|
||||||
|
|
||||||
defp get_ammo_type_value(
|
defp get_ammo_type_value(
|
||||||
:historical_packs_count,
|
:used_round_count,
|
||||||
_key,
|
_key,
|
||||||
%{id: ammo_type_id},
|
%{id: ammo_type_id},
|
||||||
%{historical_packs_count: historical_packs_count}
|
%{used_counts: used_counts}
|
||||||
),
|
) do
|
||||||
do: Map.get(historical_packs_count, ammo_type_id)
|
Map.get(used_counts, ammo_type_id)
|
||||||
|
end
|
||||||
|
|
||||||
defp get_ammo_type_value(:used_packs_count, _key, %{id: ammo_type_id}, %{
|
defp get_ammo_type_value(
|
||||||
used_packs_count: used_packs_count
|
:historical_pack_count,
|
||||||
}),
|
_key,
|
||||||
do: Map.get(used_packs_count, ammo_type_id)
|
%{id: ammo_type_id},
|
||||||
|
%{historical_pack_counts: historical_pack_counts}
|
||||||
|
) do
|
||||||
|
Map.get(historical_pack_counts, ammo_type_id)
|
||||||
|
end
|
||||||
|
|
||||||
|
defp get_ammo_type_value(
|
||||||
|
:used_pack_count,
|
||||||
|
_key,
|
||||||
|
%{id: ammo_type_id},
|
||||||
|
%{used_pack_counts: used_pack_counts}
|
||||||
|
) do
|
||||||
|
Map.get(used_pack_counts, ammo_type_id, 0)
|
||||||
|
end
|
||||||
|
|
||||||
defp get_ammo_type_value(:ammo_count, _key, %{id: ammo_type_id}, %{packs_count: packs_count}),
|
defp get_ammo_type_value(:ammo_count, _key, %{id: ammo_type_id}, %{packs_count: packs_count}),
|
||||||
do: Map.get(packs_count, ammo_type_id)
|
do: Map.get(packs_count, ammo_type_id)
|
||||||
|
|
||||||
defp get_ammo_type_value(:avg_price_paid, _key, %{id: ammo_type_id}, %{
|
defp get_ammo_type_value(
|
||||||
average_costs: average_costs
|
:avg_price_paid,
|
||||||
}) do
|
_key,
|
||||||
|
%{id: ammo_type_id},
|
||||||
|
%{average_costs: average_costs}
|
||||||
|
) do
|
||||||
case Map.get(average_costs, ammo_type_id) do
|
case Map.get(average_costs, ammo_type_id) do
|
||||||
nil -> gettext("No cost information")
|
nil -> gettext("No cost information")
|
||||||
count -> gettext("$%{amount}", amount: display_currency(count))
|
count -> gettext("$%{amount}", amount: display_currency(count))
|
||||||
|
@ -528,7 +528,7 @@ msgstr "Schießkladde"
|
|||||||
|
|
||||||
#: lib/cannery_web/components/ammo_group_table_component.ex:154
|
#: lib/cannery_web/components/ammo_group_table_component.ex:154
|
||||||
#: lib/cannery_web/components/ammo_group_table_component.ex:230
|
#: lib/cannery_web/components/ammo_group_table_component.ex:230
|
||||||
#: lib/cannery_web/components/ammo_type_table_component.ex:224
|
#: lib/cannery_web/components/ammo_type_table_component.ex:235
|
||||||
#: lib/cannery_web/components/core_components/ammo_group_card.html.heex:45
|
#: lib/cannery_web/components/core_components/ammo_group_card.html.heex:45
|
||||||
#: lib/cannery_web/components/core_components/ammo_group_card.html.heex:50
|
#: lib/cannery_web/components/core_components/ammo_group_card.html.heex:50
|
||||||
#: lib/cannery_web/live/ammo_group_live/show.html.heex:37
|
#: lib/cannery_web/live/ammo_group_live/show.html.heex:37
|
||||||
@ -622,7 +622,7 @@ msgid "Rounds:"
|
|||||||
msgstr "Patronen:"
|
msgstr "Patronen:"
|
||||||
|
|
||||||
#: lib/cannery_web/components/ammo_group_table_component.ex:227
|
#: lib/cannery_web/components/ammo_group_table_component.ex:227
|
||||||
#: lib/cannery_web/components/ammo_type_table_component.ex:223
|
#: lib/cannery_web/components/ammo_type_table_component.ex:234
|
||||||
#: lib/cannery_web/live/ammo_type_live/show.html.heex:139
|
#: lib/cannery_web/live/ammo_type_live/show.html.heex:139
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "No cost information"
|
msgid "No cost information"
|
||||||
|
@ -522,7 +522,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: lib/cannery_web/components/ammo_group_table_component.ex:154
|
#: lib/cannery_web/components/ammo_group_table_component.ex:154
|
||||||
#: lib/cannery_web/components/ammo_group_table_component.ex:230
|
#: lib/cannery_web/components/ammo_group_table_component.ex:230
|
||||||
#: lib/cannery_web/components/ammo_type_table_component.ex:224
|
#: lib/cannery_web/components/ammo_type_table_component.ex:235
|
||||||
#: lib/cannery_web/components/core_components/ammo_group_card.html.heex:45
|
#: lib/cannery_web/components/core_components/ammo_group_card.html.heex:45
|
||||||
#: lib/cannery_web/components/core_components/ammo_group_card.html.heex:50
|
#: lib/cannery_web/components/core_components/ammo_group_card.html.heex:50
|
||||||
#: lib/cannery_web/live/ammo_group_live/show.html.heex:37
|
#: lib/cannery_web/live/ammo_group_live/show.html.heex:37
|
||||||
@ -616,7 +616,7 @@ msgid "Rounds:"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/cannery_web/components/ammo_group_table_component.ex:227
|
#: lib/cannery_web/components/ammo_group_table_component.ex:227
|
||||||
#: lib/cannery_web/components/ammo_type_table_component.ex:223
|
#: lib/cannery_web/components/ammo_type_table_component.ex:234
|
||||||
#: lib/cannery_web/live/ammo_type_live/show.html.heex:139
|
#: lib/cannery_web/live/ammo_type_live/show.html.heex:139
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "No cost information"
|
msgid "No cost information"
|
||||||
|
@ -522,7 +522,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: lib/cannery_web/components/ammo_group_table_component.ex:154
|
#: lib/cannery_web/components/ammo_group_table_component.ex:154
|
||||||
#: lib/cannery_web/components/ammo_group_table_component.ex:230
|
#: lib/cannery_web/components/ammo_group_table_component.ex:230
|
||||||
#: lib/cannery_web/components/ammo_type_table_component.ex:224
|
#: lib/cannery_web/components/ammo_type_table_component.ex:235
|
||||||
#: lib/cannery_web/components/core_components/ammo_group_card.html.heex:45
|
#: lib/cannery_web/components/core_components/ammo_group_card.html.heex:45
|
||||||
#: lib/cannery_web/components/core_components/ammo_group_card.html.heex:50
|
#: lib/cannery_web/components/core_components/ammo_group_card.html.heex:50
|
||||||
#: lib/cannery_web/live/ammo_group_live/show.html.heex:37
|
#: lib/cannery_web/live/ammo_group_live/show.html.heex:37
|
||||||
@ -616,7 +616,7 @@ msgid "Rounds:"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/cannery_web/components/ammo_group_table_component.ex:227
|
#: lib/cannery_web/components/ammo_group_table_component.ex:227
|
||||||
#: lib/cannery_web/components/ammo_type_table_component.ex:223
|
#: lib/cannery_web/components/ammo_type_table_component.ex:234
|
||||||
#: lib/cannery_web/live/ammo_type_live/show.html.heex:139
|
#: lib/cannery_web/live/ammo_type_live/show.html.heex:139
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "No cost information"
|
msgid "No cost information"
|
||||||
|
@ -529,7 +529,7 @@ msgstr "Registro de tiros"
|
|||||||
|
|
||||||
#: lib/cannery_web/components/ammo_group_table_component.ex:154
|
#: lib/cannery_web/components/ammo_group_table_component.ex:154
|
||||||
#: lib/cannery_web/components/ammo_group_table_component.ex:230
|
#: lib/cannery_web/components/ammo_group_table_component.ex:230
|
||||||
#: lib/cannery_web/components/ammo_type_table_component.ex:224
|
#: lib/cannery_web/components/ammo_type_table_component.ex:235
|
||||||
#: lib/cannery_web/components/core_components/ammo_group_card.html.heex:45
|
#: lib/cannery_web/components/core_components/ammo_group_card.html.heex:45
|
||||||
#: lib/cannery_web/components/core_components/ammo_group_card.html.heex:50
|
#: lib/cannery_web/components/core_components/ammo_group_card.html.heex:50
|
||||||
#: lib/cannery_web/live/ammo_group_live/show.html.heex:37
|
#: lib/cannery_web/live/ammo_group_live/show.html.heex:37
|
||||||
@ -623,7 +623,7 @@ msgid "Rounds:"
|
|||||||
msgstr "Balas:"
|
msgstr "Balas:"
|
||||||
|
|
||||||
#: lib/cannery_web/components/ammo_group_table_component.ex:227
|
#: lib/cannery_web/components/ammo_group_table_component.ex:227
|
||||||
#: lib/cannery_web/components/ammo_type_table_component.ex:223
|
#: lib/cannery_web/components/ammo_type_table_component.ex:234
|
||||||
#: lib/cannery_web/live/ammo_type_live/show.html.heex:139
|
#: lib/cannery_web/live/ammo_type_live/show.html.heex:139
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "No cost information"
|
msgid "No cost information"
|
||||||
|
@ -530,7 +530,7 @@ msgstr "Évènements de tir"
|
|||||||
|
|
||||||
#: lib/cannery_web/components/ammo_group_table_component.ex:154
|
#: lib/cannery_web/components/ammo_group_table_component.ex:154
|
||||||
#: lib/cannery_web/components/ammo_group_table_component.ex:230
|
#: lib/cannery_web/components/ammo_group_table_component.ex:230
|
||||||
#: lib/cannery_web/components/ammo_type_table_component.ex:224
|
#: lib/cannery_web/components/ammo_type_table_component.ex:235
|
||||||
#: lib/cannery_web/components/core_components/ammo_group_card.html.heex:45
|
#: lib/cannery_web/components/core_components/ammo_group_card.html.heex:45
|
||||||
#: lib/cannery_web/components/core_components/ammo_group_card.html.heex:50
|
#: lib/cannery_web/components/core_components/ammo_group_card.html.heex:50
|
||||||
#: lib/cannery_web/live/ammo_group_live/show.html.heex:37
|
#: lib/cannery_web/live/ammo_group_live/show.html.heex:37
|
||||||
@ -624,7 +624,7 @@ msgid "Rounds:"
|
|||||||
msgstr "Cartouches :"
|
msgstr "Cartouches :"
|
||||||
|
|
||||||
#: lib/cannery_web/components/ammo_group_table_component.ex:227
|
#: lib/cannery_web/components/ammo_group_table_component.ex:227
|
||||||
#: lib/cannery_web/components/ammo_type_table_component.ex:223
|
#: lib/cannery_web/components/ammo_type_table_component.ex:234
|
||||||
#: lib/cannery_web/live/ammo_type_live/show.html.heex:139
|
#: lib/cannery_web/live/ammo_type_live/show.html.heex:139
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "No cost information"
|
msgid "No cost information"
|
||||||
|
@ -524,7 +524,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: lib/cannery_web/components/ammo_group_table_component.ex:154
|
#: lib/cannery_web/components/ammo_group_table_component.ex:154
|
||||||
#: lib/cannery_web/components/ammo_group_table_component.ex:230
|
#: lib/cannery_web/components/ammo_group_table_component.ex:230
|
||||||
#: lib/cannery_web/components/ammo_type_table_component.ex:224
|
#: lib/cannery_web/components/ammo_type_table_component.ex:235
|
||||||
#: lib/cannery_web/components/core_components/ammo_group_card.html.heex:45
|
#: lib/cannery_web/components/core_components/ammo_group_card.html.heex:45
|
||||||
#: lib/cannery_web/components/core_components/ammo_group_card.html.heex:50
|
#: lib/cannery_web/components/core_components/ammo_group_card.html.heex:50
|
||||||
#: lib/cannery_web/live/ammo_group_live/show.html.heex:37
|
#: lib/cannery_web/live/ammo_group_live/show.html.heex:37
|
||||||
@ -618,7 +618,7 @@ msgid "Rounds:"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: lib/cannery_web/components/ammo_group_table_component.ex:227
|
#: lib/cannery_web/components/ammo_group_table_component.ex:227
|
||||||
#: lib/cannery_web/components/ammo_type_table_component.ex:223
|
#: lib/cannery_web/components/ammo_type_table_component.ex:234
|
||||||
#: lib/cannery_web/live/ammo_type_live/show.html.heex:139
|
#: lib/cannery_web/live/ammo_type_live/show.html.heex:139
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "No cost information"
|
msgid "No cost information"
|
||||||
|
@ -230,9 +230,9 @@ defmodule CanneryWeb.AmmoTypeLiveTest do
|
|||||||
assert html =~ gettext("Used packs")
|
assert html =~ gettext("Used packs")
|
||||||
assert html =~ gettext("Total ever packs")
|
assert html =~ gettext("Total ever packs")
|
||||||
|
|
||||||
assert html =~ "20"
|
assert html =~ "\n20\n"
|
||||||
assert html =~ "0"
|
assert html =~ "\n0\n"
|
||||||
assert html =~ "1"
|
assert html =~ "\n1\n"
|
||||||
|
|
||||||
shot_group_fixture(%{"count" => 5}, current_user, ammo_group)
|
shot_group_fixture(%{"count" => 5}, current_user, ammo_group)
|
||||||
|
|
||||||
@ -243,8 +243,8 @@ defmodule CanneryWeb.AmmoTypeLiveTest do
|
|||||||
|> element(~s/input[type="checkbox"][aria-labelledby="toggle_show_used-label"}]/)
|
|> element(~s/input[type="checkbox"][aria-labelledby="toggle_show_used-label"}]/)
|
||||||
|> render_click()
|
|> render_click()
|
||||||
|
|
||||||
assert html =~ "15"
|
assert html =~ "\n15\n"
|
||||||
assert html =~ "5"
|
assert html =~ "\n5\n"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -297,7 +297,7 @@ defmodule CanneryWeb.AmmoTypeLiveTest do
|
|||||||
{:ok, _show_live, html} = live(conn, Routes.ammo_type_show_path(conn, :show, ammo_type))
|
{:ok, _show_live, html} = live(conn, Routes.ammo_type_show_path(conn, :show, ammo_type))
|
||||||
|
|
||||||
assert html =~ ammo_type_name
|
assert html =~ ammo_type_name
|
||||||
assert html =~ "some ammo group"
|
assert html =~ "\n20\n"
|
||||||
assert html =~ container_name
|
assert html =~ container_name
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -310,7 +310,7 @@ defmodule CanneryWeb.AmmoTypeLiveTest do
|
|||||||
|> element(~s/input[type="checkbox"][aria-labelledby="toggle_table-label"}]/)
|
|> element(~s/input[type="checkbox"][aria-labelledby="toggle_table-label"}]/)
|
||||||
|> render_click()
|
|> render_click()
|
||||||
|
|
||||||
assert html =~ "some ammo group"
|
assert html =~ "\n20\n"
|
||||||
assert html =~ container_name
|
assert html =~ container_name
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -323,14 +323,14 @@ defmodule CanneryWeb.AmmoTypeLiveTest do
|
|||||||
{:ok, show_live, html} = live(conn, Routes.ammo_type_show_path(conn, :show, ammo_type))
|
{:ok, show_live, html} = live(conn, Routes.ammo_type_show_path(conn, :show, ammo_type))
|
||||||
|
|
||||||
assert html =~ dgettext("actions", "Show used")
|
assert html =~ dgettext("actions", "Show used")
|
||||||
refute html =~ "some ammo group"
|
refute html =~ "\n20\n"
|
||||||
|
|
||||||
html =
|
html =
|
||||||
show_live
|
show_live
|
||||||
|> element(~s/input[type="checkbox"][aria-labelledby="toggle_show_used-label"}]/)
|
|> element(~s/input[type="checkbox"][aria-labelledby="toggle_show_used-label"}]/)
|
||||||
|> render_click()
|
|> render_click()
|
||||||
|
|
||||||
assert html =~ "some ammo group"
|
assert html =~ "\n20\n"
|
||||||
assert html =~ "Empty"
|
assert html =~ "Empty"
|
||||||
assert html =~ container_name
|
assert html =~ container_name
|
||||||
end
|
end
|
||||||
@ -345,14 +345,14 @@ defmodule CanneryWeb.AmmoTypeLiveTest do
|
|||||||
|> render_click()
|
|> render_click()
|
||||||
|
|
||||||
assert html =~ dgettext("actions", "Show used")
|
assert html =~ dgettext("actions", "Show used")
|
||||||
refute html =~ "some ammo group"
|
refute html =~ "\n20\n"
|
||||||
|
|
||||||
html =
|
html =
|
||||||
show_live
|
show_live
|
||||||
|> element(~s/input[type="checkbox"][aria-labelledby="toggle_show_used-label"}]/)
|
|> element(~s/input[type="checkbox"][aria-labelledby="toggle_show_used-label"}]/)
|
||||||
|> render_click()
|
|> render_click()
|
||||||
|
|
||||||
assert html =~ "some ammo group"
|
assert html =~ "\n20\n"
|
||||||
assert html =~ "Empty"
|
assert html =~ "Empty"
|
||||||
assert html =~ container_name
|
assert html =~ container_name
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user