Browse Source

address pr comments

pull/4240/head
Shaunak Das 7 months ago
parent
commit
fbdaf8c6b3
  1. 26
      apps/api/src/app/portfolio/portfolio.service.ts
  2. 6
      apps/api/src/app/user/user.service.ts
  3. 10
      apps/api/src/models/rules/regional-market-cluster-risk/north-america.ts
  4. 24
      apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html
  5. 6
      apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.ts
  6. 1
      libs/common/src/lib/interfaces/x-ray-rules-settings.interface.ts

26
apps/api/src/app/portfolio/portfolio.service.ts

@ -1189,19 +1189,6 @@ export class PortfolioService {
).toNumber();
const rules: PortfolioReportResponse['rules'] = {
RegionalMarketClusterRiskNorthAmerica:
summary.ordersCount > 0
? await this.rulesService.evaluate(
[
new RegionalMarketClusterRiskNorthAmerica(
this.exchangeRateDataService,
marketsAdvancedTotalInBaseCurrency,
marketsAdvanced['northAmerica']
)
],
userSettings
)
: undefined,
accountClusterRisk:
summary.ordersCount > 0
? await this.rulesService.evaluate(
@ -1268,6 +1255,19 @@ export class PortfolioService {
userSettings
)
: undefined,
regionalMarketClusterRisk:
summary.ordersCount > 0
? await this.rulesService.evaluate(
[
new RegionalMarketClusterRiskNorthAmerica(
this.exchangeRateDataService,
marketsAdvancedTotalInBaseCurrency,
marketsAdvanced.northAmerica.valueInBaseCurrency
)
],
userSettings
)
: undefined,
emergencyFund: await this.rulesService.evaluate(
[
new EmergencyFundSetup(

6
apps/api/src/app/user/user.service.ts

@ -13,6 +13,7 @@ import { EconomicMarketClusterRiskDevelopedMarkets } from '@ghostfolio/api/model
import { EconomicMarketClusterRiskEmergingMarkets } from '@ghostfolio/api/models/rules/economic-market-cluster-risk/emerging-markets';
import { EmergencyFundSetup } from '@ghostfolio/api/models/rules/emergency-fund/emergency-fund-setup';
import { FeeRatioInitialInvestment } from '@ghostfolio/api/models/rules/fees/fee-ratio-initial-investment';
import { RegionalMarketClusterRiskNorthAmerica } from '@ghostfolio/api/models/rules/regional-market-cluster-risk/north-america';
import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service';
import { I18nService } from '@ghostfolio/api/services/i18n/i18n.service';
import { PrismaService } from '@ghostfolio/api/services/prisma/prisma.service';
@ -260,6 +261,11 @@ export class UserService {
undefined,
undefined
).getSettings(user.Settings.settings),
RegionalMarketClusterRisk: new RegionalMarketClusterRiskNorthAmerica(
undefined,
undefined,
undefined
).getSettings(user.Settings.settings),
EmergencyFundSetup: new EmergencyFundSetup(
undefined,
undefined

10
apps/api/src/models/rules/regional-market-cluster-risk/north-america.ts

@ -2,7 +2,6 @@ import { RuleSettings } from '@ghostfolio/api/models/interfaces/rule-settings.in
import { Rule } from '@ghostfolio/api/models/rule';
import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service';
import { UserSettings } from '@ghostfolio/common/interfaces';
import { MarketAdvanced } from '@ghostfolio/common/types';
export class RegionalMarketClusterRiskNorthAmerica extends Rule<Settings> {
private currentValueInBaseCurrency: number;
@ -11,19 +10,14 @@ export class RegionalMarketClusterRiskNorthAmerica extends Rule<Settings> {
public constructor(
protected exchangeRateDataService: ExchangeRateDataService,
currentValueInBaseCurrency: number,
marketsAdvanced: {
id: MarketAdvanced;
valueInBaseCurrency?: number;
valueInPercentage: number;
}
valueInBaseCurrency
) {
super(exchangeRateDataService, {
key: RegionalMarketClusterRiskNorthAmerica.name,
name: 'Regional Markets'
});
this.currentValueInBaseCurrency = currentValueInBaseCurrency;
this.regionalMarketNorthAmericaValueInBaseCurrency =
marketsAdvanced.valueInBaseCurrency;
this.regionalMarketNorthAmericaValueInBaseCurrency = valueInBaseCurrency;
}
public evaluate(ruleSettings: Settings) {

24
apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html

@ -144,6 +144,30 @@
(rulesUpdated)="onRulesUpdated($event)"
/>
</div>
<div
class="mb-4"
[ngClass]="{
'd-none': regionalMarketClusterRiskRules?.length === 0
}"
>
<h4 class="align-items-center d-flex m-0">
<span i18n>Regional Market Cluster Risks</span>
@if (user?.subscription?.type === 'Basic') {
<gf-premium-indicator class="ml-1" />
}
</h4>
<gf-rules
[hasPermissionToUpdateUserSettings]="
!hasImpersonationId &&
hasPermissionToUpdateUserSettings &&
user?.settings?.isExperimentalFeatures
"
[isLoading]="isLoading"
[rules]="regionalMarketClusterRiskRules"
[settings]="user?.settings?.xRayRules"
(rulesUpdated)="onRulesUpdated($event)"
/>
</div>
<div
class="mb-4"
[ngClass]="{

6
apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.ts

@ -29,6 +29,7 @@ export class XRayPageComponent {
public hasPermissionToUpdateUserSettings: boolean;
public inactiveRules: PortfolioReportRule[];
public isLoading = false;
public regionalMarketClusterRiskRules: PortfolioReportRule[];
public statistics: PortfolioReportResponse['statistics'];
public user: User;
@ -129,6 +130,11 @@ export class XRayPageComponent {
return isActive;
}) ?? null;
this.regionalMarketClusterRiskRules =
rules['regionalMarketClusterRisk']?.filter(({ isActive }) => {
return isActive;
}) ?? null;
this.isLoading = false;
this.changeDetectorRef.markForCheck();

1
libs/common/src/lib/interfaces/x-ray-rules-settings.interface.ts

@ -7,6 +7,7 @@ export interface XRayRulesSettings {
CurrencyClusterRiskCurrentInvestment?: RuleSettings;
EconomicMarketClusterRiskDevelopedMarkets?: RuleSettings;
EconomicMarketClusterRiskEmergingMarkets?: RuleSettings;
RegionalMarketClusterRisk?: RuleSettings;
EmergencyFundSetup?: RuleSettings;
FeeRatioInitialInvestment?: RuleSettings;
}

Loading…
Cancel
Save