From 39c2034ff66d8239f188a2a9091e6c5d33e550f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CSebastian?= <64795732+slegarraga@users.noreply.github.com> Date: Thu, 6 Aug 2026 07:02:37 -0400 Subject: [PATCH] fix: display cryptocurrency quantities with asset precision in holdings table --- .../holdings-table.component.html | 2 +- .../holdings-table.component.ts | 24 +++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/libs/ui/src/lib/holdings-table/holdings-table.component.html b/libs/ui/src/lib/holdings-table/holdings-table.component.html index e66dac725..6ffeb8442 100644 --- a/libs/ui/src/lib/holdings-table/holdings-table.component.html +++ b/libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -80,9 +80,9 @@ >
diff --git a/libs/ui/src/lib/holdings-table/holdings-table.component.ts b/libs/ui/src/lib/holdings-table/holdings-table.component.ts index 7fe21720e..8128c4dee 100644 --- a/libs/ui/src/lib/holdings-table/holdings-table.component.ts +++ b/libs/ui/src/lib/holdings-table/holdings-table.component.ts @@ -1,3 +1,4 @@ +import { NUMERICAL_PRECISION_THRESHOLD_6_FIGURES } from '@ghostfolio/common/config'; import { canOpenHoldingDetail, getLocale, @@ -7,6 +8,7 @@ import { AssetProfileIdentifier, PortfolioPosition } from '@ghostfolio/common/interfaces'; +import { AssetSubClass } from '@prisma/client'; import { CUSTOM_ELEMENTS_SCHEMA, @@ -103,6 +105,28 @@ export class GfHoldingsTableComponent { return this.hasPermissionToOpenDetails() && canOpenHoldingDetail(holding); } + protected getQuantityPrecision(holding: PortfolioPosition): number { + if (Number.isInteger(holding.quantity)) { + return 0; + } + + if (holding.assetProfile.assetSubClass === AssetSubClass.CRYPTOCURRENCY) { + if (holding.quantity < 10) { + return 8; + } + + if (holding.quantity < 1000) { + return 6; + } + + if (holding.quantity >= NUMERICAL_PRECISION_THRESHOLD_6_FIGURES) { + return 0; + } + } + + return 2; + } + protected onOpenHoldingDialog({ dataSource, symbol