mirror of
https://github.com/maybe-finance/maybe.git
synced 2025-07-18 20:59:39 +02:00
* Remove ScrollFocusable * Consolidate and simplify account pages * Lint fixes * Fix tab param initialization * Remove stale files * Remove stale route, make accountable routes clearer
72 lines
1.4 KiB
Ruby
72 lines
1.4 KiB
Ruby
class UI::Account::Chart < ApplicationComponent
|
|
attr_reader :account
|
|
|
|
def initialize(account:, period: nil, view: nil)
|
|
@account = account
|
|
@period = period
|
|
@view = view
|
|
end
|
|
|
|
def period
|
|
@period ||= Period.last_30_days
|
|
end
|
|
|
|
def holdings_value_money
|
|
account.balance_money - account.cash_balance_money
|
|
end
|
|
|
|
def view_balance_money
|
|
case view
|
|
when "balance"
|
|
account.balance_money
|
|
when "holdings_balance"
|
|
holdings_value_money
|
|
when "cash_balance"
|
|
account.cash_balance_money
|
|
end
|
|
end
|
|
|
|
def title
|
|
case account.accountable_type
|
|
when "Investment", "Crypto"
|
|
case view
|
|
when "balance"
|
|
"Total account value"
|
|
when "holdings_balance"
|
|
"Holdings value"
|
|
when "cash_balance"
|
|
"Cash value"
|
|
end
|
|
when "Property", "Vehicle"
|
|
"Estimated #{account.accountable_type.humanize.downcase} value"
|
|
when "CreditCard", "OtherLiability"
|
|
"Debt balance"
|
|
when "Loan"
|
|
"Remaining principal balance"
|
|
else
|
|
"Balance"
|
|
end
|
|
end
|
|
|
|
def foreign_currency?
|
|
account.currency != account.family.currency
|
|
end
|
|
|
|
def converted_balance_money
|
|
return nil unless foreign_currency?
|
|
|
|
account.balance_money.exchange_to(account.family.currency, fallback_rate: 1)
|
|
end
|
|
|
|
def view
|
|
@view ||= "balance"
|
|
end
|
|
|
|
def series
|
|
account.balance_series(period: period, view: view)
|
|
end
|
|
|
|
def trend
|
|
series.trend
|
|
end
|
|
end
|