|
|
|
@ -454,30 +454,22 @@ export class AllocationsPageComponent implements OnDestroy, OnInit {
|
|
|
|
|
|
|
|
|
|
if (position.holdings.length > 0) {
|
|
|
|
|
for (const holding of position.holdings) {
|
|
|
|
|
const { name, valueInBaseCurrency } = holding;
|
|
|
|
|
|
|
|
|
|
if (
|
|
|
|
|
!this.hasImpersonationId &&
|
|
|
|
|
!this.user.settings.isRestrictedView
|
|
|
|
|
) {
|
|
|
|
|
if (this.topHoldingsMap[name]?.value) {
|
|
|
|
|
this.topHoldingsMap[name].value +=
|
|
|
|
|
valueInBaseCurrency *
|
|
|
|
|
(isNumber(position.valueInBaseCurrency)
|
|
|
|
|
? position.valueInBaseCurrency
|
|
|
|
|
: position.valueInPercentage);
|
|
|
|
|
} else {
|
|
|
|
|
this.topHoldingsMap[name] = {
|
|
|
|
|
name,
|
|
|
|
|
value:
|
|
|
|
|
valueInBaseCurrency *
|
|
|
|
|
(isNumber(position.valueInBaseCurrency)
|
|
|
|
|
? this.portfolioDetails.holdings[symbol]
|
|
|
|
|
.valueInBaseCurrency
|
|
|
|
|
: this.portfolioDetails.holdings[symbol]
|
|
|
|
|
.valueInPercentage)
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
const { allocationInPercentage, name, valueInBaseCurrency } =
|
|
|
|
|
holding;
|
|
|
|
|
|
|
|
|
|
if (this.topHoldingsMap[name]?.value) {
|
|
|
|
|
this.topHoldingsMap[name].value += isNumber(valueInBaseCurrency)
|
|
|
|
|
? valueInBaseCurrency
|
|
|
|
|
: allocationInPercentage *
|
|
|
|
|
this.portfolioDetails.holdings[symbol].valueInPercentage;
|
|
|
|
|
} else {
|
|
|
|
|
this.topHoldingsMap[name] = {
|
|
|
|
|
name,
|
|
|
|
|
value: isNumber(valueInBaseCurrency)
|
|
|
|
|
? valueInBaseCurrency
|
|
|
|
|
: allocationInPercentage *
|
|
|
|
|
this.portfolioDetails.holdings[symbol].valueInPercentage
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -562,6 +554,14 @@ export class AllocationsPageComponent implements OnDestroy, OnInit {
|
|
|
|
|
|
|
|
|
|
this.topHoldings = Object.values(this.topHoldingsMap)
|
|
|
|
|
.map(({ name, value }) => {
|
|
|
|
|
if (this.hasImpersonationId || this.user.settings.isRestrictedView) {
|
|
|
|
|
return {
|
|
|
|
|
name,
|
|
|
|
|
allocationInPercentage: value,
|
|
|
|
|
valueInBaseCurrency: null
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return {
|
|
|
|
|
name,
|
|
|
|
|
allocationInPercentage:
|
|
|
|
@ -570,7 +570,7 @@ export class AllocationsPageComponent implements OnDestroy, OnInit {
|
|
|
|
|
};
|
|
|
|
|
})
|
|
|
|
|
.sort((a, b) => {
|
|
|
|
|
return b.valueInBaseCurrency - a.valueInBaseCurrency;
|
|
|
|
|
return b.allocationInPercentage - a.allocationInPercentage;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
if (this.topHoldings.length > MAX_TOP_HOLDINGS) {
|
|
|
|
|