Browse Source

Merge remote-tracking branch 'origin/main' into feature/enable-column-sorting-in-benchmark-component

pull/4842/head
KenTandrian 3 months ago
parent
commit
b9ab63ac54
  1. 2
      CHANGELOG.md
  2. 1
      apps/api/src/app/portfolio/portfolio.service.ts
  3. 1
      apps/api/src/app/user/user.service.ts
  4. 19
      apps/api/src/models/rules/emergency-fund/emergency-fund-setup.ts
  5. 7
      apps/client/src/app/pages/i18n/i18n-page.html
  6. 18
      package-lock.json
  7. 2
      package.json

2
CHANGELOG.md

@ -9,10 +9,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added ### Added
- Set up the language localization for the static portfolio analysis rule: _Emergency Fund_ (Setup)
- Set up the language localization for the static portfolio analysis rule: _Fees_ (Fee Ratio) - Set up the language localization for the static portfolio analysis rule: _Fees_ (Fee Ratio)
### Changed ### Changed
- Upgraded `ng-extract-i18n-merge` from version `2.15.0` to `2.15.1`
- Upgraded `Nx` from version `20.8.1` to `21.1.2` - Upgraded `Nx` from version `20.8.1` to `21.1.2`
### Fixed ### Fixed

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

@ -1319,6 +1319,7 @@ export class PortfolioService {
[ [
new EmergencyFundSetup( new EmergencyFundSetup(
this.exchangeRateDataService, this.exchangeRateDataService,
userSettings.language,
this.getTotalEmergencyFund({ this.getTotalEmergencyFund({
userSettings, userSettings,
emergencyFundHoldingsValueInBaseCurrency: emergencyFundHoldingsValueInBaseCurrency:

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

@ -298,6 +298,7 @@ export class UserService {
undefined undefined
).getSettings(user.Settings.settings), ).getSettings(user.Settings.settings),
EmergencyFundSetup: new EmergencyFundSetup( EmergencyFundSetup: new EmergencyFundSetup(
undefined,
undefined, undefined,
undefined undefined
).getSettings(user.Settings.settings), ).getSettings(user.Settings.settings),

19
apps/api/src/models/rules/emergency-fund/emergency-fund-setup.ts

@ -1,16 +1,20 @@
import { RuleSettings } from '@ghostfolio/api/models/interfaces/rule-settings.interface'; import { RuleSettings } from '@ghostfolio/api/models/interfaces/rule-settings.interface';
import { Rule } from '@ghostfolio/api/models/rule'; import { Rule } from '@ghostfolio/api/models/rule';
import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service'; import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service';
import { I18nService } from '@ghostfolio/api/services/i18n/i18n.service';
import { UserSettings } from '@ghostfolio/common/interfaces'; import { UserSettings } from '@ghostfolio/common/interfaces';
export class EmergencyFundSetup extends Rule<Settings> { export class EmergencyFundSetup extends Rule<Settings> {
private emergencyFund: number; private emergencyFund: number;
private i18nService = new I18nService();
public constructor( public constructor(
protected exchangeRateDataService: ExchangeRateDataService, protected exchangeRateDataService: ExchangeRateDataService,
languageCode: string,
emergencyFund: number emergencyFund: number
) { ) {
super(exchangeRateDataService, { super(exchangeRateDataService, {
languageCode,
key: EmergencyFundSetup.name key: EmergencyFundSetup.name
}); });
@ -20,13 +24,19 @@ export class EmergencyFundSetup extends Rule<Settings> {
public evaluate() { public evaluate() {
if (!this.emergencyFund) { if (!this.emergencyFund) {
return { return {
evaluation: 'No emergency fund has been set up', evaluation: this.i18nService.getTranslation({
id: 'rule.emergencyFundSetup.false',
languageCode: this.getLanguageCode()
}),
value: false value: false
}; };
} }
return { return {
evaluation: 'An emergency fund has been set up', evaluation: this.i18nService.getTranslation({
id: 'rule.emergencyFundSetup.true',
languageCode: this.getLanguageCode()
}),
value: true value: true
}; };
} }
@ -36,7 +46,10 @@ export class EmergencyFundSetup extends Rule<Settings> {
} }
public getName() { public getName() {
return 'Emergency Fund: Set up'; return this.i18nService.getTranslation({
id: 'rule.emergencyFundSetup',
languageCode: this.getLanguageCode()
});
} }
public getSettings({ baseCurrency, xRayRules }: UserSettings): Settings { public getSettings({ baseCurrency, xRayRules }: UserSettings): Settings {

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

@ -11,6 +11,13 @@
performance, portfolio, software, stock, trading, wealth, web3 performance, portfolio, software, stock, trading, wealth, web3
</li> </li>
<li i18n="@@myAccount">My Account</li> <li i18n="@@myAccount">My Account</li>
<li i18n="@@rule.emergencyFundSetup">Emergency Fund: Set up</li>
<li i18n="@@rule.emergencyFundSetup.false">
No emergency fund has been set up
</li>
<li i18n="@@rule.emergencyFundSetup.true">
An emergency fund has been set up
</li>
<li i18n="@@rule.feeRatioInitialInvestment">Fee Ratio</li> <li i18n="@@rule.feeRatioInitialInvestment">Fee Ratio</li>
<li i18n="@@rule.feeRatioInitialInvestment.false"> <li i18n="@@rule.feeRatioInitialInvestment.false">
The fees do exceed &#123;thresholdMax&#125;% of your initial investment The fees do exceed &#123;thresholdMax&#125;% of your initial investment

18
package-lock.json

@ -72,7 +72,7 @@
"lodash": "4.17.21", "lodash": "4.17.21",
"marked": "15.0.4", "marked": "15.0.4",
"ms": "3.0.0-canary.1", "ms": "3.0.0-canary.1",
"ng-extract-i18n-merge": "2.15.0", "ng-extract-i18n-merge": "2.15.1",
"ngx-device-detector": "9.0.0", "ngx-device-detector": "9.0.0",
"ngx-markdown": "19.0.0", "ngx-markdown": "19.0.0",
"ngx-skeleton-loader": "11.0.0", "ngx-skeleton-loader": "11.0.0",
@ -26654,22 +26654,22 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/ng-extract-i18n-merge": { "node_modules/ng-extract-i18n-merge": {
"version": "2.15.0", "version": "2.15.1",
"resolved": "https://registry.npmjs.org/ng-extract-i18n-merge/-/ng-extract-i18n-merge-2.15.0.tgz", "resolved": "https://registry.npmjs.org/ng-extract-i18n-merge/-/ng-extract-i18n-merge-2.15.1.tgz",
"integrity": "sha512-43ew7btSrRJ34BHfRkjvvW8wXxfyFiM5rbFU22f/ZuEK1wpClV8lNaF09CYixY1+ycMpKLLyW+olj1Nj3kvs4g==", "integrity": "sha512-vNr+sVySO13imQ1Y7Jwe3JtGKP4Hck4Gzb7i4HxOq9fDLDORDIoazLTiwmZVoW4ZAyqK7kkDavjS0XD+VSMZUA==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@angular-devkit/architect": "^0.1301.0 || ^0.1401.0 || ^0.1501.0 || ^0.1601.0 || ^0.1700.0 || ^0.1800.0 || ^0.1900.0 || ^0.2000.0 || 0.2000.0-rc.2", "@angular-devkit/architect": "^0.1301.0 || ^0.1401.0 || ^0.1501.0 || ^0.1601.0 || ^0.1700.0 || ^0.1800.0 || ^0.1900.0 || ^0.2000.0",
"@angular-devkit/core": "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || 20.0.0-rc.2", "@angular-devkit/core": "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0",
"@angular-devkit/schematics": "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || 20.0.0-rc.2", "@angular-devkit/schematics": "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0",
"@schematics/angular": "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || 20.0.0-rc.2", "@schematics/angular": "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0",
"xmldoc": "^1.1.3" "xmldoc": "^1.1.3"
}, },
"engines": { "engines": {
"node": ">=14.0.0" "node": ">=14.0.0"
}, },
"peerDependencies": { "peerDependencies": {
"@angular-devkit/build-angular": "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || 20.0.0-rc.2" "@angular-devkit/build-angular": "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0"
} }
}, },
"node_modules/ng-extract-i18n-merge/node_modules/@angular-devkit/architect": { "node_modules/ng-extract-i18n-merge/node_modules/@angular-devkit/architect": {

2
package.json

@ -118,7 +118,7 @@
"lodash": "4.17.21", "lodash": "4.17.21",
"marked": "15.0.4", "marked": "15.0.4",
"ms": "3.0.0-canary.1", "ms": "3.0.0-canary.1",
"ng-extract-i18n-merge": "2.15.0", "ng-extract-i18n-merge": "2.15.1",
"ngx-device-detector": "9.0.0", "ngx-device-detector": "9.0.0",
"ngx-markdown": "19.0.0", "ngx-markdown": "19.0.0",
"ngx-skeleton-loader": "11.0.0", "ngx-skeleton-loader": "11.0.0",

Loading…
Cancel
Save