mirror of
https://github.com/maybe-finance/maybe.git
synced 2025-08-02 20:15:22 +02:00
Refactor balance sheet weight calculation and improve group weight rendering
- Update BalanceSheet model to directly calculate account weights based on converted balances. - Modify dashboard view to compute account weight as a percentage of classification total, enhancing clarity. - Adjust group weight partial to handle effective weight, ensuring accurate rendering of weight representation.
This commit is contained in:
parent
fd65b5a747
commit
5cfb4addbd
3 changed files with 14 additions and 9 deletions
|
@ -60,7 +60,7 @@ class BalanceSheet
|
|||
|
||||
key = accountable.model_name.param_key
|
||||
|
||||
AccountGroup.new(
|
||||
group = AccountGroup.new(
|
||||
id: classification ? "#{classification}_#{key}_group" : "#{key}_group",
|
||||
key: key,
|
||||
name: accountable.display_name,
|
||||
|
@ -72,13 +72,11 @@ class BalanceSheet
|
|||
color: accountable.color,
|
||||
syncing?: accounts.any?(&:is_syncing),
|
||||
accounts: accounts.map do |account|
|
||||
account.define_singleton_method(:weight) do
|
||||
classification_total.zero? ? 0 : account.converted_balance / classification_total.to_d * 100
|
||||
end
|
||||
|
||||
account
|
||||
end.sort_by(&:weight).reverse
|
||||
end.sort_by(&:converted_balance).reverse
|
||||
)
|
||||
|
||||
group
|
||||
end
|
||||
|
||||
groups.sort_by do |group|
|
||||
|
|
|
@ -116,7 +116,12 @@
|
|||
<% else %>
|
||||
<div class="ml-auto flex items-center text-right gap-6">
|
||||
<div class="w-28 shrink-0 flex items-center justify-end gap-2">
|
||||
<%= render "pages/dashboard/group_weight", weight: account.weight, color: account_group.color %>
|
||||
<%
|
||||
# Calculate weight as percentage of classification total
|
||||
classification_total = classification_group.total_money.amount
|
||||
account_weight = classification_total.zero? ? 0 : account.converted_balance / classification_total * 100
|
||||
%>
|
||||
<%= render "pages/dashboard/group_weight", weight: account_weight, color: account_group.color %>
|
||||
</div>
|
||||
|
||||
<div class="w-40 shrink-0">
|
||||
|
|
|
@ -1,10 +1,12 @@
|
|||
<%# locals: (weight:, color:) %>
|
||||
|
||||
<% effective_weight = weight.presence || 0 %>
|
||||
|
||||
<div class="w-full flex items-center justify-between gap-2">
|
||||
<div class="flex gap-[3px]">
|
||||
<% 10.times do |i| %>
|
||||
<div class="w-0.5 h-2.5 rounded-lg <%= i < (weight / 10.0).ceil ? "" : "opacity-20" %>" style="background-color: <%= color %>;"></div>
|
||||
<div class="w-0.5 h-2.5 rounded-lg <%= i < (effective_weight / 10.0).ceil ? "" : "opacity-20" %>" style="background-color: <%= color %>;"></div>
|
||||
<% end %>
|
||||
</div>
|
||||
<p class="text-sm"><%= number_to_percentage(weight, precision: 2) %></p>
|
||||
<p class="text-sm"><%= number_to_percentage(effective_weight, precision: 2) %></p>
|
||||
</div>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue