fix ammo type table not displaying correct information

This commit is contained in:
shibao 2023-03-19 13:42:59 -04:00
parent 40e4f6fe0a
commit ca81924ebe
9 changed files with 73 additions and 61 deletions

View File

@ -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

View File

@ -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))

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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