forked from shibao/cannery
add ammo type round totals and total rounds shot
This commit is contained in:
parent
dba53106fb
commit
a19ec682e6
@ -6,6 +6,7 @@
|
|||||||
- Fix ammo type firing type display
|
- Fix ammo type firing type display
|
||||||
- Show original count, current value, and percentage remaining for ammo groups
|
- Show original count, current value, and percentage remaining for ammo groups
|
||||||
- Show shot history for an ammo group
|
- Show shot history for an ammo group
|
||||||
|
- Show ammo round totals and total shot for ammo types
|
||||||
|
|
||||||
# 0.1.0
|
# 0.1.0
|
||||||
- Initial release!
|
- Initial release!
|
||||||
|
@ -67,6 +67,59 @@ defmodule Cannery.Ammo do
|
|||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@doc """
|
||||||
|
Gets the total number of rounds for an ammo type
|
||||||
|
|
||||||
|
Raises `Ecto.NoResultsError` if the Ammo type does not exist.
|
||||||
|
|
||||||
|
## Examples
|
||||||
|
|
||||||
|
iex> get_round_count_for_ammo_type(123, %User{id: 123})
|
||||||
|
%AmmoType{}
|
||||||
|
|
||||||
|
iex> get_round_count_for_ammo_type(456, %User{id: 123})
|
||||||
|
** (Ecto.NoResultsError)
|
||||||
|
|
||||||
|
"""
|
||||||
|
@spec get_round_count_for_ammo_type(AmmoType.t(), User.t()) :: non_neg_integer()
|
||||||
|
def get_round_count_for_ammo_type(
|
||||||
|
%AmmoType{id: ammo_type_id, user_id: user_id},
|
||||||
|
%User{id: user_id}
|
||||||
|
) do
|
||||||
|
Repo.one!(
|
||||||
|
from ag in AmmoGroup,
|
||||||
|
where: ag.ammo_type_id == ^ammo_type_id,
|
||||||
|
select: sum(ag.count)
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
@doc """
|
||||||
|
Gets the total number of rounds shot for an ammo type
|
||||||
|
|
||||||
|
Raises `Ecto.NoResultsError` if the Ammo type does not exist.
|
||||||
|
|
||||||
|
## Examples
|
||||||
|
|
||||||
|
iex> get_used_count_for_ammo_type(123, %User{id: 123})
|
||||||
|
%AmmoType{}
|
||||||
|
|
||||||
|
iex> get_used_count_for_ammo_type(456, %User{id: 123})
|
||||||
|
** (Ecto.NoResultsError)
|
||||||
|
|
||||||
|
"""
|
||||||
|
@spec get_used_count_for_ammo_type(AmmoType.t(), User.t()) :: non_neg_integer()
|
||||||
|
def get_used_count_for_ammo_type(
|
||||||
|
%AmmoType{id: ammo_type_id, user_id: user_id},
|
||||||
|
%User{id: user_id}
|
||||||
|
) do
|
||||||
|
Repo.one!(
|
||||||
|
from ag in AmmoGroup,
|
||||||
|
left_join: sg in assoc(ag, :shot_groups),
|
||||||
|
where: ag.ammo_type_id == ^ammo_type_id,
|
||||||
|
select: sum(sg.count)
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
@doc """
|
@doc """
|
||||||
Creates a ammo_type.
|
Creates a ammo_type.
|
||||||
|
|
||||||
|
@ -28,6 +28,9 @@
|
|||||||
<%= field_name %>
|
<%= field_name %>
|
||||||
</th>
|
</th>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
<th class="p-2">
|
||||||
|
<%= gettext("Total # of rounds") %>
|
||||||
|
</th>
|
||||||
|
|
||||||
<th class="p-2"></th>
|
<th class="p-2"></th>
|
||||||
</tr>
|
</tr>
|
||||||
@ -46,6 +49,10 @@
|
|||||||
</td>
|
</td>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
|
<td class="p-2">
|
||||||
|
<%= ammo_type |> Ammo.get_round_count_for_ammo_type(@current_user) %>
|
||||||
|
</td>
|
||||||
|
|
||||||
<td class="p-2">
|
<td class="p-2">
|
||||||
<div class="px-4 py-2 space-x-4 flex justify-center items-center">
|
<div class="px-4 py-2 space-x-4 flex justify-center items-center">
|
||||||
<%= live_redirect to: Routes.ammo_type_show_path(Endpoint, :show, ammo_type),
|
<%= live_redirect to: Routes.ammo_type_show_path(Endpoint, :show, ammo_type),
|
||||||
|
@ -73,6 +73,22 @@
|
|||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
|
<h3 class="title text-lg">
|
||||||
|
<%= gettext("Current # of rounds:") %>
|
||||||
|
</h3>
|
||||||
|
|
||||||
|
<span class="text-primary-600">
|
||||||
|
<%= @ammo_type |> Ammo.get_round_count_for_ammo_type(@current_user) %>
|
||||||
|
</span>
|
||||||
|
|
||||||
|
<h3 class="title text-lg">
|
||||||
|
<%= gettext("Total rounds shot:") %>
|
||||||
|
</h3>
|
||||||
|
|
||||||
|
<span class="text-primary-600">
|
||||||
|
<%= @ammo_type |> Ammo.get_used_count_for_ammo_type(@current_user) %>
|
||||||
|
</span>
|
||||||
|
|
||||||
<%= if @avg_cost_per_round do %>
|
<%= if @avg_cost_per_round do %>
|
||||||
<h3 class="title text-lg">
|
<h3 class="title text-lg">
|
||||||
<%= gettext("Average Price paid") %>:
|
<%= gettext("Average Price paid") %>:
|
||||||
|
Loading…
Reference in New Issue
Block a user