Browse Source

implements localization asset cluster risk

pull/5033/head
tobikugel 1 week ago
parent
commit
8a9357e9aa
  1. 4
      apps/api/src/app/user/user.service.ts
  2. 46
      apps/api/src/models/rules/asset-class-cluster-risk/equity.ts
  3. 46
      apps/api/src/models/rules/asset-class-cluster-risk/fixed-income.ts
  4. 29
      apps/client/src/app/pages/i18n/i18n-page.html

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

@ -272,10 +272,14 @@ export class UserService {
{}
).getSettings(user.Settings.settings),
AssetClassClusterRiskEquity: new AssetClassClusterRiskEquity(
undefined,
undefined,
undefined,
undefined
).getSettings(user.Settings.settings),
AssetClassClusterRiskFixedIncome: new AssetClassClusterRiskFixedIncome(
undefined,
undefined,
undefined,
undefined
).getSettings(user.Settings.settings),

46
apps/api/src/models/rules/asset-class-cluster-risk/equity.ts

@ -1,6 +1,7 @@
import { RuleSettings } from '@ghostfolio/api/models/interfaces/rule-settings.interface';
import { Rule } from '@ghostfolio/api/models/rule';
import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service';
import { I18nService } from '@ghostfolio/api/services/i18n/i18n.service';
import { PortfolioPosition, UserSettings } from '@ghostfolio/common/interfaces';
export class AssetClassClusterRiskEquity extends Rule<Settings> {
@ -8,9 +9,12 @@ export class AssetClassClusterRiskEquity extends Rule<Settings> {
public constructor(
protected exchangeRateDataService: ExchangeRateDataService,
private i18nService: I18nService,
languageCode: string,
holdings: PortfolioPosition[]
) {
super(exchangeRateDataService, {
languageCode,
key: AssetClassClusterRiskEquity.name
});
@ -40,26 +44,39 @@ export class AssetClassClusterRiskEquity extends Rule<Settings> {
if (equityValueRatio > ruleSettings.thresholdMax) {
return {
evaluation: `The equity contribution of your current investment (${(equityValueRatio * 100).toPrecision(3)}%) exceeds ${(
ruleSettings.thresholdMax * 100
).toPrecision(3)}%`,
evaluation: this.i18nService.getTranslation({
id: 'rule.assetClassClusterRiskEquity.false.max',
languageCode: this.getLanguageCode(),
placeholders: {
equityValueRatio: (equityValueRatio * 100).toPrecision(3),
thresholdMax: (ruleSettings.thresholdMax * 100).toPrecision(3)
}
}),
value: false
};
} else if (equityValueRatio < ruleSettings.thresholdMin) {
return {
evaluation: `The equity contribution of your current investment (${(equityValueRatio * 100).toPrecision(3)}%) is below ${(
ruleSettings.thresholdMin * 100
).toPrecision(3)}%`,
evaluation: this.i18nService.getTranslation({
id: 'rule.assetClassClusterRiskEquity.false.min',
languageCode: this.getLanguageCode(),
placeholders: {
equityValueRatio: (equityValueRatio * 100).toPrecision(3),
thresholdMin: (ruleSettings.thresholdMin * 100).toPrecision(3)
}
}),
value: false
};
}
return {
evaluation: `The equity contribution of your current investment (${(equityValueRatio * 100).toPrecision(3)}%) is within the range of ${(
ruleSettings.thresholdMin * 100
).toPrecision(
3
)}% and ${(ruleSettings.thresholdMax * 100).toPrecision(3)}%`,
evaluation: this.i18nService.getTranslation({
id: 'rule.assetClassClusterRiskEquity.true',
languageCode: this.getLanguageCode(),
placeholders: {
equityValueRatio: (equityValueRatio * 100).toPrecision(3),
thresholdMax: (ruleSettings.thresholdMax * 100).toPrecision(3),
thresholdMin: (ruleSettings.thresholdMin * 100).toPrecision(3)
}
}),
value: true
};
}
@ -78,7 +95,10 @@ export class AssetClassClusterRiskEquity extends Rule<Settings> {
}
public getName() {
return 'Equity';
return this.i18nService.getTranslation({
id: 'rule.assetClassClusterRiskEquity',
languageCode: this.getLanguageCode()
});
}
public getSettings({ baseCurrency, xRayRules }: UserSettings): Settings {

46
apps/api/src/models/rules/asset-class-cluster-risk/fixed-income.ts

@ -1,6 +1,7 @@
import { RuleSettings } from '@ghostfolio/api/models/interfaces/rule-settings.interface';
import { Rule } from '@ghostfolio/api/models/rule';
import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service';
import { I18nService } from '@ghostfolio/api/services/i18n/i18n.service';
import { PortfolioPosition, UserSettings } from '@ghostfolio/common/interfaces';
export class AssetClassClusterRiskFixedIncome extends Rule<Settings> {
@ -8,9 +9,12 @@ export class AssetClassClusterRiskFixedIncome extends Rule<Settings> {
public constructor(
protected exchangeRateDataService: ExchangeRateDataService,
private i18nService: I18nService,
languageCode: string,
holdings: PortfolioPosition[]
) {
super(exchangeRateDataService, {
languageCode,
key: AssetClassClusterRiskFixedIncome.name
});
@ -40,26 +44,39 @@ export class AssetClassClusterRiskFixedIncome extends Rule<Settings> {
if (fixedIncomeValueRatio > ruleSettings.thresholdMax) {
return {
evaluation: `The fixed income contribution of your current investment (${(fixedIncomeValueRatio * 100).toPrecision(3)}%) exceeds ${(
ruleSettings.thresholdMax * 100
).toPrecision(3)}%`,
evaluation: this.i18nService.getTranslation({
id: 'rule.assetClassClusterRiskFixedIncome.false.max',
languageCode: this.getLanguageCode(),
placeholders: {
fixedIncomeValueRatio: (fixedIncomeValueRatio * 100).toPrecision(3),
thresholdMax: (ruleSettings.thresholdMax * 100).toPrecision(3)
}
}),
value: false
};
} else if (fixedIncomeValueRatio < ruleSettings.thresholdMin) {
return {
evaluation: `The fixed income contribution of your current investment (${(fixedIncomeValueRatio * 100).toPrecision(3)}%) is below ${(
ruleSettings.thresholdMin * 100
).toPrecision(3)}%`,
evaluation: this.i18nService.getTranslation({
id: 'rule.assetClassClusterRiskFixedIncome.false.min',
languageCode: this.getLanguageCode(),
placeholders: {
fixedIncomeValueRatio: (fixedIncomeValueRatio * 100).toPrecision(3),
thresholdMin: (ruleSettings.thresholdMin * 100).toPrecision(3)
}
}),
value: false
};
}
return {
evaluation: `The fixed income contribution of your current investment (${(fixedIncomeValueRatio * 100).toPrecision(3)}%) is within the range of ${(
ruleSettings.thresholdMin * 100
).toPrecision(
3
)}% and ${(ruleSettings.thresholdMax * 100).toPrecision(3)}%`,
evaluation: this.i18nService.getTranslation({
id: 'rule.assetClassClusterRiskFixedIncome.true',
languageCode: this.getLanguageCode(),
placeholders: {
fixedIncomeValueRatio: (fixedIncomeValueRatio * 100).toPrecision(3),
thresholdMax: (ruleSettings.thresholdMax * 100).toPrecision(3),
thresholdMin: (ruleSettings.thresholdMin * 100).toPrecision(3)
}
}),
value: true
};
}
@ -78,7 +95,10 @@ export class AssetClassClusterRiskFixedIncome extends Rule<Settings> {
}
public getName() {
return 'Fixed Income';
return this.i18nService.getTranslation({
id: 'rule.assetClassClusterRiskFixedIncome',
languageCode: this.getLanguageCode()
});
}
public getSettings({ baseCurrency, xRayRules }: UserSettings): Settings {

29
apps/client/src/app/pages/i18n/i18n-page.html

@ -28,6 +28,35 @@
<li i18n="@@rule.accountClusterRiskSingleAccount.true">
Your net worth is managed by $&#123;accountsLength&#125; accounts
</li>
<li i18n="@@rule.assetClassClusterRiskEquity">Equity</li>
<li i18n="@@rule.assetClassClusterRiskEquity.false.max">
The equity contribution of your current investment
($&#123;equityValueRatio&#125;%) exceeds $&#123;thresholdMax&#125;%
</li>
<li i18n="@@rule.assetClassClusterRiskEquity.false.min">
The equity contribution of your current investment
($&#123;equityValueRatio&#125;%) is below $&#123;thresholdMin&#125;%
</li>
<li i18n="@@rule.assetClassClusterRiskEquity.true">
The equity contribution of your current investment
($&#123;equityValueRatio&#125;%) is within the range of
$&#123;thresholdMin&#125;% and $&#123;thresholdMax&#125;%
</li>
<li i18n="@@rule.assetClassClusterRiskFixedIncome">Fixed Income</li>
<li i18n="@@rule.assetClassClusterRiskFixedIncome.false.max">
The fixed income contribution of your current investment
($&#123;fixedIncomeValueRatio&#125;%) exceeds $&#123;thresholdMax&#125;%
</li>
<li i18n="@@rule.assetClassClusterRiskFixedIncome.false.min">
The fixed income contribution of your current investment
($&#123;fixedIncomeValueRatio&#125;%) is below
$&#123;thresholdMin&#125;%
</li>
<li i18n="@@rule.assetClassClusterRiskFixedIncome.true">
The fixed income contribution of your current investment
($&#123;fixedIncomeValueRatio&#125;%) is within the range of
$&#123;thresholdMin&#125;% and $&#123;thresholdMax&#125;%
</li>
<li i18n="@@rule.emergencyFundSetup">Emergency Fund: Set up</li>
<li i18n="@@rule.emergencyFundSetup.false">
No emergency fund has been set up

Loading…
Cancel
Save