diff --git a/CHANGELOG.md b/CHANGELOG.md index 75c2887e4..0ba5da4e0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +### Added + +- Exposed the `PROCESSOR_PORTFOLIO_SNAPSHOT_COMPUTATION_REMOVE_ON_FAIL` environment variable to control the removal of failed jobs in the portfolio snapshot computation queue + +### Changed + +- Set the change detection strategy to `OnPush` in the alert dialog component +- Set the change detection strategy to `OnPush` in the confirmation dialog component +- Set the change detection strategy to `OnPush` in the prompt dialog component +- Set the change detection strategy to `OnPush` in the overview of the admin control panel +- Upgraded `stripe` from version `21.0.1` to `22.2.3` + +### Fixed + +- Fixed the creation of the _Stripe_ checkout session for languages not supported by _Stripe_ (`ca` and `uk`) +- Fixed the error handling in the endpoint to create a _Stripe_ checkout session + +## 3.20.0 - 2026-07-04 + ### Changed - Refactored the rounding logic in the holding detail dialog @@ -19,6 +38,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Improved the parsing of the integer query parameter (`includeHistoricalData`) in the `GET api/v1/symbol/:dataSource/:symbol` endpoint - Harmonized the filter parsing using `groupBy` across various services - Improved the language localization by translating various tooltips across the application +- Improved the language localization for German (`de`) - Improved the language localization for Ukrainian (`uk`) - Upgraded `yahoo-finance2` from version `3.14.3` to `3.15.4` diff --git a/README.md b/README.md index b72f03cd3..a9b3a3055 100644 --- a/README.md +++ b/README.md @@ -378,10 +378,6 @@ If you like to support this project, get [**Ghostfolio Premium**](https://ghostf -## Analytics - -![Alt](https://repobeats.axiom.co/api/embed/281a80b2d0c4af1162866c24c803f1f18e5ed60e.svg 'Repobeats analytics image') - ## License © 2021 - 2026 [Ghostfolio](https://ghostfol.io) diff --git a/apps/api/src/app/app.module.ts b/apps/api/src/app/app.module.ts index 0a27faa64..04b1f3bf2 100644 --- a/apps/api/src/app/app.module.ts +++ b/apps/api/src/app/app.module.ts @@ -147,7 +147,9 @@ import { UserModule } from './user/user.module'; .split(',')[0] .split('-')[0]; - if (SUPPORTED_LANGUAGE_CODES.includes(code)) { + if ( + (SUPPORTED_LANGUAGE_CODES as readonly string[]).includes(code) + ) { languageCode = code; } } catch {} diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-buy.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-buy.spec.ts index 9a93d0419..f21418cb4 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-buy.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-buy.spec.ts @@ -65,7 +65,7 @@ describe('PortfolioCalculator', () => { null ); - portfolioSnapshotService = new PortfolioSnapshotService(null); + portfolioSnapshotService = new PortfolioSnapshotService(null, null); redisCacheService = new RedisCacheService(null, null); diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-sell-in-two-activities.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-sell-in-two-activities.spec.ts index c876d0db1..e2cba2e61 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-sell-in-two-activities.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-sell-in-two-activities.spec.ts @@ -65,7 +65,7 @@ describe('PortfolioCalculator', () => { null ); - portfolioSnapshotService = new PortfolioSnapshotService(null); + portfolioSnapshotService = new PortfolioSnapshotService(null, null); redisCacheService = new RedisCacheService(null, null); diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-sell.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-sell.spec.ts index ae921d6d9..fa397de46 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-sell.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-sell.spec.ts @@ -65,7 +65,7 @@ describe('PortfolioCalculator', () => { null ); - portfolioSnapshotService = new PortfolioSnapshotService(null); + portfolioSnapshotService = new PortfolioSnapshotService(null, null); redisCacheService = new RedisCacheService(null, null); diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy.spec.ts index 6207f1417..db44fe0ae 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy.spec.ts @@ -65,7 +65,7 @@ describe('PortfolioCalculator', () => { null ); - portfolioSnapshotService = new PortfolioSnapshotService(null); + portfolioSnapshotService = new PortfolioSnapshotService(null, null); redisCacheService = new RedisCacheService(null, null); diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btceur-in-base-currency-eur.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btceur-in-base-currency-eur.spec.ts index 774c1d2f6..1afd9225d 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btceur-in-base-currency-eur.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btceur-in-base-currency-eur.spec.ts @@ -87,7 +87,7 @@ describe('PortfolioCalculator', () => { null ); - portfolioSnapshotService = new PortfolioSnapshotService(null); + portfolioSnapshotService = new PortfolioSnapshotService(null, null); redisCacheService = new RedisCacheService(null, null); diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btceur.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btceur.spec.ts index 055356325..0e5750166 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btceur.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btceur.spec.ts @@ -75,7 +75,7 @@ describe('PortfolioCalculator', () => { null ); - portfolioSnapshotService = new PortfolioSnapshotService(null); + portfolioSnapshotService = new PortfolioSnapshotService(null, null); redisCacheService = new RedisCacheService(null, null); diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd-buy-and-sell-partially.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd-buy-and-sell-partially.spec.ts index 11765fc49..1e556735d 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd-buy-and-sell-partially.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd-buy-and-sell-partially.spec.ts @@ -77,7 +77,7 @@ describe('PortfolioCalculator', () => { null ); - portfolioSnapshotService = new PortfolioSnapshotService(null); + portfolioSnapshotService = new PortfolioSnapshotService(null, null); redisCacheService = new RedisCacheService(null, null); diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd-short.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd-short.spec.ts index 6a45f79c6..9d84540e3 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd-short.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd-short.spec.ts @@ -75,7 +75,7 @@ describe('PortfolioCalculator', () => { null ); - portfolioSnapshotService = new PortfolioSnapshotService(null); + portfolioSnapshotService = new PortfolioSnapshotService(null, null); redisCacheService = new RedisCacheService(null, null); diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd.spec.ts index 64882061f..0916e18a4 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd.spec.ts @@ -75,7 +75,7 @@ describe('PortfolioCalculator', () => { null ); - portfolioSnapshotService = new PortfolioSnapshotService(null); + portfolioSnapshotService = new PortfolioSnapshotService(null, null); redisCacheService = new RedisCacheService(null, null); diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-cash.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-cash.spec.ts index 2d85330a3..7774ee629 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-cash.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-cash.spec.ts @@ -125,7 +125,7 @@ describe('PortfolioCalculator', () => { null ); - portfolioSnapshotService = new PortfolioSnapshotService(null); + portfolioSnapshotService = new PortfolioSnapshotService(null, null); portfolioCalculatorFactory = new PortfolioCalculatorFactory( configurationService, diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-fee.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-fee.spec.ts index a3fbc0758..b55c94b2b 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-fee.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-fee.spec.ts @@ -65,7 +65,7 @@ describe('PortfolioCalculator', () => { null ); - portfolioSnapshotService = new PortfolioSnapshotService(null); + portfolioSnapshotService = new PortfolioSnapshotService(null, null); redisCacheService = new RedisCacheService(null, null); diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-googl-buy.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-googl-buy.spec.ts index 122a9aaed..bb61d637e 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-googl-buy.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-googl-buy.spec.ts @@ -77,7 +77,7 @@ describe('PortfolioCalculator', () => { null ); - portfolioSnapshotService = new PortfolioSnapshotService(null); + portfolioSnapshotService = new PortfolioSnapshotService(null, null); redisCacheService = new RedisCacheService(null, null); diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-jnug-buy-and-sell-and-buy-and-sell.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-jnug-buy-and-sell-and-buy-and-sell.spec.ts index d5b22e864..88afc971d 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-jnug-buy-and-sell-and-buy-and-sell.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-jnug-buy-and-sell-and-buy-and-sell.spec.ts @@ -78,7 +78,7 @@ describe('PortfolioCalculator', () => { null ); - portfolioSnapshotService = new PortfolioSnapshotService(null); + portfolioSnapshotService = new PortfolioSnapshotService(null, null); redisCacheService = new RedisCacheService(null, null); diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-liability.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-liability.spec.ts index acbf6a66b..4f2058513 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-liability.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-liability.spec.ts @@ -65,7 +65,7 @@ describe('PortfolioCalculator', () => { null ); - portfolioSnapshotService = new PortfolioSnapshotService(null); + portfolioSnapshotService = new PortfolioSnapshotService(null, null); redisCacheService = new RedisCacheService(null, null); diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-msft-buy-and-sell.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-msft-buy-and-sell.spec.ts index baa6ae1ed..36d1ea1ec 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-msft-buy-and-sell.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-msft-buy-and-sell.spec.ts @@ -60,7 +60,7 @@ describe('PortfolioCalculator', () => { null, null ); - portfolioSnapshotService = new PortfolioSnapshotService(null); + portfolioSnapshotService = new PortfolioSnapshotService(null, null); redisCacheService = new RedisCacheService(null, null); portfolioCalculatorFactory = new PortfolioCalculatorFactory( configurationService, diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-msft-buy-with-dividend.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-msft-buy-with-dividend.spec.ts index e7eff6682..c50ef2b34 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-msft-buy-with-dividend.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-msft-buy-with-dividend.spec.ts @@ -65,7 +65,7 @@ describe('PortfolioCalculator', () => { null ); - portfolioSnapshotService = new PortfolioSnapshotService(null); + portfolioSnapshotService = new PortfolioSnapshotService(null, null); redisCacheService = new RedisCacheService(null, null); diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-no-orders.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-no-orders.spec.ts index 6c47af7ca..30ebaa8c4 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-no-orders.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-no-orders.spec.ts @@ -60,7 +60,7 @@ describe('PortfolioCalculator', () => { null ); - portfolioSnapshotService = new PortfolioSnapshotService(null); + portfolioSnapshotService = new PortfolioSnapshotService(null, null); redisCacheService = new RedisCacheService(null, null); diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-novn-buy-and-sell-partially.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-novn-buy-and-sell-partially.spec.ts index 3034e3a1f..cdfc78906 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-novn-buy-and-sell-partially.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-novn-buy-and-sell-partially.spec.ts @@ -78,7 +78,7 @@ describe('PortfolioCalculator', () => { null ); - portfolioSnapshotService = new PortfolioSnapshotService(null); + portfolioSnapshotService = new PortfolioSnapshotService(null, null); redisCacheService = new RedisCacheService(null, null); diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-novn-buy-and-sell.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-novn-buy-and-sell.spec.ts index c79fdef58..2cd754c82 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-novn-buy-and-sell.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-novn-buy-and-sell.spec.ts @@ -78,7 +78,7 @@ describe('PortfolioCalculator', () => { null ); - portfolioSnapshotService = new PortfolioSnapshotService(null); + portfolioSnapshotService = new PortfolioSnapshotService(null, null); redisCacheService = new RedisCacheService(null, null); diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-valuable.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-valuable.spec.ts index e518a5994..1d6cee0fa 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-valuable.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-valuable.spec.ts @@ -65,7 +65,7 @@ describe('PortfolioCalculator', () => { null ); - portfolioSnapshotService = new PortfolioSnapshotService(null); + portfolioSnapshotService = new PortfolioSnapshotService(null, null); redisCacheService = new RedisCacheService(null, null); diff --git a/apps/api/src/app/subscription/subscription.controller.ts b/apps/api/src/app/subscription/subscription.controller.ts index 074a9db0e..4018e4753 100644 --- a/apps/api/src/app/subscription/subscription.controller.ts +++ b/apps/api/src/app/subscription/subscription.controller.ts @@ -116,11 +116,11 @@ export class SubscriptionController { @Post('stripe/checkout-session') @UseGuards(AuthGuard('jwt'), HasPermissionGuard) - public createStripeCheckoutSession( + public async createStripeCheckoutSession( @Body() { couponId, priceId }: { couponId?: string; priceId: string } ): Promise { try { - return this.subscriptionService.createStripeCheckoutSession({ + return await this.subscriptionService.createStripeCheckoutSession({ couponId, priceId, user: this.request.user diff --git a/apps/api/src/app/subscription/subscription.service.ts b/apps/api/src/app/subscription/subscription.service.ts index a811d2243..07c2e7dbb 100644 --- a/apps/api/src/app/subscription/subscription.service.ts +++ b/apps/api/src/app/subscription/subscription.service.ts @@ -3,7 +3,8 @@ import { PrismaService } from '@ghostfolio/api/services/prisma/prisma.service'; import { PropertyService } from '@ghostfolio/api/services/property/property.service'; import { DEFAULT_LANGUAGE_CODE, - PROPERTY_STRIPE_CONFIG + PROPERTY_STRIPE_CONFIG, + SUPPORTED_LANGUAGE_CODES } from '@ghostfolio/common/config'; import { SubscriptionType } from '@ghostfolio/common/enums'; import { parseDate } from '@ghostfolio/common/helper'; @@ -37,7 +38,7 @@ export class SubscriptionService { this.stripe = new Stripe( this.configurationService.get('STRIPE_SECRET_KEY'), { - apiVersion: '2026-03-25.dahlia' + apiVersion: '2026-05-27.dahlia' } ); } @@ -75,10 +76,7 @@ export class SubscriptionService { quantity: 1 } ], - locale: - (user.settings?.settings - ?.language as Stripe.Checkout.SessionCreateParams.Locale) ?? - DEFAULT_LANGUAGE_CODE, + locale: this.getStripeLocale(user.settings?.settings?.language), metadata: subscriptionOffer ? { subscriptionOffer: JSON.stringify(subscriptionOffer) } : {}, @@ -246,4 +244,28 @@ export class SubscriptionService { isRenewal: key.startsWith('renewal') }; } + + private getStripeLocale( + languageCode: string + ): Stripe.Checkout.SessionCreateParams.Locale { + const unsupportedLanguageCodes: Record< + Exclude< + (typeof SUPPORTED_LANGUAGE_CODES)[number], + Stripe.Checkout.SessionCreateParams.Locale + >, + true + > = { + ca: true, + uk: true + }; + + if ( + (SUPPORTED_LANGUAGE_CODES as readonly string[]).includes(languageCode) && + !(languageCode in unsupportedLanguageCodes) + ) { + return languageCode as Stripe.Checkout.SessionCreateParams.Locale; + } + + return DEFAULT_LANGUAGE_CODE; + } } diff --git a/apps/api/src/middlewares/html-template.middleware.ts b/apps/api/src/middlewares/html-template.middleware.ts index c256ada56..325f64eaa 100644 --- a/apps/api/src/middlewares/html-template.middleware.ts +++ b/apps/api/src/middlewares/html-template.middleware.ts @@ -117,7 +117,9 @@ export class HtmlTemplateMiddleware implements NestMiddleware { const path = request.originalUrl.replace(/\/$/, ''); let languageCode = path.substr(1, 2); - if (!SUPPORTED_LANGUAGE_CODES.includes(languageCode)) { + if ( + !(SUPPORTED_LANGUAGE_CODES as readonly string[]).includes(languageCode) + ) { languageCode = DEFAULT_LANGUAGE_CODE; } diff --git a/apps/api/src/services/configuration/configuration.service.ts b/apps/api/src/services/configuration/configuration.service.ts index 703a90c3a..c96ccd946 100644 --- a/apps/api/src/services/configuration/configuration.service.ts +++ b/apps/api/src/services/configuration/configuration.service.ts @@ -96,6 +96,9 @@ export class ConfigurationService { PROCESSOR_PORTFOLIO_SNAPSHOT_COMPUTATION_CONCURRENCY: num({ default: DEFAULT_PROCESSOR_PORTFOLIO_SNAPSHOT_COMPUTATION_CONCURRENCY }), + PROCESSOR_PORTFOLIO_SNAPSHOT_COMPUTATION_REMOVE_ON_FAIL: bool({ + default: true + }), PROCESSOR_PORTFOLIO_SNAPSHOT_COMPUTATION_TIMEOUT: num({ default: DEFAULT_PROCESSOR_PORTFOLIO_SNAPSHOT_COMPUTATION_TIMEOUT }), diff --git a/apps/api/src/services/interfaces/environment.interface.ts b/apps/api/src/services/interfaces/environment.interface.ts index 11bdeabf6..89463e201 100644 --- a/apps/api/src/services/interfaces/environment.interface.ts +++ b/apps/api/src/services/interfaces/environment.interface.ts @@ -47,6 +47,7 @@ export interface Environment extends CleanedEnvAccessors { PROCESSOR_GATHER_HISTORICAL_MARKET_DATA_CONCURRENCY: number; PROCESSOR_GATHER_STATISTICS_CONCURRENCY: number; PROCESSOR_PORTFOLIO_SNAPSHOT_COMPUTATION_CONCURRENCY: number; + PROCESSOR_PORTFOLIO_SNAPSHOT_COMPUTATION_REMOVE_ON_FAIL: boolean; PROCESSOR_PORTFOLIO_SNAPSHOT_COMPUTATION_TIMEOUT: number; REDIS_DB: number; REDIS_HOST: string; diff --git a/apps/api/src/services/queues/portfolio-snapshot/portfolio-snapshot.service.ts b/apps/api/src/services/queues/portfolio-snapshot/portfolio-snapshot.service.ts index d7449a9cc..99fa5aca2 100644 --- a/apps/api/src/services/queues/portfolio-snapshot/portfolio-snapshot.service.ts +++ b/apps/api/src/services/queues/portfolio-snapshot/portfolio-snapshot.service.ts @@ -1,3 +1,4 @@ +import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { PORTFOLIO_SNAPSHOT_COMPUTATION_QUEUE } from '@ghostfolio/common/config'; import { InjectQueue } from '@nestjs/bull'; @@ -9,6 +10,7 @@ import { PortfolioSnapshotQueueJob } from './interfaces/portfolio-snapshot-queue @Injectable() export class PortfolioSnapshotService { public constructor( + private readonly configurationService: ConfigurationService, @InjectQueue(PORTFOLIO_SNAPSHOT_COMPUTATION_QUEUE) private readonly portfolioSnapshotQueue: Queue ) {} @@ -22,7 +24,12 @@ export class PortfolioSnapshotService { name: string; opts?: JobOptions; }) { - return this.portfolioSnapshotQueue.add(name, data, opts); + return this.portfolioSnapshotQueue.add(name, data, { + ...opts, + removeOnFail: this.configurationService.get( + 'PROCESSOR_PORTFOLIO_SNAPSHOT_COMPUTATION_REMOVE_ON_FAIL' + ) + }); } public async getJob(jobId: string) { diff --git a/apps/client/src/app/components/admin-overview/admin-overview.component.ts b/apps/client/src/app/components/admin-overview/admin-overview.component.ts index 3b8fdc38c..b2c9b11a3 100644 --- a/apps/client/src/app/components/admin-overview/admin-overview.component.ts +++ b/apps/client/src/app/components/admin-overview/admin-overview.component.ts @@ -27,6 +27,7 @@ import { GfValueComponent } from '@ghostfolio/ui/value'; import { Clipboard, ClipboardModule } from '@angular/cdk/clipboard'; import { CommonModule } from '@angular/common'; import { + ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, @@ -64,6 +65,7 @@ import { import ms, { StringValue } from 'ms'; @Component({ + changeDetection: ChangeDetectionStrategy.OnPush, imports: [ ClipboardModule, CommonModule, @@ -140,6 +142,8 @@ export class GfAdminOverviewComponent implements OnInit { permissions.toggleReadOnlyMode ); } + + this.changeDetectorRef.markForCheck(); }); addIcons({ diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf index 5fc213ec7..da3e1cbe2 100644 --- a/apps/client/src/locales/messages.ca.xlf +++ b/apps/client/src/locales/messages.ca.xlf @@ -951,7 +951,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 217 + 221 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -1099,7 +1099,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 266 + 270 @@ -1115,7 +1115,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 280 + 284 apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html @@ -1135,7 +1135,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 286 + 290 apps/client/src/app/pages/public/public-page.html @@ -1155,7 +1155,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 298 + 302 @@ -1791,7 +1791,7 @@ Preu Mínim apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 129 + 131 @@ -1799,7 +1799,7 @@ Preu Màxim apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 145 + 149 @@ -1807,7 +1807,7 @@ Quantitat apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 155 + 159 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -1827,7 +1827,7 @@ Rendiment del Dividend apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 194 + 198 @@ -1835,7 +1835,7 @@ Comissions apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 206 + 210 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -1847,7 +1847,7 @@ Activitat apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 227 + 231 @@ -1855,7 +1855,7 @@ Informar d’un Problema amb les Dades apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 456 + 460 @@ -3087,7 +3087,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 382 + 386 apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html @@ -3195,7 +3195,7 @@ Dades de mercat apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 404 + 408 libs/common/src/lib/routes/routes.ts @@ -4212,11 +4212,11 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 229 + 233 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 346 + 350 apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html @@ -4692,7 +4692,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 184 + 188 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -4720,7 +4720,7 @@ Inversió apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 169 + 173 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -4768,7 +4768,7 @@ Close Holding apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 446 + 450 @@ -6017,7 +6017,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 240 + 244 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -6049,7 +6049,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 249 + 253 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -6241,7 +6241,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 318 + 322 libs/ui/src/lib/i18n.ts @@ -7395,7 +7395,7 @@ Please enter your Ghostfolio API key: apps/client/src/app/pages/api/api-page.component.ts - 62 + 63 @@ -7671,7 +7671,7 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 380 + 389 @@ -7703,11 +7703,11 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 380 + 389 libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 393 + 402 @@ -8436,7 +8436,7 @@ Manage Asset Profile apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 471 + 475 diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index 3e54ecb79..ea01c89ba 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -387,7 +387,7 @@ and is driven by the efforts of its contributors - und wird durch die Beiträge seiner Mitwirkenden vorangetrieben + und wird durch die Beiträge seiner Mitwirkenden vorangetrieben apps/client/src/app/pages/about/overview/about-overview-page.html 50 @@ -479,7 +479,7 @@ Watch the Ghostfol.io Trailer on YouTube - Watch the Ghostfol.io Trailer on YouTube + Schaue dir den Ghostfol.io Trailer auf YouTube an apps/client/src/app/pages/landing/landing-page.html 19 @@ -514,7 +514,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 217 + 221 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -1022,7 +1022,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 286 + 290 apps/client/src/app/pages/public/public-page.html @@ -1042,7 +1042,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 298 + 302 @@ -1066,7 +1066,7 @@ Datenfehler melden apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 456 + 460 @@ -1143,7 +1143,7 @@ Ghostfolio in Numbers: Monthly Active Users (MAU) - Ghostfolio in Numbers: Monthly Active Users (MAU) + Ghostfolio in Zahlen: Monatlich aktive Nutzer (MAU) apps/client/src/app/pages/landing/landing-page.html 63 @@ -1466,7 +1466,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 382 + 386 apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html @@ -2031,7 +2031,7 @@ Add activity - Aktivität hinzufügen + Aktivität hinzufügen apps/client/src/app/components/home-overview/home-overview.html 57 @@ -2086,7 +2086,7 @@ Anzahl apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 155 + 159 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2166,11 +2166,11 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 229 + 233 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 346 + 350 apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html @@ -2542,7 +2542,7 @@ Minimum Preis apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 129 + 131 @@ -2550,7 +2550,7 @@ Maximum Preis apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 145 + 149 @@ -2562,7 +2562,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 266 + 270 @@ -2578,7 +2578,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 280 + 284 apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html @@ -2719,7 +2719,7 @@ Apply current market price - Apply current market price + Aktuellen Marktpreis übernehmen apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 238 @@ -2871,7 +2871,7 @@ Contributors to Ghostfolio - Contributors to Ghostfolio + Mitwirkende von Ghostfolio apps/client/src/app/pages/about/overview/about-overview-page.html 54 @@ -2962,7 +2962,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 240 + 244 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2998,7 +2998,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 318 + 322 libs/ui/src/lib/i18n.ts @@ -3342,7 +3342,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 184 + 188 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -3382,7 +3382,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 249 + 253 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -3430,7 +3430,7 @@ Marktdaten apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 404 + 408 libs/common/src/lib/routes/routes.ts @@ -3866,7 +3866,7 @@ Gebühren apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 206 + 210 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -4603,7 +4603,7 @@ Upgrade to Ghostfolio Premium - Upgrade to Ghostfolio Premium + Wechsle zu Ghostfolio Premium libs/ui/src/lib/premium-indicator/premium-indicator.component.html 4 @@ -4767,7 +4767,7 @@ Ghostfolio in Numbers: Pulls on Docker Hub - Ghostfolio in Numbers: Pulls on Docker Hub + Ghostfolio in Zahlen: Downloads auf Docker Hub apps/client/src/app/pages/landing/landing-page.html 101 @@ -4807,7 +4807,7 @@ The source code is fully available as open source software (OSS) under the AGPL-3.0 license - Der Quellcode ist vollständig als Open-Source-Software (OSS) unter der AGPL-3.0-Lizenz verfügbar + Der Quellcode ist vollständig als Open-Source-Software (OSS) unter der AGPL-3.0-Lizenz verfügbar apps/client/src/app/pages/about/overview/about-overview-page.html 16 @@ -4895,7 +4895,7 @@ At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status. - Bei Ghostfolio gehört Transparenz zum zentralen Inhalt unserer Grundwerte. Wir publizieren den Quellcode als Open-Source-Software (OSS) unter der AGPL-3.0-Lizenz und veröffentlichen aggregierte Kennzahlen über den Betriebsstatus der Plattform. + Bei Ghostfolio gehört Transparenz zum zentralen Inhalt unserer Grundwerte. Wir publizieren den Quellcode als Open-Source-Software (OSS) unter der AGPL-3.0-Lizenz und veröffentlichen aggregierte Kennzahlen über den Betriebsstatus der Plattform. apps/client/src/app/pages/open/open-page.html 7 @@ -4939,7 +4939,7 @@ Contributors on GitHub - Contributors auf GitHub + Mitwirkende auf GitHub apps/client/src/app/pages/open/open-page.html 90 @@ -6148,7 +6148,7 @@ Investition apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 169 + 173 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -6180,7 +6180,7 @@ Position abschliessen apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 446 + 450 @@ -6285,7 +6285,7 @@ Fetch market price - Fetch market price + Marktpreis abrufen libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html 40 @@ -6457,7 +6457,7 @@ Aktivität apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 227 + 231 @@ -6465,7 +6465,7 @@ Dividendenrendite apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 194 + 198 @@ -7110,7 +7110,7 @@ Compare Ghostfolio to - - Compare Ghostfolio to - + Vergleiche Ghostfolio mit - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html 32 @@ -7419,7 +7419,7 @@ Bitte gib den API-Schlüssel ein: apps/client/src/app/pages/api/api-page.component.ts - 62 + 63 @@ -7695,12 +7695,12 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 380 + 389 Ghostfolio in Numbers: Stars on GitHub - Ghostfolio in Numbers: Stars on GitHub + Ghostfolio in Zahlen: Sterne auf GitHub apps/client/src/app/pages/landing/landing-page.html 82 @@ -7727,11 +7727,11 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 380 + 389 libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 393 + 402 @@ -8156,7 +8156,7 @@ Post to Ghostfolio on X (formerly Twitter) - Post to Ghostfolio on X (formerly Twitter) + An Ghostfolio schreiben auf X (ehemals Twitter) apps/client/src/app/pages/about/overview/about-overview-page.html 85 @@ -8401,7 +8401,7 @@ If you encounter a bug, would like to suggest an improvement or a new feature, please join the Ghostfolio Slack community, post to @ghostfolio_ - Wenn du einen Fehler feststellst oder eine Verbesserung bzw. ein neues Feature vorschlagen möchtest, tritt der Ghostfolio Slack Community bei oder poste an @ghostfolio_ + Wenn du einen Fehler feststellst oder eine Verbesserung bzw. ein neues Feature vorschlagen möchtest, tritt der Ghostfolio Slack Community bei oder poste an @ghostfolio_ apps/client/src/app/pages/about/overview/about-overview-page.html 71 @@ -8436,7 +8436,7 @@ Anlageprofil verwalten apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 471 + 475 diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index a7311c4df..bf7fec355 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -515,7 +515,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 217 + 221 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -1007,7 +1007,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 286 + 290 apps/client/src/app/pages/public/public-page.html @@ -1027,7 +1027,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 298 + 302 @@ -1051,7 +1051,7 @@ Reportar anomalía en los datos apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 456 + 460 @@ -1451,7 +1451,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 382 + 386 apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html @@ -2071,7 +2071,7 @@ Cantidad apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 155 + 159 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2151,11 +2151,11 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 229 + 233 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 346 + 350 apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html @@ -2559,7 +2559,7 @@ Precio máximo apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 145 + 149 @@ -2595,7 +2595,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 266 + 270 @@ -2611,7 +2611,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 280 + 284 apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html @@ -2623,7 +2623,7 @@ Precio mínimo apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 129 + 131 @@ -2947,7 +2947,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 240 + 244 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2983,7 +2983,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 318 + 322 libs/ui/src/lib/i18n.ts @@ -3319,7 +3319,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 184 + 188 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -3367,7 +3367,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 249 + 253 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -3415,7 +3415,7 @@ Datos del mercado apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 404 + 408 libs/common/src/lib/routes/routes.ts @@ -3851,7 +3851,7 @@ Comisiones apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 206 + 210 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -6125,7 +6125,7 @@ Inversión apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 169 + 173 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -6157,7 +6157,7 @@ Cerrar posición apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 446 + 450 @@ -6434,7 +6434,7 @@ Operación apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 227 + 231 @@ -6442,7 +6442,7 @@ Rendimiento por dividendo apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 194 + 198 @@ -7396,7 +7396,7 @@ Ingresa tu clave API de Ghostfolio: apps/client/src/app/pages/api/api-page.component.ts - 62 + 63 @@ -7672,7 +7672,7 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 380 + 389 @@ -7704,11 +7704,11 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 380 + 389 libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 393 + 402 @@ -8437,7 +8437,7 @@ Gestionar perfil de activo apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 471 + 475 diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index 92de7bab9..4baccda1b 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -578,7 +578,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 217 + 221 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -674,7 +674,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 266 + 270 @@ -690,7 +690,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 280 + 284 apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html @@ -710,7 +710,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 286 + 290 apps/client/src/app/pages/public/public-page.html @@ -730,7 +730,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 298 + 302 @@ -1322,7 +1322,7 @@ Prix Minimum apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 129 + 131 @@ -1330,7 +1330,7 @@ Prix Maximum apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 145 + 149 @@ -1338,7 +1338,7 @@ Quantité apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 155 + 159 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -1358,7 +1358,7 @@ Signaler une Erreur de Données apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 456 + 460 @@ -1818,7 +1818,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 382 + 386 apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html @@ -1866,7 +1866,7 @@ Données du marché apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 404 + 408 libs/common/src/lib/routes/routes.ts @@ -2186,11 +2186,11 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 229 + 233 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 346 + 350 apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html @@ -2550,7 +2550,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 184 + 188 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -3114,7 +3114,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 240 + 244 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -3146,7 +3146,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 249 + 253 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -3210,7 +3210,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 318 + 322 libs/ui/src/lib/i18n.ts @@ -3850,7 +3850,7 @@ Frais apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 206 + 210 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -6124,7 +6124,7 @@ Investissement apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 169 + 173 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -6156,7 +6156,7 @@ Close Holding apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 446 + 450 @@ -6433,7 +6433,7 @@ Activitées apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 227 + 231 @@ -6441,7 +6441,7 @@ Rendement en Dividende apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 194 + 198 @@ -7395,7 +7395,7 @@ Veuillez saisir votre clé API Ghostfolio : apps/client/src/app/pages/api/api-page.component.ts - 62 + 63 @@ -7671,7 +7671,7 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 380 + 389 @@ -7703,11 +7703,11 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 380 + 389 libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 393 + 402 @@ -8436,7 +8436,7 @@ Gérer le profil d’actif apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 471 + 475 diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index 0ef40ab4f..2bde747e5 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -515,7 +515,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 217 + 221 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -1007,7 +1007,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 286 + 290 apps/client/src/app/pages/public/public-page.html @@ -1027,7 +1027,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 298 + 302 @@ -1051,7 +1051,7 @@ Segnala un’anomalia dei dati apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 456 + 460 @@ -1451,7 +1451,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 382 + 386 apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html @@ -2071,7 +2071,7 @@ Quantità apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 155 + 159 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2151,11 +2151,11 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 229 + 233 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 346 + 350 apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html @@ -2559,7 +2559,7 @@ Prezzo massimo apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 145 + 149 @@ -2595,7 +2595,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 266 + 270 @@ -2611,7 +2611,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 280 + 284 apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html @@ -2623,7 +2623,7 @@ Prezzo minimo apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 129 + 131 @@ -2947,7 +2947,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 240 + 244 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2983,7 +2983,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 318 + 322 libs/ui/src/lib/i18n.ts @@ -3319,7 +3319,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 184 + 188 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -3367,7 +3367,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 249 + 253 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -3415,7 +3415,7 @@ Dati del mercato apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 404 + 408 libs/common/src/lib/routes/routes.ts @@ -3851,7 +3851,7 @@ Commissioni apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 206 + 210 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -6125,7 +6125,7 @@ Investimento apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 169 + 173 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -6157,7 +6157,7 @@ Close Holding apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 446 + 450 @@ -6434,7 +6434,7 @@ Attività apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 227 + 231 @@ -6442,7 +6442,7 @@ Rendimento da Dividendi apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 194 + 198 @@ -7396,7 +7396,7 @@ Inserisci la tua API key di Ghostfolio: apps/client/src/app/pages/api/api-page.component.ts - 62 + 63 @@ -7672,7 +7672,7 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 380 + 389 @@ -7704,11 +7704,11 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 380 + 389 libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 393 + 402 @@ -8437,7 +8437,7 @@ Gestisci profilo risorsa apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 471 + 475 diff --git a/apps/client/src/locales/messages.ja.xlf b/apps/client/src/locales/messages.ja.xlf index 03c6ce0bd..1017b3418 100644 --- a/apps/client/src/locales/messages.ja.xlf +++ b/apps/client/src/locales/messages.ja.xlf @@ -844,7 +844,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 217 + 221 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -996,7 +996,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 266 + 270 @@ -1012,7 +1012,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 280 + 284 apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html @@ -1032,7 +1032,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 286 + 290 apps/client/src/app/pages/public/public-page.html @@ -1052,7 +1052,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 298 + 302 @@ -1928,7 +1928,7 @@ 手数料 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 206 + 210 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -2032,7 +2032,7 @@ 最低価格 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 129 + 131 @@ -2040,7 +2040,7 @@ 最高価格 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 145 + 149 @@ -2048,7 +2048,7 @@ 数量 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 155 + 159 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2068,7 +2068,7 @@ データグリッチの報告 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 456 + 460 @@ -2796,7 +2796,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 382 + 386 apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html @@ -2892,7 +2892,7 @@ マーケットデータ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 404 + 408 libs/common/src/lib/routes/routes.ts @@ -3876,11 +3876,11 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 229 + 233 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 346 + 350 apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html @@ -4348,7 +4348,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 184 + 188 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -5481,7 +5481,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 240 + 244 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -5513,7 +5513,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 249 + 253 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -5689,7 +5689,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 318 + 322 libs/ui/src/lib/i18n.ts @@ -6157,7 +6157,7 @@ Close Holding apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 446 + 450 @@ -6173,7 +6173,7 @@ 投資 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 169 + 173 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -6458,7 +6458,7 @@ アクティビティ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 227 + 231 @@ -6466,7 +6466,7 @@ 配当利回り apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 194 + 198 @@ -7388,7 +7388,7 @@ Please enter your Ghostfolio API key: apps/client/src/app/pages/api/api-page.component.ts - 62 + 63 @@ -7696,7 +7696,7 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 380 + 389 @@ -7728,11 +7728,11 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 380 + 389 libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 393 + 402 @@ -8437,7 +8437,7 @@ Manage Asset Profile apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 471 + 475 diff --git a/apps/client/src/locales/messages.ko.xlf b/apps/client/src/locales/messages.ko.xlf index 169c73e39..7cacac433 100644 --- a/apps/client/src/locales/messages.ko.xlf +++ b/apps/client/src/locales/messages.ko.xlf @@ -844,7 +844,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 217 + 221 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -996,7 +996,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 266 + 270 @@ -1012,7 +1012,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 280 + 284 apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html @@ -1032,7 +1032,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 286 + 290 apps/client/src/app/pages/public/public-page.html @@ -1052,7 +1052,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 298 + 302 @@ -1928,7 +1928,7 @@ 수수료 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 206 + 210 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -2032,7 +2032,7 @@ 최저가 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 129 + 131 @@ -2040,7 +2040,7 @@ 최고가 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 145 + 149 @@ -2048,7 +2048,7 @@ 수량 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 155 + 159 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2068,7 +2068,7 @@ 데이터 결함 보고 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 456 + 460 @@ -2796,7 +2796,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 382 + 386 apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html @@ -2892,7 +2892,7 @@ 시장 데이터 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 404 + 408 libs/common/src/lib/routes/routes.ts @@ -3868,11 +3868,11 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 229 + 233 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 346 + 350 apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html @@ -4340,7 +4340,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 184 + 188 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -5473,7 +5473,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 240 + 244 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -5505,7 +5505,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 249 + 253 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -5689,7 +5689,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 318 + 322 libs/ui/src/lib/i18n.ts @@ -6157,7 +6157,7 @@ 보유 포지션 종료 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 446 + 450 @@ -6173,7 +6173,7 @@ 투자 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 169 + 173 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -6458,7 +6458,7 @@ 거래 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 227 + 231 @@ -6466,7 +6466,7 @@ 배당수익률 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 194 + 198 @@ -7388,7 +7388,7 @@ Ghostfolio API 키를 입력하세요: apps/client/src/app/pages/api/api-page.component.ts - 62 + 63 @@ -7696,7 +7696,7 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 380 + 389 @@ -7728,11 +7728,11 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 380 + 389 libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 393 + 402 @@ -8437,7 +8437,7 @@ 자산 프로필 관리 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 471 + 475 diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index 7c74e5806..80a268666 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -514,7 +514,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 217 + 221 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -1006,7 +1006,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 286 + 290 apps/client/src/app/pages/public/public-page.html @@ -1026,7 +1026,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 298 + 302 @@ -1050,7 +1050,7 @@ Gegevensstoring melden apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 456 + 460 @@ -1450,7 +1450,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 382 + 386 apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html @@ -2070,7 +2070,7 @@ Hoeveelheid apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 155 + 159 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2150,11 +2150,11 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 229 + 233 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 346 + 350 apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html @@ -2558,7 +2558,7 @@ Maximale prijs apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 145 + 149 @@ -2594,7 +2594,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 266 + 270 @@ -2610,7 +2610,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 280 + 284 apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html @@ -2622,7 +2622,7 @@ Minimale prijs apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 129 + 131 @@ -2946,7 +2946,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 240 + 244 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2982,7 +2982,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 318 + 322 libs/ui/src/lib/i18n.ts @@ -3318,7 +3318,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 184 + 188 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -3366,7 +3366,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 249 + 253 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -3414,7 +3414,7 @@ Marktgegevens apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 404 + 408 libs/common/src/lib/routes/routes.ts @@ -3850,7 +3850,7 @@ Kosten apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 206 + 210 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -6124,7 +6124,7 @@ Investering apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 169 + 173 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -6156,7 +6156,7 @@ Sluit Holding apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 446 + 450 @@ -6433,7 +6433,7 @@ Activiteit apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 227 + 231 @@ -6441,7 +6441,7 @@ Dividendrendement apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 194 + 198 @@ -7395,7 +7395,7 @@ Voer uw Ghostfolio API-sleutel in: apps/client/src/app/pages/api/api-page.component.ts - 62 + 63 @@ -7671,7 +7671,7 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 380 + 389 @@ -7703,11 +7703,11 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 380 + 389 libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 393 + 402 @@ -8436,7 +8436,7 @@ Beheer activaprofiel apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 471 + 475 diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index bd6c3a73d..37f9954b8 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -835,7 +835,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 217 + 221 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -963,7 +963,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 266 + 270 @@ -979,7 +979,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 280 + 284 apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html @@ -999,7 +999,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 286 + 290 apps/client/src/app/pages/public/public-page.html @@ -1019,7 +1019,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 298 + 302 @@ -1895,7 +1895,7 @@ Opłaty apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 206 + 210 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -1999,7 +1999,7 @@ Cena Minimalna apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 129 + 131 @@ -2007,7 +2007,7 @@ Cena Maksymalna apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 145 + 149 @@ -2015,7 +2015,7 @@ Ilość apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 155 + 159 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2035,7 +2035,7 @@ Zgłoś Błąd Danych apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 456 + 460 @@ -2763,7 +2763,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 382 + 386 apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html @@ -2859,7 +2859,7 @@ Dane Rynkowe apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 404 + 408 libs/common/src/lib/routes/routes.ts @@ -3835,11 +3835,11 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 229 + 233 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 346 + 350 apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html @@ -4307,7 +4307,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 184 + 188 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -5396,7 +5396,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 240 + 244 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -5428,7 +5428,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 249 + 253 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -5612,7 +5612,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 318 + 322 libs/ui/src/lib/i18n.ts @@ -6124,7 +6124,7 @@ Inwestycje apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 169 + 173 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -6156,7 +6156,7 @@ Zamknij pozycję apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 446 + 450 @@ -6433,7 +6433,7 @@ Aktywność apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 227 + 231 @@ -6441,7 +6441,7 @@ Dochód z Dywidendy apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 194 + 198 @@ -7395,7 +7395,7 @@ Wprowadź swój klucz API konta Ghostfolio: apps/client/src/app/pages/api/api-page.component.ts - 62 + 63 @@ -7671,7 +7671,7 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 380 + 389 @@ -7703,11 +7703,11 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 380 + 389 libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 393 + 402 @@ -8436,7 +8436,7 @@ Zarządzaj profilem aktywów apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 471 + 475 diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index 6776dcf27..a0e3546db 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -578,7 +578,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 217 + 221 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -1190,7 +1190,7 @@ Preço Mínimo apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 129 + 131 @@ -1198,7 +1198,7 @@ Preço Máximo apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 145 + 149 @@ -1206,7 +1206,7 @@ Quantidade apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 155 + 159 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -1230,7 +1230,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 266 + 270 @@ -1246,7 +1246,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 280 + 284 apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html @@ -1266,7 +1266,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 286 + 290 apps/client/src/app/pages/public/public-page.html @@ -1286,7 +1286,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 298 + 302 @@ -1310,7 +1310,7 @@ Dados do Relatório com Problema apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 456 + 460 @@ -1818,7 +1818,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 382 + 386 apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html @@ -2158,11 +2158,11 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 229 + 233 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 346 + 350 apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html @@ -2978,7 +2978,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 240 + 244 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -3046,7 +3046,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 318 + 322 libs/ui/src/lib/i18n.ts @@ -3326,7 +3326,7 @@ Dados de Mercado apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 404 + 408 libs/common/src/lib/routes/routes.ts @@ -3386,7 +3386,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 184 + 188 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -3434,7 +3434,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 249 + 253 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -3850,7 +3850,7 @@ Taxas apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 206 + 210 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -6124,7 +6124,7 @@ Investimento apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 169 + 173 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -6156,7 +6156,7 @@ Close Holding apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 446 + 450 @@ -6433,7 +6433,7 @@ Atividade apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 227 + 231 @@ -6441,7 +6441,7 @@ Rendimento de dividendos apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 194 + 198 @@ -7395,7 +7395,7 @@ Por favor, insira a sua chave da API do Ghostfolio: apps/client/src/app/pages/api/api-page.component.ts - 62 + 63 @@ -7671,7 +7671,7 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 380 + 389 @@ -7703,11 +7703,11 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 380 + 389 libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 393 + 402 @@ -8436,7 +8436,7 @@ Gerenciar perfil de ativos apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 471 + 475 diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index cdd1c2205..16f16d526 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -787,7 +787,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 217 + 221 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -883,7 +883,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 266 + 270 @@ -899,7 +899,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 280 + 284 apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html @@ -919,7 +919,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 286 + 290 apps/client/src/app/pages/public/public-page.html @@ -939,7 +939,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 298 + 302 @@ -1835,7 +1835,7 @@ Asgari Fiyat apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 129 + 131 @@ -1843,7 +1843,7 @@ Azami Fiyat apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 145 + 149 @@ -1851,7 +1851,7 @@ Miktar apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 155 + 159 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -1871,7 +1871,7 @@ Komisyon apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 206 + 210 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -1883,7 +1883,7 @@ Rapor Veri Sorunu apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 456 + 460 @@ -2307,7 +2307,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 382 + 386 apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html @@ -2371,7 +2371,7 @@ Piyasa Verileri apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 404 + 408 libs/common/src/lib/routes/routes.ts @@ -3283,11 +3283,11 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 229 + 233 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 346 + 350 apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html @@ -3739,7 +3739,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 184 + 188 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -5072,7 +5072,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 240 + 244 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -5104,7 +5104,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 249 + 253 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -5288,7 +5288,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 318 + 322 libs/ui/src/lib/i18n.ts @@ -6124,7 +6124,7 @@ Yatırım apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 169 + 173 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -6156,7 +6156,7 @@ Close Holding apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 446 + 450 @@ -6433,7 +6433,7 @@ Etkinlik apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 227 + 231 @@ -6441,7 +6441,7 @@ Temettü Getiri apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 194 + 198 @@ -7395,7 +7395,7 @@ Ghostfolio API anahtarınızı girin: apps/client/src/app/pages/api/api-page.component.ts - 62 + 63 @@ -7671,7 +7671,7 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 380 + 389 @@ -7703,11 +7703,11 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 380 + 389 libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 393 + 402 @@ -8436,7 +8436,7 @@ Manage Asset Profile apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 471 + 475 diff --git a/apps/client/src/locales/messages.uk.xlf b/apps/client/src/locales/messages.uk.xlf index 9f3471aa1..e1a191156 100644 --- a/apps/client/src/locales/messages.uk.xlf +++ b/apps/client/src/locales/messages.uk.xlf @@ -939,7 +939,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 217 + 221 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -1071,7 +1071,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 266 + 270 @@ -1087,7 +1087,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 280 + 284 apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html @@ -1107,7 +1107,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 286 + 290 apps/client/src/app/pages/public/public-page.html @@ -1127,7 +1127,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 298 + 302 @@ -1919,7 +1919,7 @@ Мінімальна ціна apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 129 + 131 @@ -1927,7 +1927,7 @@ Максимальна ціна apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 145 + 149 @@ -1935,7 +1935,7 @@ Кількість apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 155 + 159 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -1955,7 +1955,7 @@ Дохідність дивіденду apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 194 + 198 @@ -1963,7 +1963,7 @@ Комісії apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 206 + 210 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -1975,7 +1975,7 @@ Активність apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 227 + 231 @@ -1983,7 +1983,7 @@ Повідомити про збій даних apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 456 + 460 @@ -3351,7 +3351,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 382 + 386 apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html @@ -3459,7 +3459,7 @@ Ринкові дані apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 404 + 408 libs/common/src/lib/routes/routes.ts @@ -3535,7 +3535,7 @@ Будь ласка, введіть ваш ключ API Ghostfolio: apps/client/src/app/pages/api/api-page.component.ts - 62 + 63 @@ -4484,11 +4484,11 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 229 + 233 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 346 + 350 apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html @@ -5008,7 +5008,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 184 + 188 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -5036,7 +5036,7 @@ Інвестиції apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 169 + 173 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -5084,7 +5084,7 @@ Close Holding apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 446 + 450 @@ -6815,7 +6815,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 240 + 244 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -6847,7 +6847,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 249 + 253 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -7151,7 +7151,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 318 + 322 libs/ui/src/lib/i18n.ts @@ -7671,7 +7671,7 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 380 + 389 @@ -7703,11 +7703,11 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 380 + 389 libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 393 + 402 @@ -8436,7 +8436,7 @@ Manage Asset Profile apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 471 + 475 diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index da5f4b9d4..c60175b7b 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -788,7 +788,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 217 + 221 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -924,7 +924,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 266 + 270 @@ -939,7 +939,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 280 + 284 apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html @@ -958,7 +958,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 286 + 290 apps/client/src/app/pages/public/public-page.html @@ -977,7 +977,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 298 + 302 @@ -1768,7 +1768,7 @@ Fees apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 206 + 210 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -1861,21 +1861,21 @@ Minimum Price apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 129 + 131 Maximum Price apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 145 + 149 Quantity apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 155 + 159 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -1894,7 +1894,7 @@ Report Data Glitch apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 456 + 460 @@ -2557,7 +2557,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 382 + 386 apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html @@ -2644,7 +2644,7 @@ Market Data apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 404 + 408 libs/common/src/lib/routes/routes.ts @@ -3543,11 +3543,11 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 229 + 233 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 346 + 350 apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html @@ -3967,7 +3967,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 184 + 188 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -4991,7 +4991,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 240 + 244 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -5022,7 +5022,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 249 + 253 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -5181,7 +5181,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 318 + 322 libs/ui/src/lib/i18n.ts @@ -5600,7 +5600,7 @@ Close Holding apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 446 + 450 @@ -5614,7 +5614,7 @@ Investment apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 169 + 173 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -5871,14 +5871,14 @@ Activity apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 227 + 231 Dividend Yield apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 194 + 198 @@ -6711,7 +6711,7 @@ Please enter your Ghostfolio API key: apps/client/src/app/pages/api/api-page.component.ts - 62 + 63 @@ -6987,7 +6987,7 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 380 + 389 @@ -7017,11 +7017,11 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 380 + 389 libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 393 + 402 @@ -7647,7 +7647,7 @@ Manage Asset Profile apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 471 + 475 diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf index 2e1c78d00..0193b33e8 100644 --- a/apps/client/src/locales/messages.zh.xlf +++ b/apps/client/src/locales/messages.zh.xlf @@ -844,7 +844,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 217 + 221 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -972,7 +972,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 266 + 270 @@ -988,7 +988,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 280 + 284 apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html @@ -1008,7 +1008,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 286 + 290 apps/client/src/app/pages/public/public-page.html @@ -1028,7 +1028,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 298 + 302 @@ -1904,7 +1904,7 @@ 费用 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 206 + 210 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -2008,7 +2008,7 @@ 最低价格 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 129 + 131 @@ -2016,7 +2016,7 @@ 最高价格 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 145 + 149 @@ -2024,7 +2024,7 @@ 数量 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 155 + 159 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2044,7 +2044,7 @@ 报告数据故障 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 456 + 460 @@ -2772,7 +2772,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 382 + 386 apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html @@ -2868,7 +2868,7 @@ 市场数据 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 404 + 408 libs/common/src/lib/routes/routes.ts @@ -3852,11 +3852,11 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 229 + 233 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 346 + 350 apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html @@ -4324,7 +4324,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 184 + 188 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -5457,7 +5457,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 240 + 244 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -5489,7 +5489,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 249 + 253 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -5665,7 +5665,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 318 + 322 libs/ui/src/lib/i18n.ts @@ -6133,7 +6133,7 @@ 关闭持仓 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 446 + 450 @@ -6149,7 +6149,7 @@ 投资 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 169 + 173 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -6434,7 +6434,7 @@ 活动 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 227 + 231 @@ -6442,7 +6442,7 @@ 股息收益率 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 194 + 198 @@ -7396,7 +7396,7 @@ 请输入您的 Ghostfolio API 密钥: apps/client/src/app/pages/api/api-page.component.ts - 62 + 63 @@ -7672,7 +7672,7 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 380 + 389 @@ -7704,11 +7704,11 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 380 + 389 libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 393 + 402 @@ -8437,7 +8437,7 @@ 管理资产概况 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 471 + 475 diff --git a/libs/common/src/lib/config.ts b/libs/common/src/lib/config.ts index 4f3e9dd9d..c60170bbb 100644 --- a/libs/common/src/lib/config.ts +++ b/libs/common/src/lib/config.ts @@ -323,7 +323,7 @@ export const SUPPORTED_LANGUAGE_CODES = [ 'tr', 'uk', 'zh' -]; +] as const; export const TAG_ID_EMERGENCY_FUND = '4452656d-9fa4-4bd0-ba38-70492e31d180'; export const TAG_ID_EXCLUDE_FROM_ANALYSIS = diff --git a/libs/common/src/lib/interfaces/index.ts b/libs/common/src/lib/interfaces/index.ts index 393810edd..deec60ab7 100644 --- a/libs/common/src/lib/interfaces/index.ts +++ b/libs/common/src/lib/interfaces/index.ts @@ -35,7 +35,7 @@ import type { PortfolioPerformance } from './portfolio-performance.interface'; import type { PortfolioPosition } from './portfolio-position.interface'; import type { PortfolioReportRule } from './portfolio-report-rule.interface'; import type { PortfolioSummary } from './portfolio-summary.interface'; -import type { Product } from './product'; +import type { Product } from './product.interface'; import type { ReferralPartner } from './referral-partner.interface'; import type { AccessTokenResponse } from './responses/access-token-response.interface'; import type { AccountBalancesResponse } from './responses/account-balances-response.interface'; diff --git a/libs/common/src/lib/interfaces/product.ts b/libs/common/src/lib/interfaces/product.interface.ts similarity index 72% rename from libs/common/src/lib/interfaces/product.ts rename to libs/common/src/lib/interfaces/product.interface.ts index 6cd88fbe8..b11c7ecad 100644 --- a/libs/common/src/lib/interfaces/product.ts +++ b/libs/common/src/lib/interfaces/product.interface.ts @@ -1,5 +1,8 @@ +import { ProductCategory, ProductPlatform } from '@ghostfolio/common/types'; + export interface Product { alias?: string; + categories?: ProductCategory[]; founded?: number; hasFreePlan?: boolean; hasSelfHostingAbility?: boolean; @@ -10,6 +13,7 @@ export interface Product { name: string; note?: string; origin?: string; + platforms?: ProductPlatform[]; pricingPerYear?: string; regions?: string[]; slogan?: string; diff --git a/libs/common/src/lib/types/index.ts b/libs/common/src/lib/types/index.ts index b6186c9e7..aa6893bc6 100644 --- a/libs/common/src/lib/types/index.ts +++ b/libs/common/src/lib/types/index.ts @@ -16,6 +16,8 @@ import type { MarketDataPreset } from './market-data-preset.type'; import type { MarketState } from './market-state.type'; import type { Market } from './market.type'; import type { OrderWithAccount } from './order-with-account.type'; +import type { ProductCategory } from './product-category.type'; +import type { ProductPlatform } from './product-platform.type'; import type { PropertyKey } from './property-key.type'; import type { RequestWithUser } from './request-with-user.type'; import type { SectorName } from './sector-name.type'; @@ -42,6 +44,8 @@ export type { MarketDataPreset, MarketState, OrderWithAccount, + ProductCategory, + ProductPlatform, PropertyKey, RequestWithUser, SectorName, diff --git a/libs/common/src/lib/types/product-category.type.ts b/libs/common/src/lib/types/product-category.type.ts new file mode 100644 index 000000000..7fae17a72 --- /dev/null +++ b/libs/common/src/lib/types/product-category.type.ts @@ -0,0 +1,12 @@ +export type ProductCategory = + | 'BUDGETING' + | 'CRYPTOCURRENCY' + | 'DIVIDEND_TRACKING' + | 'ETF_TRACKING' + | 'FAMILY_OFFICE' + | 'FINANCIAL_PLANNING' + | 'INVESTMENT_RESEARCH' + | 'NET_WORTH_TRACKING' + | 'STOCK_TRACKING' + | 'TAX_REPORTING' + | 'WEALTH_MANAGEMENT'; diff --git a/libs/common/src/lib/types/product-platform.type.ts b/libs/common/src/lib/types/product-platform.type.ts new file mode 100644 index 000000000..01f647e49 --- /dev/null +++ b/libs/common/src/lib/types/product-platform.type.ts @@ -0,0 +1,7 @@ +export type ProductPlatform = + | 'ANDROID' + | 'IOS' + | 'LINUX' + | 'MACOS' + | 'WEB' + | 'WINDOWS'; diff --git a/libs/ui/src/lib/notifications/alert-dialog/alert-dialog.component.ts b/libs/ui/src/lib/notifications/alert-dialog/alert-dialog.component.ts index 5d49ea9e5..3dbe70387 100644 --- a/libs/ui/src/lib/notifications/alert-dialog/alert-dialog.component.ts +++ b/libs/ui/src/lib/notifications/alert-dialog/alert-dialog.component.ts @@ -1,10 +1,11 @@ -import { Component, inject } from '@angular/core'; +import { ChangeDetectionStrategy, Component, inject } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { MatDialogModule, MatDialogRef } from '@angular/material/dialog'; import { AlertDialogParams } from './interfaces/interfaces'; @Component({ + changeDetection: ChangeDetectionStrategy.OnPush, imports: [MatButtonModule, MatDialogModule], selector: 'gf-alert-dialog', styleUrls: ['./alert-dialog.scss'], diff --git a/libs/ui/src/lib/notifications/confirmation-dialog/confirmation-dialog.component.ts b/libs/ui/src/lib/notifications/confirmation-dialog/confirmation-dialog.component.ts index 0ae0adfff..38509ea99 100644 --- a/libs/ui/src/lib/notifications/confirmation-dialog/confirmation-dialog.component.ts +++ b/libs/ui/src/lib/notifications/confirmation-dialog/confirmation-dialog.component.ts @@ -1,12 +1,18 @@ import { ConfirmationDialogType } from '@ghostfolio/common/enums'; -import { Component, HostListener, inject } from '@angular/core'; +import { + ChangeDetectionStrategy, + Component, + HostListener, + inject +} from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { MatDialogModule, MatDialogRef } from '@angular/material/dialog'; import { ConfirmDialogParams } from './interfaces/interfaces'; @Component({ + changeDetection: ChangeDetectionStrategy.OnPush, imports: [MatButtonModule, MatDialogModule], selector: 'gf-confirmation-dialog', styleUrls: ['./confirmation-dialog.scss'], diff --git a/libs/ui/src/lib/notifications/prompt-dialog/prompt-dialog.component.ts b/libs/ui/src/lib/notifications/prompt-dialog/prompt-dialog.component.ts index 2205e235c..e9750c3f5 100644 --- a/libs/ui/src/lib/notifications/prompt-dialog/prompt-dialog.component.ts +++ b/libs/ui/src/lib/notifications/prompt-dialog/prompt-dialog.component.ts @@ -1,4 +1,4 @@ -import { Component, inject } from '@angular/core'; +import { ChangeDetectionStrategy, Component, inject } from '@angular/core'; import { FormControl, ReactiveFormsModule } from '@angular/forms'; import { MatButtonModule } from '@angular/material/button'; import { MatDialogModule, MatDialogRef } from '@angular/material/dialog'; @@ -8,6 +8,7 @@ import { MatInputModule } from '@angular/material/input'; import { PromptDialogParams } from './interfaces/interfaces'; @Component({ + changeDetection: ChangeDetectionStrategy.OnPush, imports: [ MatButtonModule, MatDialogModule, diff --git a/package-lock.json b/package-lock.json index ac172b504..27789c070 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ghostfolio", - "version": "3.19.1", + "version": "3.20.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ghostfolio", - "version": "3.19.1", + "version": "3.20.0", "hasInstallScript": true, "license": "AGPL-3.0", "dependencies": { @@ -90,7 +90,7 @@ "passport-openidconnect": "0.1.2", "reflect-metadata": "0.2.2", "rxjs": "7.8.1", - "stripe": "21.0.1", + "stripe": "22.2.3", "svgmap": "2.21.0", "tablemark": "4.1.0", "twitter-api-v2": "1.29.0", @@ -32298,9 +32298,9 @@ } }, "node_modules/stripe": { - "version": "21.0.1", - "resolved": "https://registry.npmjs.org/stripe/-/stripe-21.0.1.tgz", - "integrity": "sha512-ocv0j7dWttswDWV2XL/kb6+yiLpDXNXL3RQAOB5OB2kr49z0cEatdQc12+zP/j5nrXk6rAsT4N3y/NUvBbK7Pw==", + "version": "22.2.3", + "resolved": "https://registry.npmjs.org/stripe/-/stripe-22.2.3.tgz", + "integrity": "sha512-9lrggvLtjO4Ef5WXH4t50ckHJcJgTD72xFB+KJgZCSszAH9zMV1BqU6PwmWbRLdcdX7LK6PbErBapiGK7pIb+g==", "license": "MIT", "engines": { "node": ">=18" diff --git a/package.json b/package.json index b9d5be234..634b70cde 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ghostfolio", - "version": "3.19.1", + "version": "3.20.0", "homepage": "https://ghostfol.io", "license": "AGPL-3.0", "repository": "https://github.com/ghostfolio/ghostfolio", @@ -134,7 +134,7 @@ "passport-openidconnect": "0.1.2", "reflect-metadata": "0.2.2", "rxjs": "7.8.1", - "stripe": "21.0.1", + "stripe": "22.2.3", "svgmap": "2.21.0", "tablemark": "4.1.0", "twitter-api-v2": "1.29.0",