Files
WYGIWYH/app/templates/investments/fragments/_allocation.html
T
Herculino Trotta 7038ce8e18 feat(investments): asset classes with target allocation, charts and rebalance
- Asset classes (name, optional target %) managed under Management > Investments,
  chosen per account
- Charts tab: allocation by asset class and currency, value against invested,
  return by investment; off-target classes flagged by the 5/25 rule
- Rebalance tab: what to buy or sell per class to reach the targets
- Investment page: price against average cost with trades, monthly earnings
  and income
2026-11-08 02:26:40 -03:00

19 lines
1.2 KiB
HTML

{% load i18n %}
<div class="flex flex-col sm:flex-row items-center gap-5">
<div class="size-40 shrink-0"><canvas data-chart="{{ kind }}" aria-label="{% translate 'Allocation chart' %}" role="img"></canvas></div>
<ul class="w-full flex flex-col gap-2 text-sm">
{% for share in shares %}
<li class="flex items-center gap-2">
<span class="size-2.5 rounded-full shrink-0" style="background: {{ share.color }}"></span>
<span class="truncate">{{ share.name }}</span>
{% if share.plan.off %}
<i class="fa-solid fa-triangle-exclamation text-warning text-xs"
data-tippy-content="{% blocktranslate with share=share.plan.share|floatformat:1 target=share.plan.target|floatformat:'-2' %}{{ share }}% of your investments with a target, against a target of {{ target }}%{% endblocktranslate %}"></i>
{% endif %}
<span class="ms-auto tabular-nums text-base-content/60">{{ share.share|floatformat:1 }}%</span>
<span class="w-28 text-end tabular-nums whitespace-nowrap"><c-amount.display :amount="share.amount" :prefix="c.prefix" :suffix="c.suffix" :decimal_places="c.decimal_places" divless></c-amount.display></span>
</li>
{% endfor %}
</ul>
</div>