From 61d3459174ea93fa7aad80ba7e90c09c93ba0946 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Wed, 2 Jul 2025 20:50:37 +0200 Subject: [PATCH 1/9] Feature/upgrade @internationalized/number to version 3.6.3 (#5071) * Upgrade @internationalized/number to version 3.6.3 * Update changelog --- CHANGELOG.md | 1 + package-lock.json | 8 ++++---- package.json | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9a3544bfc..385b67120 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Made the `getByKey()` function generic in the property service +- Upgraded `@internationalized/number` from version `3.6.0` to `3.6.3` ## 2.176.0 - 2025-06-30 diff --git a/package-lock.json b/package-lock.json index de7fa6be7..af9676334 100644 --- a/package-lock.json +++ b/package-lock.json @@ -29,7 +29,7 @@ "@dfinity/identity": "0.15.7", "@dfinity/principal": "0.15.7", "@dinero.js/currencies": "2.0.0-alpha.8", - "@internationalized/number": "3.6.0", + "@internationalized/number": "3.6.3", "@keyv/redis": "4.4.0", "@nestjs/bull": "11.0.2", "@nestjs/cache-manager": "3.0.1", @@ -4341,9 +4341,9 @@ } }, "node_modules/@internationalized/number": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@internationalized/number/-/number-3.6.0.tgz", - "integrity": "sha512-PtrRcJVy7nw++wn4W2OuePQQfTqDzfusSuY1QTtui4wa7r+rGVtR75pO8CyKvHvzyQYi3Q1uO5sY0AsB4e65Bw==", + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/@internationalized/number/-/number-3.6.3.tgz", + "integrity": "sha512-p+Zh1sb6EfrfVaS86jlHGQ9HA66fJhV9x5LiE5vCbZtXEHAuhcmUZUdZ4WrFpUBfNalr2OkAJI5AcKEQF+Lebw==", "license": "Apache-2.0", "dependencies": { "@swc/helpers": "^0.5.0" diff --git a/package.json b/package.json index e18a60796..d8fc4bedb 100644 --- a/package.json +++ b/package.json @@ -75,7 +75,7 @@ "@dfinity/identity": "0.15.7", "@dfinity/principal": "0.15.7", "@dinero.js/currencies": "2.0.0-alpha.8", - "@internationalized/number": "3.6.0", + "@internationalized/number": "3.6.3", "@keyv/redis": "4.4.0", "@nestjs/bull": "11.0.2", "@nestjs/cache-manager": "3.0.1", From 53127340f412f17aaed0ee04c4d5d36ddfafad75 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Wed, 2 Jul 2025 21:03:49 +0200 Subject: [PATCH 2/9] Feature/extend markets (#5076) * Extend markets * Clean up --- CHANGELOG.md | 4 + .../market-data/market-data.controller.ts | 56 +++++++- .../market-data/market-data.module.ts | 8 +- apps/api/src/app/info/info.service.ts | 7 +- apps/api/src/app/user/user.service.ts | 1 + .../twitter-bot/twitter-bot.service.ts | 4 +- .../components/markets/markets.component.ts | 129 ++++++++++++++++++ .../src/app/components/markets/markets.html | 60 ++++++++ .../src/app/components/markets/markets.scss | 7 + .../pages/home/home-page-routing.module.ts | 6 + .../src/app/pages/home/home-page.component.ts | 19 ++- apps/client/src/app/services/data.service.ts | 29 ++++ libs/common/src/lib/config.ts | 6 +- libs/common/src/lib/interfaces/index.ts | 2 + ...rket-data-of-markets-response.interface.ts | 8 ++ libs/common/src/lib/permissions.ts | 1 + libs/common/src/lib/routes/routes.ts | 5 + .../lib/types/fear-and-greed-index.type.ts | 1 + libs/common/src/lib/types/index.ts | 2 + 19 files changed, 342 insertions(+), 13 deletions(-) create mode 100644 apps/client/src/app/components/markets/markets.component.ts create mode 100644 apps/client/src/app/components/markets/markets.html create mode 100644 apps/client/src/app/components/markets/markets.scss create mode 100644 libs/common/src/lib/interfaces/responses/market-data-of-markets-response.interface.ts create mode 100644 libs/common/src/lib/types/fear-and-greed-index.type.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index 385b67120..375b48603 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +### Added + +- Extended the _Fear & Greed Index_ (market mood) in the markets overview by cryptocurrencies (experimental) + ### Changed - Made the `getByKey()` function generic in the property service diff --git a/apps/api/src/app/endpoints/market-data/market-data.controller.ts b/apps/api/src/app/endpoints/market-data/market-data.controller.ts index 96fca1b3c..4843536da 100644 --- a/apps/api/src/app/endpoints/market-data/market-data.controller.ts +++ b/apps/api/src/app/endpoints/market-data/market-data.controller.ts @@ -1,8 +1,20 @@ import { AdminService } from '@ghostfolio/api/app/admin/admin.service'; +import { SymbolService } from '@ghostfolio/api/app/symbol/symbol.service'; +import { HasPermission } from '@ghostfolio/api/decorators/has-permission.decorator'; +import { HasPermissionGuard } from '@ghostfolio/api/guards/has-permission.guard'; import { MarketDataService } from '@ghostfolio/api/services/market-data/market-data.service'; import { SymbolProfileService } from '@ghostfolio/api/services/symbol-profile/symbol-profile.service'; +import { + ghostfolioFearAndGreedIndexDataSourceCryptocurrencies, + ghostfolioFearAndGreedIndexDataSourceStocks, + ghostfolioFearAndGreedIndexSymbolCryptocurrencies, + ghostfolioFearAndGreedIndexSymbolStocks +} from '@ghostfolio/common/config'; import { getCurrencyFromSymbol, isCurrency } from '@ghostfolio/common/helper'; -import { MarketDataDetailsResponse } from '@ghostfolio/common/interfaces'; +import { + MarketDataDetailsResponse, + MarketDataOfMarketsResponse +} from '@ghostfolio/common/interfaces'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { RequestWithUser } from '@ghostfolio/common/types'; @@ -14,6 +26,7 @@ import { Inject, Param, Post, + Query, UseGuards } from '@nestjs/common'; import { REQUEST } from '@nestjs/core'; @@ -30,9 +43,48 @@ export class MarketDataController { private readonly adminService: AdminService, private readonly marketDataService: MarketDataService, @Inject(REQUEST) private readonly request: RequestWithUser, - private readonly symbolProfileService: SymbolProfileService + private readonly symbolProfileService: SymbolProfileService, + private readonly symbolService: SymbolService ) {} + @Get('markets') + @HasPermission(permissions.readMarketDataOfMarkets) + @UseGuards(AuthGuard('jwt'), HasPermissionGuard) + public async getMarketDataOfMarkets( + @Query('includeHistoricalData') includeHistoricalData = 0 + ): Promise { + const [ + marketDataFearAndGreedIndexCryptocurrencies, + marketDataFearAndGreedIndexStocks + ] = await Promise.all([ + this.symbolService.get({ + includeHistoricalData, + dataGatheringItem: { + dataSource: ghostfolioFearAndGreedIndexDataSourceCryptocurrencies, + symbol: ghostfolioFearAndGreedIndexSymbolCryptocurrencies + } + }), + this.symbolService.get({ + includeHistoricalData, + dataGatheringItem: { + dataSource: ghostfolioFearAndGreedIndexDataSourceStocks, + symbol: ghostfolioFearAndGreedIndexSymbolStocks + } + }) + ]); + + return { + fearAndGreedIndex: { + CRYPTOCURRENCIES: { + ...marketDataFearAndGreedIndexCryptocurrencies + }, + STOCKS: { + ...marketDataFearAndGreedIndexStocks + } + } + }; + } + @Get(':dataSource/:symbol') @UseGuards(AuthGuard('jwt')) public async getMarketDataBySymbol( diff --git a/apps/api/src/app/endpoints/market-data/market-data.module.ts b/apps/api/src/app/endpoints/market-data/market-data.module.ts index 2050889fd..a8b355de3 100644 --- a/apps/api/src/app/endpoints/market-data/market-data.module.ts +++ b/apps/api/src/app/endpoints/market-data/market-data.module.ts @@ -1,4 +1,5 @@ import { AdminModule } from '@ghostfolio/api/app/admin/admin.module'; +import { SymbolModule } from '@ghostfolio/api/app/symbol/symbol.module'; import { MarketDataModule as MarketDataServiceModule } from '@ghostfolio/api/services/market-data/market-data.module'; import { SymbolProfileModule } from '@ghostfolio/api/services/symbol-profile/symbol-profile.module'; @@ -8,6 +9,11 @@ import { MarketDataController } from './market-data.controller'; @Module({ controllers: [MarketDataController], - imports: [AdminModule, MarketDataServiceModule, SymbolProfileModule] + imports: [ + AdminModule, + MarketDataServiceModule, + SymbolModule, + SymbolProfileModule + ] }) export class MarketDataModule {} diff --git a/apps/api/src/app/info/info.service.ts b/apps/api/src/app/info/info.service.ts index 6b6c40fbb..c31f601e3 100644 --- a/apps/api/src/app/info/info.service.ts +++ b/apps/api/src/app/info/info.service.ts @@ -14,7 +14,7 @@ import { PROPERTY_DEMO_USER_ID, PROPERTY_IS_READ_ONLY_MODE, PROPERTY_SLACK_COMMUNITY_USERS, - ghostfolioFearAndGreedIndexDataSource + ghostfolioFearAndGreedIndexDataSourceStocks } from '@ghostfolio/common/config'; import { DATE_FORMAT, @@ -54,10 +54,11 @@ export class InfoService { if (this.configurationService.get('ENABLE_FEATURE_FEAR_AND_GREED_INDEX')) { if (this.configurationService.get('ENABLE_FEATURE_SUBSCRIPTION')) { info.fearAndGreedDataSource = encodeDataSource( - ghostfolioFearAndGreedIndexDataSource + ghostfolioFearAndGreedIndexDataSourceStocks ); } else { - info.fearAndGreedDataSource = ghostfolioFearAndGreedIndexDataSource; + info.fearAndGreedDataSource = + ghostfolioFearAndGreedIndexDataSourceStocks; } globalPermissions.push(permissions.enableFearAndGreedIndex); diff --git a/apps/api/src/app/user/user.service.ts b/apps/api/src/app/user/user.service.ts index 3ad43301e..7b55210eb 100644 --- a/apps/api/src/app/user/user.service.ts +++ b/apps/api/src/app/user/user.service.ts @@ -419,6 +419,7 @@ export class UserService { if (!hasRole(user, Role.DEMO)) { currentPermissions.push(permissions.createApiKey); currentPermissions.push(permissions.enableDataProviderGhostfolio); + currentPermissions.push(permissions.readMarketDataOfMarkets); currentPermissions.push(permissions.reportDataGlitch); } diff --git a/apps/api/src/services/twitter-bot/twitter-bot.service.ts b/apps/api/src/services/twitter-bot/twitter-bot.service.ts index a17585c5b..ee951820d 100644 --- a/apps/api/src/services/twitter-bot/twitter-bot.service.ts +++ b/apps/api/src/services/twitter-bot/twitter-bot.service.ts @@ -2,7 +2,7 @@ import { SymbolService } from '@ghostfolio/api/app/symbol/symbol.service'; import { BenchmarkService } from '@ghostfolio/api/services/benchmark/benchmark.service'; import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { - ghostfolioFearAndGreedIndexDataSource, + ghostfolioFearAndGreedIndexDataSourceStocks, ghostfolioFearAndGreedIndexSymbol } from '@ghostfolio/common/config'; import { @@ -44,7 +44,7 @@ export class TwitterBotService { try { const symbolItem = await this.symbolService.get({ dataGatheringItem: { - dataSource: ghostfolioFearAndGreedIndexDataSource, + dataSource: ghostfolioFearAndGreedIndexDataSourceStocks, symbol: ghostfolioFearAndGreedIndexSymbol } }); diff --git a/apps/client/src/app/components/markets/markets.component.ts b/apps/client/src/app/components/markets/markets.component.ts new file mode 100644 index 000000000..2dc1eb3d3 --- /dev/null +++ b/apps/client/src/app/components/markets/markets.component.ts @@ -0,0 +1,129 @@ +import { GfFearAndGreedIndexModule } from '@ghostfolio/client/components/fear-and-greed-index/fear-and-greed-index.module'; +import { GfToggleModule } from '@ghostfolio/client/components/toggle/toggle.module'; +import { DataService } from '@ghostfolio/client/services/data.service'; +import { UserService } from '@ghostfolio/client/services/user/user.service'; +import { resetHours } from '@ghostfolio/common/helper'; +import { + Benchmark, + HistoricalDataItem, + MarketDataOfMarketsResponse, + ToggleOption, + User +} from '@ghostfolio/common/interfaces'; +import { FearAndGreedIndexMode } from '@ghostfolio/common/types'; +import { GfBenchmarkComponent } from '@ghostfolio/ui/benchmark'; +import { GfLineChartComponent } from '@ghostfolio/ui/line-chart'; + +import { CommonModule } from '@angular/common'; +import { + ChangeDetectionStrategy, + ChangeDetectorRef, + Component, + CUSTOM_ELEMENTS_SCHEMA, + OnDestroy, + OnInit +} from '@angular/core'; +import { DeviceDetectorService } from 'ngx-device-detector'; +import { Subject } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; + +@Component({ + changeDetection: ChangeDetectionStrategy.OnPush, + imports: [ + CommonModule, + GfBenchmarkComponent, + GfFearAndGreedIndexModule, + GfLineChartComponent, + GfToggleModule + ], + schemas: [CUSTOM_ELEMENTS_SCHEMA], + selector: 'gf-markets', + styleUrls: ['./markets.scss'], + templateUrl: './markets.html' +}) +export class MarketsComponent implements OnDestroy, OnInit { + public benchmarks: Benchmark[]; + public deviceType: string; + public fearAndGreedIndex: number; + public fearAndGreedIndexData: MarketDataOfMarketsResponse['fearAndGreedIndex']; + public fearLabel = $localize`Fear`; + public greedLabel = $localize`Greed`; + public historicalDataItems: HistoricalDataItem[]; + public fearAndGreedIndexMode: FearAndGreedIndexMode = 'STOCKS'; + public fearAndGreedIndexModeOptions: ToggleOption[] = [ + { label: $localize`Stocks`, value: 'STOCKS' }, + { label: $localize`Cryptocurrencies`, value: 'CRYPTOCURRENCIES' } + ]; + public readonly numberOfDays = 365; + public user: User; + + private unsubscribeSubject = new Subject(); + + public constructor( + private changeDetectorRef: ChangeDetectorRef, + private dataService: DataService, + private deviceService: DeviceDetectorService, + private userService: UserService + ) { + this.deviceType = this.deviceService.getDeviceInfo().deviceType; + + this.userService.stateChanged + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe((state) => { + if (state?.user) { + this.user = state.user; + + this.changeDetectorRef.markForCheck(); + } + }); + } + + public ngOnInit() { + this.dataService + .fetchMarketDataOfMarkets({ includeHistoricalData: this.numberOfDays }) + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe(({ fearAndGreedIndex }) => { + this.fearAndGreedIndexData = fearAndGreedIndex; + + this.initialize(); + + this.changeDetectorRef.markForCheck(); + }); + + this.dataService + .fetchBenchmarks() + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe(({ benchmarks }) => { + this.benchmarks = benchmarks; + + this.changeDetectorRef.markForCheck(); + }); + } + + public initialize() { + this.fearAndGreedIndex = + this.fearAndGreedIndexData[this.fearAndGreedIndexMode]?.marketPrice; + + this.historicalDataItems = [ + ...(this.fearAndGreedIndexData[this.fearAndGreedIndexMode] + ?.historicalData ?? []), + { + date: resetHours(new Date()).toISOString(), + value: this.fearAndGreedIndex + } + ]; + } + + public onChangeFearAndGreedIndexMode( + aFearAndGreedIndexMode: FearAndGreedIndexMode + ) { + this.fearAndGreedIndexMode = aFearAndGreedIndexMode; + + this.initialize(); + } + + public ngOnDestroy() { + this.unsubscribeSubject.next(); + this.unsubscribeSubject.complete(); + } +} diff --git a/apps/client/src/app/components/markets/markets.html b/apps/client/src/app/components/markets/markets.html new file mode 100644 index 000000000..909b072ba --- /dev/null +++ b/apps/client/src/app/components/markets/markets.html @@ -0,0 +1,60 @@ +
+

Markets

+
+
+ @if (user?.settings?.isExperimentalFeatures) { +
+ +
+ } +
+ Last {{ numberOfDays }} Days +
+ + +
+
+ +
+
+ + @if (benchmarks?.length > 0) { +
+ + Calculations are based on delayed market data and may not be + displayed in real-time. +
+ } +
+
+
diff --git a/apps/client/src/app/components/markets/markets.scss b/apps/client/src/app/components/markets/markets.scss new file mode 100644 index 000000000..5b523160d --- /dev/null +++ b/apps/client/src/app/components/markets/markets.scss @@ -0,0 +1,7 @@ +:host { + display: block; + + gf-line-chart { + aspect-ratio: 16 / 9; + } +} diff --git a/apps/client/src/app/pages/home/home-page-routing.module.ts b/apps/client/src/app/pages/home/home-page-routing.module.ts index 6fa7f1c27..06dbfdf14 100644 --- a/apps/client/src/app/pages/home/home-page-routing.module.ts +++ b/apps/client/src/app/pages/home/home-page-routing.module.ts @@ -3,6 +3,7 @@ import { HomeMarketComponent } from '@ghostfolio/client/components/home-market/h import { HomeOverviewComponent } from '@ghostfolio/client/components/home-overview/home-overview.component'; import { HomeSummaryComponent } from '@ghostfolio/client/components/home-summary/home-summary.component'; import { HomeWatchlistComponent } from '@ghostfolio/client/components/home-watchlist/home-watchlist.component'; +import { MarketsComponent } from '@ghostfolio/client/components/markets/markets.component'; import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; import { internalRoutes } from '@ghostfolio/common/routes/routes'; @@ -34,6 +35,11 @@ const routes: Routes = [ component: HomeMarketComponent, title: internalRoutes.home.subRoutes.markets.title }, + { + path: internalRoutes.home.subRoutes.marketsPremium.path, + component: MarketsComponent, + title: internalRoutes.home.subRoutes.marketsPremium.title + }, { path: internalRoutes.home.subRoutes.watchlist.path, component: HomeWatchlistComponent, diff --git a/apps/client/src/app/pages/home/home-page.component.ts b/apps/client/src/app/pages/home/home-page.component.ts index ad9a65a4c..18e5e9759 100644 --- a/apps/client/src/app/pages/home/home-page.component.ts +++ b/apps/client/src/app/pages/home/home-page.component.ts @@ -1,6 +1,7 @@ import { ImpersonationStorageService } from '@ghostfolio/client/services/impersonation-storage.service'; import { UserService } from '@ghostfolio/client/services/user/user.service'; import { TabConfiguration, User } from '@ghostfolio/common/interfaces'; +import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { internalRoutes } from '@ghostfolio/common/routes/routes'; import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; @@ -33,6 +34,8 @@ export class HomePageComponent implements OnDestroy, OnInit { .pipe(takeUntil(this.unsubscribeSubject)) .subscribe((state) => { if (state?.user) { + this.user = state.user; + this.tabs = [ { iconName: 'analytics-outline', @@ -56,13 +59,21 @@ export class HomePageComponent implements OnDestroy, OnInit { }, { iconName: 'newspaper-outline', - label: internalRoutes.home.subRoutes.markets.title, - routerLink: internalRoutes.home.subRoutes.markets.routerLink + label: hasPermission( + this.user?.permissions, + permissions.readMarketDataOfMarkets + ) + ? internalRoutes.home.subRoutes.marketsPremium.title + : internalRoutes.home.subRoutes.markets.title, + routerLink: hasPermission( + this.user?.permissions, + permissions.readMarketDataOfMarkets + ) + ? internalRoutes.home.subRoutes.marketsPremium.routerLink + : internalRoutes.home.subRoutes.markets.routerLink } ]; - this.user = state.user; - this.changeDetectorRef.markForCheck(); } }); diff --git a/apps/client/src/app/services/data.service.ts b/apps/client/src/app/services/data.service.ts index 3ae0971c5..820ad5e3c 100644 --- a/apps/client/src/app/services/data.service.ts +++ b/apps/client/src/app/services/data.service.ts @@ -38,6 +38,7 @@ import { InfoItem, LookupResponse, MarketDataDetailsResponse, + MarketDataOfMarketsResponse, OAuthResponse, PortfolioDetails, PortfolioDividends, @@ -483,6 +484,34 @@ export class DataService { ); } + public fetchMarketDataOfMarkets({ + includeHistoricalData + }: { + includeHistoricalData?: number; + }): Observable { + let params = new HttpParams(); + + if (includeHistoricalData) { + params = params.append('includeHistoricalData', includeHistoricalData); + } + + return this.http.get('/api/v1/market-data/markets', { params }).pipe( + map((data) => { + for (const item of data.fearAndGreedIndex.CRYPTOCURRENCIES + ?.historicalData ?? []) { + item.date = parseISO(item.date); + } + + for (const item of data.fearAndGreedIndex.STOCKS?.historicalData ?? + []) { + item.date = parseISO(item.date); + } + + return data; + }) + ); + } + public fetchSymbolItem({ dataSource, includeHistoricalData, diff --git a/libs/common/src/lib/config.ts b/libs/common/src/lib/config.ts index 336235e58..4f3bbd77c 100644 --- a/libs/common/src/lib/config.ts +++ b/libs/common/src/lib/config.ts @@ -4,8 +4,12 @@ import ms from 'ms'; export const ghostfolioPrefix = 'GF'; export const ghostfolioScraperApiSymbolPrefix = `_${ghostfolioPrefix}_`; -export const ghostfolioFearAndGreedIndexDataSource = DataSource.RAPID_API; +export const ghostfolioFearAndGreedIndexDataSourceCryptocurrencies = + DataSource.MANUAL; +export const ghostfolioFearAndGreedIndexDataSourceStocks = DataSource.RAPID_API; export const ghostfolioFearAndGreedIndexSymbol = `${ghostfolioScraperApiSymbolPrefix}FEAR_AND_GREED_INDEX`; +export const ghostfolioFearAndGreedIndexSymbolCryptocurrencies = `${ghostfolioPrefix}_FEAR_AND_GREED_INDEX_CRYPTOCURRENCIES`; +export const ghostfolioFearAndGreedIndexSymbolStocks = `${ghostfolioPrefix}_FEAR_AND_GREED_INDEX_STOCKS`; export const locale = 'en-US'; diff --git a/libs/common/src/lib/interfaces/index.ts b/libs/common/src/lib/interfaces/index.ts index e7a0e7f76..611a5c963 100644 --- a/libs/common/src/lib/interfaces/index.ts +++ b/libs/common/src/lib/interfaces/index.ts @@ -51,6 +51,7 @@ import type { HistoricalResponse } from './responses/historical-response.interfa import type { ImportResponse } from './responses/import-response.interface'; import type { LookupResponse } from './responses/lookup-response.interface'; import type { MarketDataDetailsResponse } from './responses/market-data-details-response.interface'; +import type { MarketDataOfMarketsResponse } from './responses/market-data-of-markets-response.interface'; import type { OAuthResponse } from './responses/oauth-response.interface'; import { PortfolioHoldingResponse } from './responses/portfolio-holding-response.interface'; import type { PortfolioHoldingsResponse } from './responses/portfolio-holdings-response.interface'; @@ -111,6 +112,7 @@ export { LookupItem, LookupResponse, MarketDataDetailsResponse, + MarketDataOfMarketsResponse, OAuthResponse, PortfolioChart, PortfolioDetails, diff --git a/libs/common/src/lib/interfaces/responses/market-data-of-markets-response.interface.ts b/libs/common/src/lib/interfaces/responses/market-data-of-markets-response.interface.ts new file mode 100644 index 000000000..aecfbb28b --- /dev/null +++ b/libs/common/src/lib/interfaces/responses/market-data-of-markets-response.interface.ts @@ -0,0 +1,8 @@ +import { SymbolItem } from '@ghostfolio/api/app/symbol/interfaces/symbol-item.interface'; + +export interface MarketDataOfMarketsResponse { + fearAndGreedIndex: { + CRYPTOCURRENCIES: SymbolItem; + STOCKS: SymbolItem; + }; +} diff --git a/libs/common/src/lib/permissions.ts b/libs/common/src/lib/permissions.ts index 1ad0bd760..5bc8664b8 100644 --- a/libs/common/src/lib/permissions.ts +++ b/libs/common/src/lib/permissions.ts @@ -40,6 +40,7 @@ export const permissions = { impersonateAllUsers: 'impersonateAllUsers', readAiPrompt: 'readAiPrompt', readMarketData: 'readMarketData', + readMarketDataOfMarkets: 'readMarketDataOfMarkets', readMarketDataOfOwnAssetProfile: 'readMarketDataOfOwnAssetProfile', readPlatforms: 'readPlatforms', readTags: 'readTags', diff --git a/libs/common/src/lib/routes/routes.ts b/libs/common/src/lib/routes/routes.ts index 9c6461a75..9a75f0bc6 100644 --- a/libs/common/src/lib/routes/routes.ts +++ b/libs/common/src/lib/routes/routes.ts @@ -94,6 +94,11 @@ export const internalRoutes: Record = { routerLink: ['/home', 'markets'], title: $localize`Markets` }, + marketsPremium: { + path: 'markets-premium', + routerLink: ['/home', 'markets-premium'], + title: $localize`Markets` + }, summary: { path: 'summary', routerLink: ['/home', 'summary'], diff --git a/libs/common/src/lib/types/fear-and-greed-index.type.ts b/libs/common/src/lib/types/fear-and-greed-index.type.ts new file mode 100644 index 000000000..0dc6655a8 --- /dev/null +++ b/libs/common/src/lib/types/fear-and-greed-index.type.ts @@ -0,0 +1 @@ +export type FearAndGreedIndexMode = 'CRYPTOCURRENCIES' | 'STOCKS'; diff --git a/libs/common/src/lib/types/index.ts b/libs/common/src/lib/types/index.ts index 8ffd345db..903d9c96a 100644 --- a/libs/common/src/lib/types/index.ts +++ b/libs/common/src/lib/types/index.ts @@ -6,6 +6,7 @@ import type { AiPromptMode } from './ai-prompt-mode.type'; import type { BenchmarkTrend } from './benchmark-trend.type'; import type { ColorScheme } from './color-scheme.type'; import type { DateRange } from './date-range.type'; +import type { FearAndGreedIndexMode } from './fear-and-greed-index.type'; import type { Granularity } from './granularity.type'; import type { GroupBy } from './group-by.type'; import type { HoldingType } from './holding-type.type'; @@ -30,6 +31,7 @@ export type { BenchmarkTrend, ColorScheme, DateRange, + FearAndGreedIndexMode, Granularity, GroupBy, HoldingType, From 70f7d4b1198997802bc9db38a0fbf8002f3f253d Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Thu, 3 Jul 2025 08:52:44 +0200 Subject: [PATCH 3/9] Bugfix/extend getHistorical() and getQuotes() in RapidApiService (#5080) * Extend getHistorical() * Extend getQuotes() --- .../rapid-api/rapid-api.service.ts | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/apps/api/src/services/data-provider/rapid-api/rapid-api.service.ts b/apps/api/src/services/data-provider/rapid-api/rapid-api.service.ts index 05f1c0e5d..5675f1eb0 100644 --- a/apps/api/src/services/data-provider/rapid-api/rapid-api.service.ts +++ b/apps/api/src/services/data-provider/rapid-api/rapid-api.service.ts @@ -11,7 +11,10 @@ import { IDataProviderHistoricalResponse, IDataProviderResponse } from '@ghostfolio/api/services/interfaces/interfaces'; -import { ghostfolioFearAndGreedIndexSymbol } from '@ghostfolio/common/config'; +import { + ghostfolioFearAndGreedIndexSymbol, + ghostfolioFearAndGreedIndexSymbolStocks +} from '@ghostfolio/common/config'; import { DATE_FORMAT, getYesterday } from '@ghostfolio/common/helper'; import { DataProviderInfo, @@ -62,11 +65,16 @@ export class RapidApiService implements DataProviderInterface { [symbol: string]: { [date: string]: IDataProviderHistoricalResponse }; }> { try { - if (symbol === ghostfolioFearAndGreedIndexSymbol) { + if ( + [ + ghostfolioFearAndGreedIndexSymbol, + ghostfolioFearAndGreedIndexSymbolStocks + ].includes(symbol) + ) { const fgi = await this.getFearAndGreedIndex(); return { - [ghostfolioFearAndGreedIndexSymbol]: { + [symbol]: { [format(getYesterday(), DATE_FORMAT)]: { marketPrice: fgi.previousClose.value } @@ -99,11 +107,16 @@ export class RapidApiService implements DataProviderInterface { try { const symbol = symbols[0]; - if (symbol === ghostfolioFearAndGreedIndexSymbol) { + if ( + [ + ghostfolioFearAndGreedIndexSymbol, + ghostfolioFearAndGreedIndexSymbolStocks + ].includes(symbol) + ) { const fgi = await this.getFearAndGreedIndex(); return { - [ghostfolioFearAndGreedIndexSymbol]: { + [symbol]: { currency: undefined, dataSource: this.getName(), marketPrice: fgi.now.value, From a9ecf16c2c8b294d37c98b0b551c60e09888b2a2 Mon Sep 17 00:00:00 2001 From: Diego Noah Date: Thu, 3 Jul 2025 08:18:37 -0600 Subject: [PATCH 4/9] Feature/improve language localization for CA 20250702 (#5078) * Improve language localization for CA * Update changelog --- CHANGELOG.md | 1 + apps/client/src/locales/messages.ca.xlf | 26 ++++++++++++------------- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 375b48603..27f5d0a9d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Made the `getByKey()` function generic in the property service +- Improved the language localization for Catalan (`ca`) - Upgraded `@internationalized/number` from version `3.6.0` to `3.6.3` ## 2.176.0 - 2025-06-30 diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf index 9d415df35..865043447 100644 --- a/apps/client/src/locales/messages.ca.xlf +++ b/apps/client/src/locales/messages.ca.xlf @@ -5141,7 +5141,7 @@ Personal Finance Tools - Personal Finance Tools + Eines de finances personals libs/common/src/lib/routes/routes.ts 324 @@ -5149,7 +5149,7 @@ open-source-alternative-to - open-source-alternative-to + alternativa-codi-obert-a kebab-case libs/common/src/lib/routes/routes.ts @@ -5162,7 +5162,7 @@ Discover Open Source Alternatives for Personal Finance Tools - Discover Open Source Alternatives for Personal Finance Tools + Descobriu alternatives de codi obert per a les eines de finances personals apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html 4 @@ -5178,7 +5178,7 @@ Explore the links below to compare a variety of personal finance tools with Ghostfolio. - Explore the links below to compare a variety of personal finance tools with Ghostfolio. + Exploreu els enllaços següents per comparar una varietat d'eines de finances personals amb Ghostfolio. apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html 16 @@ -5186,7 +5186,7 @@ Open Source Alternative to - Open Source Alternative to + Alternativa de codi obert a apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html 42 @@ -5194,7 +5194,7 @@ Switzerland - Switzerland + Suïssa apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts 57 @@ -5206,7 +5206,7 @@ Global - Global + Global apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts 58 @@ -5218,7 +5218,7 @@ The Open Source Alternative to - The Open Source Alternative to + L’alternativa de codi obert a apps/client/src/app/pages/resources/personal-finance-tools/product-page.html 8 @@ -5258,7 +5258,7 @@ Founded - Founded + Fundat apps/client/src/app/pages/resources/personal-finance-tools/product-page.html 77 @@ -5266,7 +5266,7 @@ Origin - Origin + Origen apps/client/src/app/pages/resources/personal-finance-tools/product-page.html 82 @@ -5274,7 +5274,7 @@ Region - Region + Regió apps/client/src/app/pages/resources/personal-finance-tools/product-page.html 87 @@ -5282,7 +5282,7 @@ Available in - Available in + Disponible a apps/client/src/app/pages/resources/personal-finance-tools/product-page.html 108 @@ -5290,7 +5290,7 @@ ✅ Yes - ✅ Yes + ✅ Sí apps/client/src/app/pages/resources/personal-finance-tools/product-page.html 140 From 8547630c9261484173390af3dbd1785736e8eac7 Mon Sep 17 00:00:00 2001 From: Olindo Task Date: Thu, 3 Jul 2025 09:26:53 -0600 Subject: [PATCH 5/9] Feature/improve language localization for PT 20250702 (#5079) * Improve language localization for PT * Update changelog --- CHANGELOG.md | 1 + apps/client/src/locales/messages.pt.xlf | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 27f5d0a9d..6b477bdb8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Made the `getByKey()` function generic in the property service - Improved the language localization for Catalan (`ca`) +- Improved the language localization for Portuguese (`pt`) - Upgraded `@internationalized/number` from version `3.6.0` to `3.6.3` ## 2.176.0 - 2025-06-30 diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index dcf2d827a..2d8313543 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -6370,7 +6370,7 @@ Open Source - Open Source + Código aberto apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts 88 @@ -6378,7 +6378,7 @@ Personal Finance - Personal Finance + Finanças Pessoais apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts 90 @@ -6386,7 +6386,7 @@ Privacy - Privacy + Privacidade apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts 91 @@ -6394,7 +6394,7 @@ Software - Software + Programas apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts 93 @@ -6402,7 +6402,7 @@ Tool - Tool + Ferramenta apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts 94 @@ -6410,7 +6410,7 @@ User Experience - User Experience + Experiência do usuário apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts 95 @@ -6418,7 +6418,7 @@ Wealth - Wealth + Fortuna apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts 96 @@ -6426,7 +6426,7 @@ Wealth Management - Wealth Management + Gestão de patrimônio apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts 97 @@ -6578,7 +6578,7 @@ Error - Error + Erro apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts 536 @@ -6586,7 +6586,7 @@ Deactivate - Deactivate + Desativar apps/client/src/app/components/rule/rule.component.html 72 From c805469517fbbd749cefd6635e604851a9cd1c88 Mon Sep 17 00:00:00 2001 From: Nick Verner <59479310+naevern@users.noreply.github.com> Date: Thu, 3 Jul 2025 09:51:36 -0600 Subject: [PATCH 6/9] Feature/improve language localization for PT 20250703 (#5081) * Improve language localization for PT --- apps/client/src/locales/messages.pt.xlf | 36 ++++++++++++------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index 2d8313543..69868c405 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -6434,7 +6434,7 @@ Australia - Australia + Austrália libs/ui/src/lib/i18n.ts 74 @@ -6442,7 +6442,7 @@ Austria - Austria + Áustria libs/ui/src/lib/i18n.ts 75 @@ -6450,7 +6450,7 @@ Belgium - Belgium + Bélgica libs/ui/src/lib/i18n.ts 76 @@ -6458,7 +6458,7 @@ Bulgaria - Bulgaria + Bulgária libs/ui/src/lib/i18n.ts 78 @@ -6466,7 +6466,7 @@ Canada - Canada + Canadá libs/ui/src/lib/i18n.ts 79 @@ -6474,7 +6474,7 @@ Czech Republic - Czech Republic + República Tcheca libs/ui/src/lib/i18n.ts 80 @@ -6482,7 +6482,7 @@ Finland - Finland + Finlândia libs/ui/src/lib/i18n.ts 81 @@ -6490,7 +6490,7 @@ France - France + França libs/ui/src/lib/i18n.ts 82 @@ -6498,7 +6498,7 @@ Germany - Germany + Alemanha libs/ui/src/lib/i18n.ts 83 @@ -6506,7 +6506,7 @@ India - India + Índia libs/ui/src/lib/i18n.ts 84 @@ -6514,7 +6514,7 @@ Italy - Italy + Itália libs/ui/src/lib/i18n.ts 85 @@ -6522,7 +6522,7 @@ Netherlands - Netherlands + Holanda libs/ui/src/lib/i18n.ts 87 @@ -6530,7 +6530,7 @@ New Zealand - New Zealand + Nova Zelândia libs/ui/src/lib/i18n.ts 88 @@ -6538,7 +6538,7 @@ Poland - Poland + Polônia libs/ui/src/lib/i18n.ts 89 @@ -6546,7 +6546,7 @@ Romania - Romania + Romênia libs/ui/src/lib/i18n.ts 90 @@ -6554,7 +6554,7 @@ South Africa - South Africa + África do Sul libs/ui/src/lib/i18n.ts 92 @@ -6562,7 +6562,7 @@ Thailand - Thailand + Tailândia libs/ui/src/lib/i18n.ts 94 @@ -6570,7 +6570,7 @@ United States - United States + Estados Unidos libs/ui/src/lib/i18n.ts 97 From e03b2735c4efb59b3a6cded117a4ca8671de9ac9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 3 Jul 2025 18:21:02 +0200 Subject: [PATCH 7/9] Feature/update locales (#5077) * Update locales * Update translations * Update changelog --------- Co-authored-by: github-actions[bot] Co-authored-by: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> --- CHANGELOG.md | 1 + apps/client/src/locales/messages.ca.xlf | 202 ++++++++++++++---------- apps/client/src/locales/messages.de.xlf | 200 +++++++++++++---------- apps/client/src/locales/messages.es.xlf | 200 +++++++++++++---------- apps/client/src/locales/messages.fr.xlf | 200 +++++++++++++---------- apps/client/src/locales/messages.it.xlf | 200 +++++++++++++---------- apps/client/src/locales/messages.nl.xlf | 200 +++++++++++++---------- apps/client/src/locales/messages.pl.xlf | 200 +++++++++++++---------- apps/client/src/locales/messages.pt.xlf | 200 +++++++++++++---------- apps/client/src/locales/messages.tr.xlf | 200 +++++++++++++---------- apps/client/src/locales/messages.uk.xlf | 200 +++++++++++++---------- apps/client/src/locales/messages.xlf | 198 +++++++++++++---------- apps/client/src/locales/messages.zh.xlf | 200 +++++++++++++---------- 13 files changed, 1440 insertions(+), 961 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6b477bdb8..23ad0f8c1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Made the `getByKey()` function generic in the property service - Improved the language localization for Catalan (`ca`) +- Improved the language localization for German (`de`) - Improved the language localization for Portuguese (`pt`) - Upgraded `@internationalized/number` from version `3.6.0` to `3.6.3` diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf index 865043447..0861044bc 100644 --- a/apps/client/src/locales/messages.ca.xlf +++ b/apps/client/src/locales/messages.ca.xlf @@ -6,7 +6,7 @@ Característiques libs/common/src/lib/routes/routes.ts - 251 + 256 @@ -14,7 +14,7 @@ Internacionalització libs/common/src/lib/routes/routes.ts - 114 + 119 @@ -30,7 +30,7 @@ libs/common/src/lib/routes/routes.ts - 152 + 157 @@ -84,6 +84,10 @@ apps/client/src/app/components/home-market/home-market.html 2 + + apps/client/src/app/components/markets/markets.html + 2 + apps/client/src/app/pages/resources/markets/resources-markets.component.html 2 @@ -375,31 +379,31 @@ kebab-case libs/common/src/lib/routes/routes.ts - 171 + 176 libs/common/src/lib/routes/routes.ts - 172 + 177 libs/common/src/lib/routes/routes.ts - 177 + 182 libs/common/src/lib/routes/routes.ts - 185 + 190 libs/common/src/lib/routes/routes.ts - 193 + 198 libs/common/src/lib/routes/routes.ts - 201 + 206 libs/common/src/lib/routes/routes.ts - 209 + 214 @@ -408,11 +412,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 183 + 188 libs/common/src/lib/routes/routes.ts - 186 + 191 @@ -421,11 +425,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 199 + 204 libs/common/src/lib/routes/routes.ts - 202 + 207 @@ -434,19 +438,19 @@ kebab-case libs/common/src/lib/routes/routes.ts - 229 + 234 libs/common/src/lib/routes/routes.ts - 230 + 235 libs/common/src/lib/routes/routes.ts - 234 + 239 libs/common/src/lib/routes/routes.ts - 240 + 245 @@ -455,11 +459,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 249 + 254 libs/common/src/lib/routes/routes.ts - 250 + 255 @@ -468,11 +472,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 254 + 259 libs/common/src/lib/routes/routes.ts - 255 + 260 @@ -481,11 +485,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 264 + 269 libs/common/src/lib/routes/routes.ts - 265 + 270 @@ -494,11 +498,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 274 + 279 libs/common/src/lib/routes/routes.ts - 275 + 280 @@ -507,31 +511,31 @@ kebab-case libs/common/src/lib/routes/routes.ts - 279 + 284 libs/common/src/lib/routes/routes.ts - 280 + 285 libs/common/src/lib/routes/routes.ts - 285 + 290 libs/common/src/lib/routes/routes.ts - 293 + 298 libs/common/src/lib/routes/routes.ts - 301 + 306 libs/common/src/lib/routes/routes.ts - 309 + 314 libs/common/src/lib/routes/routes.ts - 317 + 322 @@ -2035,7 +2039,7 @@ libs/common/src/lib/routes/routes.ts - 146 + 151 @@ -2373,6 +2377,10 @@ apps/client/src/app/components/home-market/home-market.component.ts 28 + + apps/client/src/app/components/markets/markets.component.ts + 49 + libs/ui/src/lib/i18n.ts 102 @@ -2385,6 +2393,10 @@ apps/client/src/app/components/home-market/home-market.component.ts 29 + + apps/client/src/app/components/markets/markets.component.ts + 50 + libs/ui/src/lib/i18n.ts 103 @@ -2397,6 +2409,10 @@ apps/client/src/app/components/home-market/home-market.html 7 + + apps/client/src/app/components/markets/markets.html + 17 + Welcome to Ghostfolio @@ -3359,7 +3375,7 @@ libs/common/src/lib/routes/routes.ts - 215 + 220 @@ -3367,7 +3383,7 @@ Registre de canvis libs/common/src/lib/routes/routes.ts - 180 + 185 @@ -3375,7 +3391,7 @@ llicència libs/common/src/lib/routes/routes.ts - 188 + 193 @@ -3383,7 +3399,7 @@ Política de privadesa libs/common/src/lib/routes/routes.ts - 204 + 209 @@ -3531,11 +3547,11 @@ libs/common/src/lib/routes/routes.ts - 108 + 113 libs/common/src/lib/routes/routes.ts - 165 + 170 @@ -3543,7 +3559,7 @@ Bloc libs/common/src/lib/routes/routes.ts - 220 + 225 @@ -3571,7 +3587,7 @@ libs/common/src/lib/routes/routes.ts - 246 + 251 @@ -3591,7 +3607,7 @@ libs/common/src/lib/routes/routes.ts - 235 + 240 @@ -3603,7 +3619,7 @@ libs/common/src/lib/routes/routes.ts - 243 + 248 @@ -3612,11 +3628,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 238 + 243 libs/common/src/lib/routes/routes.ts - 241 + 246 @@ -3768,7 +3784,7 @@ libs/common/src/lib/routes/routes.ts - 162 + 167 @@ -3776,7 +3792,7 @@ Resum libs/common/src/lib/routes/routes.ts - 100 + 105 @@ -3792,11 +3808,15 @@ libs/common/src/lib/routes/routes.ts - 256 + 100 libs/common/src/lib/routes/routes.ts - 304 + 261 + + + libs/common/src/lib/routes/routes.ts + 309 @@ -4244,7 +4264,7 @@ Activitats libs/common/src/lib/routes/routes.ts - 123 + 128 @@ -4484,7 +4504,7 @@ libs/common/src/lib/routes/routes.ts - 128 + 133 @@ -4672,7 +4692,7 @@ Anàlisi libs/common/src/lib/routes/routes.ts - 133 + 138 @@ -4888,7 +4908,7 @@ libs/common/src/lib/routes/routes.ts - 266 + 271 @@ -5112,7 +5132,7 @@ Inscripció libs/common/src/lib/routes/routes.ts - 276 + 281 @@ -5144,7 +5164,7 @@ Eines de finances personals libs/common/src/lib/routes/routes.ts - 324 + 329 @@ -5153,11 +5173,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 315 + 320 libs/common/src/lib/routes/routes.ts - 319 + 324 @@ -5178,7 +5198,7 @@ Explore the links below to compare a variety of personal finance tools with Ghostfolio. - Exploreu els enllaços següents per comparar una varietat d'eines de finances personals amb Ghostfolio. + Exploreu els enllaços següents per comparar una varietat d'eines de finances personals amb Ghostfolio. apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html 16 @@ -5461,7 +5481,7 @@ Resources libs/common/src/lib/routes/routes.ts - 327 + 332 @@ -6929,7 +6949,7 @@ libs/common/src/lib/routes/routes.ts - 288 + 293 @@ -6941,7 +6961,7 @@ libs/common/src/lib/routes/routes.ts - 296 + 301 @@ -6950,11 +6970,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 291 + 296 libs/common/src/lib/routes/routes.ts - 294 + 299 @@ -6963,11 +6983,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 283 + 288 libs/common/src/lib/routes/routes.ts - 286 + 291 @@ -7416,11 +7436,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 207 + 212 libs/common/src/lib/routes/routes.ts - 210 + 215 @@ -7428,7 +7448,7 @@ Terms of Service libs/common/src/lib/routes/routes.ts - 212 + 217 @@ -7552,7 +7572,7 @@ Watchlist libs/common/src/lib/routes/routes.ts - 105 + 110 @@ -7578,6 +7598,10 @@ apps/client/src/app/components/home-market/home-market.html 43 + + apps/client/src/app/components/markets/markets.html + 52 + changelog @@ -7585,11 +7609,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 175 + 180 libs/common/src/lib/routes/routes.ts - 178 + 183 @@ -7693,7 +7717,7 @@ Live Demo libs/common/src/lib/routes/routes.ts - 226 + 231 @@ -7701,7 +7725,7 @@ Open Source Alternative to libs/common/src/lib/routes/routes.ts - 321 + 326 @@ -7742,15 +7766,15 @@ kebab-case libs/common/src/lib/routes/routes.ts - 307 + 312 libs/common/src/lib/routes/routes.ts - 310 + 315 libs/common/src/lib/routes/routes.ts - 318 + 323 @@ -7759,11 +7783,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 299 + 304 libs/common/src/lib/routes/routes.ts - 302 + 307 @@ -7980,11 +8004,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 331 + 336 libs/common/src/lib/routes/routes.ts - 332 + 337 @@ -8003,6 +8027,22 @@ 43 + + Stocks + Stocks + + apps/client/src/app/components/markets/markets.component.ts + 54 + + + + Cryptocurrencies + Cryptocurrencies + + apps/client/src/app/components/markets/markets.component.ts + 55 + + diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index 8e4da5362..1e4c6b5f1 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -1000,6 +1000,10 @@ apps/client/src/app/components/home-market/home-market.html 2 + + apps/client/src/app/components/markets/markets.html + 2 + apps/client/src/app/pages/resources/markets/resources-markets.component.html 2 @@ -1030,7 +1034,7 @@ libs/common/src/lib/routes/routes.ts - 152 + 157 @@ -1064,6 +1068,10 @@ apps/client/src/app/components/home-market/home-market.html 7 + + apps/client/src/app/components/markets/markets.html + 17 + Summary @@ -1494,7 +1502,7 @@ libs/common/src/lib/routes/routes.ts - 215 + 220 @@ -1634,7 +1642,7 @@ Datenschutzbestimmungen libs/common/src/lib/routes/routes.ts - 204 + 209 @@ -1946,7 +1954,7 @@ Blog libs/common/src/lib/routes/routes.ts - 220 + 225 @@ -1966,7 +1974,7 @@ libs/common/src/lib/routes/routes.ts - 246 + 251 @@ -1974,7 +1982,7 @@ Features libs/common/src/lib/routes/routes.ts - 251 + 256 @@ -1990,11 +1998,11 @@ libs/common/src/lib/routes/routes.ts - 108 + 113 libs/common/src/lib/routes/routes.ts - 165 + 170 @@ -2010,11 +2018,15 @@ libs/common/src/lib/routes/routes.ts - 256 + 100 libs/common/src/lib/routes/routes.ts - 304 + 261 + + + libs/common/src/lib/routes/routes.ts + 309 @@ -2026,7 +2038,7 @@ libs/common/src/lib/routes/routes.ts - 128 + 133 @@ -2110,7 +2122,7 @@ Analyse libs/common/src/lib/routes/routes.ts - 133 + 138 @@ -2178,7 +2190,7 @@ libs/common/src/lib/routes/routes.ts - 162 + 167 @@ -2334,7 +2346,7 @@ Aktivitäten libs/common/src/lib/routes/routes.ts - 123 + 128 @@ -2362,7 +2374,7 @@ libs/common/src/lib/routes/routes.ts - 266 + 271 @@ -2378,7 +2390,7 @@ libs/common/src/lib/routes/routes.ts - 146 + 151 @@ -2410,7 +2422,7 @@ Registrierung libs/common/src/lib/routes/routes.ts - 276 + 281 @@ -2442,7 +2454,7 @@ Ressourcen libs/common/src/lib/routes/routes.ts - 327 + 332 @@ -2804,6 +2816,10 @@ apps/client/src/app/components/home-market/home-market.component.ts 28 + + apps/client/src/app/components/markets/markets.component.ts + 49 + libs/ui/src/lib/i18n.ts 102 @@ -2816,6 +2832,10 @@ apps/client/src/app/components/home-market/home-market.component.ts 29 + + apps/client/src/app/components/markets/markets.component.ts + 50 + libs/ui/src/lib/i18n.ts 103 @@ -3338,7 +3358,7 @@ Zusammenfassung libs/common/src/lib/routes/routes.ts - 100 + 105 @@ -4162,7 +4182,7 @@ Changelog libs/common/src/lib/routes/routes.ts - 180 + 185 @@ -4170,7 +4190,7 @@ Lizenz libs/common/src/lib/routes/routes.ts - 188 + 193 @@ -4306,7 +4326,7 @@ Tools für persönliche Finanzen libs/common/src/lib/routes/routes.ts - 324 + 329 @@ -5135,19 +5155,19 @@ kebab-case libs/common/src/lib/routes/routes.ts - 229 + 234 libs/common/src/lib/routes/routes.ts - 230 + 235 libs/common/src/lib/routes/routes.ts - 234 + 239 libs/common/src/lib/routes/routes.ts - 240 + 245 @@ -5156,11 +5176,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 249 + 254 libs/common/src/lib/routes/routes.ts - 250 + 255 @@ -5169,31 +5189,31 @@ kebab-case libs/common/src/lib/routes/routes.ts - 171 + 176 libs/common/src/lib/routes/routes.ts - 172 + 177 libs/common/src/lib/routes/routes.ts - 177 + 182 libs/common/src/lib/routes/routes.ts - 185 + 190 libs/common/src/lib/routes/routes.ts - 193 + 198 libs/common/src/lib/routes/routes.ts - 201 + 206 libs/common/src/lib/routes/routes.ts - 209 + 214 @@ -5202,11 +5222,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 199 + 204 libs/common/src/lib/routes/routes.ts - 202 + 207 @@ -5215,11 +5235,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 183 + 188 libs/common/src/lib/routes/routes.ts - 186 + 191 @@ -5228,11 +5248,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 254 + 259 libs/common/src/lib/routes/routes.ts - 255 + 260 @@ -5241,11 +5261,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 264 + 269 libs/common/src/lib/routes/routes.ts - 265 + 270 @@ -5254,11 +5274,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 274 + 279 libs/common/src/lib/routes/routes.ts - 275 + 280 @@ -5267,31 +5287,31 @@ kebab-case libs/common/src/lib/routes/routes.ts - 279 + 284 libs/common/src/lib/routes/routes.ts - 280 + 285 libs/common/src/lib/routes/routes.ts - 285 + 290 libs/common/src/lib/routes/routes.ts - 293 + 298 libs/common/src/lib/routes/routes.ts - 301 + 306 libs/common/src/lib/routes/routes.ts - 309 + 314 libs/common/src/lib/routes/routes.ts - 317 + 322 @@ -5356,11 +5376,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 315 + 320 libs/common/src/lib/routes/routes.ts - 319 + 324 @@ -6084,7 +6104,7 @@ libs/common/src/lib/routes/routes.ts - 235 + 240 @@ -6096,7 +6116,7 @@ libs/common/src/lib/routes/routes.ts - 243 + 248 @@ -6105,11 +6125,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 238 + 243 libs/common/src/lib/routes/routes.ts - 241 + 246 @@ -6221,7 +6241,7 @@ Internationalisierung libs/common/src/lib/routes/routes.ts - 114 + 119 @@ -6953,7 +6973,7 @@ libs/common/src/lib/routes/routes.ts - 288 + 293 @@ -6965,7 +6985,7 @@ libs/common/src/lib/routes/routes.ts - 296 + 301 @@ -6974,11 +6994,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 291 + 296 libs/common/src/lib/routes/routes.ts - 294 + 299 @@ -6987,11 +7007,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 283 + 288 libs/common/src/lib/routes/routes.ts - 286 + 291 @@ -7440,11 +7460,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 207 + 212 libs/common/src/lib/routes/routes.ts - 210 + 215 @@ -7452,7 +7472,7 @@ Allgemeine Geschäftsbedingungen libs/common/src/lib/routes/routes.ts - 212 + 217 @@ -7552,7 +7572,7 @@ Beobachtungsliste libs/common/src/lib/routes/routes.ts - 105 + 110 @@ -7578,6 +7598,10 @@ apps/client/src/app/components/home-market/home-market.html 43 + + apps/client/src/app/components/markets/markets.html + 52 + changelog @@ -7585,11 +7609,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 175 + 180 libs/common/src/lib/routes/routes.ts - 178 + 183 @@ -7693,7 +7717,7 @@ Live Demo libs/common/src/lib/routes/routes.ts - 226 + 231 @@ -7701,7 +7725,7 @@ Open Source Alternative zu libs/common/src/lib/routes/routes.ts - 321 + 326 @@ -7742,15 +7766,15 @@ kebab-case libs/common/src/lib/routes/routes.ts - 307 + 312 libs/common/src/lib/routes/routes.ts - 310 + 315 libs/common/src/lib/routes/routes.ts - 318 + 323 @@ -7759,11 +7783,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 299 + 304 libs/common/src/lib/routes/routes.ts - 302 + 307 @@ -7980,11 +8004,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 331 + 336 libs/common/src/lib/routes/routes.ts - 332 + 337 @@ -8003,6 +8027,22 @@ 43 + + Stocks + Aktien + + apps/client/src/app/components/markets/markets.component.ts + 54 + + + + Cryptocurrencies + Kryptowährungen + + apps/client/src/app/components/markets/markets.component.ts + 55 + + diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index 1571271dd..ec3622688 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -985,6 +985,10 @@ apps/client/src/app/components/home-market/home-market.html 2 + + apps/client/src/app/components/markets/markets.html + 2 + apps/client/src/app/pages/resources/markets/resources-markets.component.html 2 @@ -1015,7 +1019,7 @@ libs/common/src/lib/routes/routes.ts - 152 + 157 @@ -1049,6 +1053,10 @@ apps/client/src/app/components/home-market/home-market.html 7 + + apps/client/src/app/components/markets/markets.html + 17 + Summary @@ -1479,7 +1487,7 @@ libs/common/src/lib/routes/routes.ts - 215 + 220 @@ -1619,7 +1627,7 @@ Política de privacidad libs/common/src/lib/routes/routes.ts - 204 + 209 @@ -1931,7 +1939,7 @@ Blog libs/common/src/lib/routes/routes.ts - 220 + 225 @@ -1951,7 +1959,7 @@ libs/common/src/lib/routes/routes.ts - 246 + 251 @@ -1959,7 +1967,7 @@ Funcionalidades libs/common/src/lib/routes/routes.ts - 251 + 256 @@ -1975,11 +1983,11 @@ libs/common/src/lib/routes/routes.ts - 108 + 113 libs/common/src/lib/routes/routes.ts - 165 + 170 @@ -1995,11 +2003,15 @@ libs/common/src/lib/routes/routes.ts - 256 + 100 libs/common/src/lib/routes/routes.ts - 304 + 261 + + + libs/common/src/lib/routes/routes.ts + 309 @@ -2011,7 +2023,7 @@ libs/common/src/lib/routes/routes.ts - 128 + 133 @@ -2095,7 +2107,7 @@ Análisis libs/common/src/lib/routes/routes.ts - 133 + 138 @@ -2163,7 +2175,7 @@ libs/common/src/lib/routes/routes.ts - 162 + 167 @@ -2319,7 +2331,7 @@ Operación libs/common/src/lib/routes/routes.ts - 123 + 128 @@ -2347,7 +2359,7 @@ libs/common/src/lib/routes/routes.ts - 266 + 271 @@ -2363,7 +2375,7 @@ libs/common/src/lib/routes/routes.ts - 146 + 151 @@ -2395,7 +2407,7 @@ Registro libs/common/src/lib/routes/routes.ts - 276 + 281 @@ -2427,7 +2439,7 @@ Recursos libs/common/src/lib/routes/routes.ts - 327 + 332 @@ -2789,6 +2801,10 @@ apps/client/src/app/components/home-market/home-market.component.ts 28 + + apps/client/src/app/components/markets/markets.component.ts + 49 + libs/ui/src/lib/i18n.ts 102 @@ -2801,6 +2817,10 @@ apps/client/src/app/components/home-market/home-market.component.ts 29 + + apps/client/src/app/components/markets/markets.component.ts + 50 + libs/ui/src/lib/i18n.ts 103 @@ -3323,7 +3343,7 @@ Resumen libs/common/src/lib/routes/routes.ts - 100 + 105 @@ -4139,7 +4159,7 @@ Registro de cambios libs/common/src/lib/routes/routes.ts - 180 + 185 @@ -4147,7 +4167,7 @@ Licencia libs/common/src/lib/routes/routes.ts - 188 + 193 @@ -4283,7 +4303,7 @@ Herramientas de finanzas personales libs/common/src/lib/routes/routes.ts - 324 + 329 @@ -5112,19 +5132,19 @@ kebab-case libs/common/src/lib/routes/routes.ts - 229 + 234 libs/common/src/lib/routes/routes.ts - 230 + 235 libs/common/src/lib/routes/routes.ts - 234 + 239 libs/common/src/lib/routes/routes.ts - 240 + 245 @@ -5133,11 +5153,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 249 + 254 libs/common/src/lib/routes/routes.ts - 250 + 255 @@ -5146,31 +5166,31 @@ kebab-case libs/common/src/lib/routes/routes.ts - 171 + 176 libs/common/src/lib/routes/routes.ts - 172 + 177 libs/common/src/lib/routes/routes.ts - 177 + 182 libs/common/src/lib/routes/routes.ts - 185 + 190 libs/common/src/lib/routes/routes.ts - 193 + 198 libs/common/src/lib/routes/routes.ts - 201 + 206 libs/common/src/lib/routes/routes.ts - 209 + 214 @@ -5179,11 +5199,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 199 + 204 libs/common/src/lib/routes/routes.ts - 202 + 207 @@ -5192,11 +5212,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 183 + 188 libs/common/src/lib/routes/routes.ts - 186 + 191 @@ -5205,11 +5225,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 254 + 259 libs/common/src/lib/routes/routes.ts - 255 + 260 @@ -5218,11 +5238,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 264 + 269 libs/common/src/lib/routes/routes.ts - 265 + 270 @@ -5231,11 +5251,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 274 + 279 libs/common/src/lib/routes/routes.ts - 275 + 280 @@ -5244,31 +5264,31 @@ kebab-case libs/common/src/lib/routes/routes.ts - 279 + 284 libs/common/src/lib/routes/routes.ts - 280 + 285 libs/common/src/lib/routes/routes.ts - 285 + 290 libs/common/src/lib/routes/routes.ts - 293 + 298 libs/common/src/lib/routes/routes.ts - 301 + 306 libs/common/src/lib/routes/routes.ts - 309 + 314 libs/common/src/lib/routes/routes.ts - 317 + 322 @@ -5333,11 +5353,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 315 + 320 libs/common/src/lib/routes/routes.ts - 319 + 324 @@ -6061,7 +6081,7 @@ libs/common/src/lib/routes/routes.ts - 235 + 240 @@ -6073,7 +6093,7 @@ libs/common/src/lib/routes/routes.ts - 243 + 248 @@ -6082,11 +6102,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 238 + 243 libs/common/src/lib/routes/routes.ts - 241 + 246 @@ -6198,7 +6218,7 @@ Internacionalización libs/common/src/lib/routes/routes.ts - 114 + 119 @@ -6930,7 +6950,7 @@ libs/common/src/lib/routes/routes.ts - 288 + 293 @@ -6942,7 +6962,7 @@ libs/common/src/lib/routes/routes.ts - 296 + 301 @@ -6951,11 +6971,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 291 + 296 libs/common/src/lib/routes/routes.ts - 294 + 299 @@ -6964,11 +6984,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 283 + 288 libs/common/src/lib/routes/routes.ts - 286 + 291 @@ -7417,11 +7437,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 207 + 212 libs/common/src/lib/routes/routes.ts - 210 + 215 @@ -7429,7 +7449,7 @@ Terms of Service libs/common/src/lib/routes/routes.ts - 212 + 217 @@ -7553,7 +7573,7 @@ Lista de seguimiento libs/common/src/lib/routes/routes.ts - 105 + 110 @@ -7579,6 +7599,10 @@ apps/client/src/app/components/home-market/home-market.html 43 + + apps/client/src/app/components/markets/markets.html + 52 + changelog @@ -7586,11 +7610,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 175 + 180 libs/common/src/lib/routes/routes.ts - 178 + 183 @@ -7694,7 +7718,7 @@ Live Demo libs/common/src/lib/routes/routes.ts - 226 + 231 @@ -7702,7 +7726,7 @@ Alternativa de software libre a libs/common/src/lib/routes/routes.ts - 321 + 326 @@ -7743,15 +7767,15 @@ kebab-case libs/common/src/lib/routes/routes.ts - 307 + 312 libs/common/src/lib/routes/routes.ts - 310 + 315 libs/common/src/lib/routes/routes.ts - 318 + 323 @@ -7760,11 +7784,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 299 + 304 libs/common/src/lib/routes/routes.ts - 302 + 307 @@ -7981,11 +8005,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 331 + 336 libs/common/src/lib/routes/routes.ts - 332 + 337 @@ -8004,6 +8028,22 @@ 43 + + Stocks + Stocks + + apps/client/src/app/components/markets/markets.component.ts + 54 + + + + Cryptocurrencies + Cryptocurrencies + + apps/client/src/app/components/markets/markets.component.ts + 55 + + diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index ef798cfee..120e07112 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -1110,7 +1110,7 @@ libs/common/src/lib/routes/routes.ts - 146 + 151 @@ -1288,6 +1288,10 @@ apps/client/src/app/components/home-market/home-market.html 2 + + apps/client/src/app/components/markets/markets.html + 2 + apps/client/src/app/pages/resources/markets/resources-markets.component.html 2 @@ -1326,7 +1330,7 @@ libs/common/src/lib/routes/routes.ts - 152 + 157 @@ -1360,6 +1364,10 @@ apps/client/src/app/components/home-market/home-market.component.ts 28 + + apps/client/src/app/components/markets/markets.component.ts + 49 + libs/ui/src/lib/i18n.ts 102 @@ -1372,6 +1380,10 @@ apps/client/src/app/components/home-market/home-market.component.ts 29 + + apps/client/src/app/components/markets/markets.component.ts + 50 + libs/ui/src/lib/i18n.ts 103 @@ -1384,6 +1396,10 @@ apps/client/src/app/components/home-market/home-market.html 7 + + apps/client/src/app/components/markets/markets.html + 17 + Summary @@ -1822,7 +1838,7 @@ libs/common/src/lib/routes/routes.ts - 215 + 220 @@ -1854,7 +1870,7 @@ Politique de Vie Privée libs/common/src/lib/routes/routes.ts - 204 + 209 @@ -2238,7 +2254,7 @@ Blog libs/common/src/lib/routes/routes.ts - 220 + 225 @@ -2354,7 +2370,7 @@ libs/common/src/lib/routes/routes.ts - 246 + 251 @@ -2362,7 +2378,7 @@ Fonctionnalités libs/common/src/lib/routes/routes.ts - 251 + 256 @@ -2374,7 +2390,7 @@ libs/common/src/lib/routes/routes.ts - 162 + 167 @@ -2382,7 +2398,7 @@ Résumé libs/common/src/lib/routes/routes.ts - 100 + 105 @@ -2398,11 +2414,15 @@ libs/common/src/lib/routes/routes.ts - 256 + 100 libs/common/src/lib/routes/routes.ts - 304 + 261 + + + libs/common/src/lib/routes/routes.ts + 309 @@ -2410,7 +2430,7 @@ Activités libs/common/src/lib/routes/routes.ts - 123 + 128 @@ -2554,7 +2574,7 @@ libs/common/src/lib/routes/routes.ts - 128 + 133 @@ -2682,7 +2702,7 @@ Analyse libs/common/src/lib/routes/routes.ts - 133 + 138 @@ -2810,7 +2830,7 @@ libs/common/src/lib/routes/routes.ts - 266 + 271 @@ -2862,7 +2882,7 @@ Enregistrement libs/common/src/lib/routes/routes.ts - 276 + 281 @@ -2914,7 +2934,7 @@ Ressources libs/common/src/lib/routes/routes.ts - 327 + 332 @@ -2954,11 +2974,11 @@ libs/common/src/lib/routes/routes.ts - 108 + 113 libs/common/src/lib/routes/routes.ts - 165 + 170 @@ -4138,7 +4158,7 @@ Historique des modifications libs/common/src/lib/routes/routes.ts - 180 + 185 @@ -4146,7 +4166,7 @@ Licence libs/common/src/lib/routes/routes.ts - 188 + 193 @@ -4282,7 +4302,7 @@ Outils de Gestion de Patrimoine libs/common/src/lib/routes/routes.ts - 324 + 329 @@ -5111,19 +5131,19 @@ kebab-case libs/common/src/lib/routes/routes.ts - 229 + 234 libs/common/src/lib/routes/routes.ts - 230 + 235 libs/common/src/lib/routes/routes.ts - 234 + 239 libs/common/src/lib/routes/routes.ts - 240 + 245 @@ -5132,11 +5152,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 249 + 254 libs/common/src/lib/routes/routes.ts - 250 + 255 @@ -5145,31 +5165,31 @@ kebab-case libs/common/src/lib/routes/routes.ts - 171 + 176 libs/common/src/lib/routes/routes.ts - 172 + 177 libs/common/src/lib/routes/routes.ts - 177 + 182 libs/common/src/lib/routes/routes.ts - 185 + 190 libs/common/src/lib/routes/routes.ts - 193 + 198 libs/common/src/lib/routes/routes.ts - 201 + 206 libs/common/src/lib/routes/routes.ts - 209 + 214 @@ -5178,11 +5198,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 199 + 204 libs/common/src/lib/routes/routes.ts - 202 + 207 @@ -5191,11 +5211,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 183 + 188 libs/common/src/lib/routes/routes.ts - 186 + 191 @@ -5204,11 +5224,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 254 + 259 libs/common/src/lib/routes/routes.ts - 255 + 260 @@ -5217,11 +5237,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 264 + 269 libs/common/src/lib/routes/routes.ts - 265 + 270 @@ -5230,11 +5250,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 274 + 279 libs/common/src/lib/routes/routes.ts - 275 + 280 @@ -5243,31 +5263,31 @@ kebab-case libs/common/src/lib/routes/routes.ts - 279 + 284 libs/common/src/lib/routes/routes.ts - 280 + 285 libs/common/src/lib/routes/routes.ts - 285 + 290 libs/common/src/lib/routes/routes.ts - 293 + 298 libs/common/src/lib/routes/routes.ts - 301 + 306 libs/common/src/lib/routes/routes.ts - 309 + 314 libs/common/src/lib/routes/routes.ts - 317 + 322 @@ -5332,11 +5352,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 315 + 320 libs/common/src/lib/routes/routes.ts - 319 + 324 @@ -6060,7 +6080,7 @@ libs/common/src/lib/routes/routes.ts - 235 + 240 @@ -6072,7 +6092,7 @@ libs/common/src/lib/routes/routes.ts - 243 + 248 @@ -6081,11 +6101,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 238 + 243 libs/common/src/lib/routes/routes.ts - 241 + 246 @@ -6197,7 +6217,7 @@ Internationalisation libs/common/src/lib/routes/routes.ts - 114 + 119 @@ -6929,7 +6949,7 @@ libs/common/src/lib/routes/routes.ts - 288 + 293 @@ -6941,7 +6961,7 @@ libs/common/src/lib/routes/routes.ts - 296 + 301 @@ -6950,11 +6970,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 291 + 296 libs/common/src/lib/routes/routes.ts - 294 + 299 @@ -6963,11 +6983,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 283 + 288 libs/common/src/lib/routes/routes.ts - 286 + 291 @@ -7416,11 +7436,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 207 + 212 libs/common/src/lib/routes/routes.ts - 210 + 215 @@ -7428,7 +7448,7 @@ Conditions d’utilisation libs/common/src/lib/routes/routes.ts - 212 + 217 @@ -7552,7 +7572,7 @@ Liste de suivi libs/common/src/lib/routes/routes.ts - 105 + 110 @@ -7578,6 +7598,10 @@ apps/client/src/app/components/home-market/home-market.html 43 + + apps/client/src/app/components/markets/markets.html + 52 + changelog @@ -7585,11 +7609,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 175 + 180 libs/common/src/lib/routes/routes.ts - 178 + 183 @@ -7693,7 +7717,7 @@ Démo Live libs/common/src/lib/routes/routes.ts - 226 + 231 @@ -7701,7 +7725,7 @@ Solutions open source alternatives à libs/common/src/lib/routes/routes.ts - 321 + 326 @@ -7742,15 +7766,15 @@ kebab-case libs/common/src/lib/routes/routes.ts - 307 + 312 libs/common/src/lib/routes/routes.ts - 310 + 315 libs/common/src/lib/routes/routes.ts - 318 + 323 @@ -7759,11 +7783,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 299 + 304 libs/common/src/lib/routes/routes.ts - 302 + 307 @@ -7980,11 +8004,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 331 + 336 libs/common/src/lib/routes/routes.ts - 332 + 337 @@ -8003,6 +8027,22 @@ 43 + + Stocks + Stocks + + apps/client/src/app/components/markets/markets.component.ts + 54 + + + + Cryptocurrencies + Cryptocurrencies + + apps/client/src/app/components/markets/markets.component.ts + 55 + + diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index 6633a2923..4cf5f8c41 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -985,6 +985,10 @@ apps/client/src/app/components/home-market/home-market.html 2 + + apps/client/src/app/components/markets/markets.html + 2 + apps/client/src/app/pages/resources/markets/resources-markets.component.html 2 @@ -1015,7 +1019,7 @@ libs/common/src/lib/routes/routes.ts - 152 + 157 @@ -1049,6 +1053,10 @@ apps/client/src/app/components/home-market/home-market.html 7 + + apps/client/src/app/components/markets/markets.html + 17 + Summary @@ -1479,7 +1487,7 @@ libs/common/src/lib/routes/routes.ts - 215 + 220 @@ -1619,7 +1627,7 @@ Informativa sulla privacy libs/common/src/lib/routes/routes.ts - 204 + 209 @@ -1931,7 +1939,7 @@ Blog libs/common/src/lib/routes/routes.ts - 220 + 225 @@ -1951,7 +1959,7 @@ libs/common/src/lib/routes/routes.ts - 246 + 251 @@ -1959,7 +1967,7 @@ Funzionalità libs/common/src/lib/routes/routes.ts - 251 + 256 @@ -1975,11 +1983,11 @@ libs/common/src/lib/routes/routes.ts - 108 + 113 libs/common/src/lib/routes/routes.ts - 165 + 170 @@ -1995,11 +2003,15 @@ libs/common/src/lib/routes/routes.ts - 256 + 100 libs/common/src/lib/routes/routes.ts - 304 + 261 + + + libs/common/src/lib/routes/routes.ts + 309 @@ -2011,7 +2023,7 @@ libs/common/src/lib/routes/routes.ts - 128 + 133 @@ -2095,7 +2107,7 @@ Analisi libs/common/src/lib/routes/routes.ts - 133 + 138 @@ -2163,7 +2175,7 @@ libs/common/src/lib/routes/routes.ts - 162 + 167 @@ -2319,7 +2331,7 @@ Attività libs/common/src/lib/routes/routes.ts - 123 + 128 @@ -2347,7 +2359,7 @@ libs/common/src/lib/routes/routes.ts - 266 + 271 @@ -2363,7 +2375,7 @@ libs/common/src/lib/routes/routes.ts - 146 + 151 @@ -2395,7 +2407,7 @@ Iscrizione libs/common/src/lib/routes/routes.ts - 276 + 281 @@ -2427,7 +2439,7 @@ Risorse libs/common/src/lib/routes/routes.ts - 327 + 332 @@ -2789,6 +2801,10 @@ apps/client/src/app/components/home-market/home-market.component.ts 28 + + apps/client/src/app/components/markets/markets.component.ts + 49 + libs/ui/src/lib/i18n.ts 102 @@ -2801,6 +2817,10 @@ apps/client/src/app/components/home-market/home-market.component.ts 29 + + apps/client/src/app/components/markets/markets.component.ts + 50 + libs/ui/src/lib/i18n.ts 103 @@ -3323,7 +3343,7 @@ Summario libs/common/src/lib/routes/routes.ts - 100 + 105 @@ -4139,7 +4159,7 @@ Changelog libs/common/src/lib/routes/routes.ts - 180 + 185 @@ -4147,7 +4167,7 @@ Licenza libs/common/src/lib/routes/routes.ts - 188 + 193 @@ -4283,7 +4303,7 @@ Strumenti di finanza personale libs/common/src/lib/routes/routes.ts - 324 + 329 @@ -5112,19 +5132,19 @@ kebab-case libs/common/src/lib/routes/routes.ts - 229 + 234 libs/common/src/lib/routes/routes.ts - 230 + 235 libs/common/src/lib/routes/routes.ts - 234 + 239 libs/common/src/lib/routes/routes.ts - 240 + 245 @@ -5133,11 +5153,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 249 + 254 libs/common/src/lib/routes/routes.ts - 250 + 255 @@ -5146,31 +5166,31 @@ kebab-case libs/common/src/lib/routes/routes.ts - 171 + 176 libs/common/src/lib/routes/routes.ts - 172 + 177 libs/common/src/lib/routes/routes.ts - 177 + 182 libs/common/src/lib/routes/routes.ts - 185 + 190 libs/common/src/lib/routes/routes.ts - 193 + 198 libs/common/src/lib/routes/routes.ts - 201 + 206 libs/common/src/lib/routes/routes.ts - 209 + 214 @@ -5179,11 +5199,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 199 + 204 libs/common/src/lib/routes/routes.ts - 202 + 207 @@ -5192,11 +5212,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 183 + 188 libs/common/src/lib/routes/routes.ts - 186 + 191 @@ -5205,11 +5225,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 254 + 259 libs/common/src/lib/routes/routes.ts - 255 + 260 @@ -5218,11 +5238,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 264 + 269 libs/common/src/lib/routes/routes.ts - 265 + 270 @@ -5231,11 +5251,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 274 + 279 libs/common/src/lib/routes/routes.ts - 275 + 280 @@ -5244,31 +5264,31 @@ kebab-case libs/common/src/lib/routes/routes.ts - 279 + 284 libs/common/src/lib/routes/routes.ts - 280 + 285 libs/common/src/lib/routes/routes.ts - 285 + 290 libs/common/src/lib/routes/routes.ts - 293 + 298 libs/common/src/lib/routes/routes.ts - 301 + 306 libs/common/src/lib/routes/routes.ts - 309 + 314 libs/common/src/lib/routes/routes.ts - 317 + 322 @@ -5333,11 +5353,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 315 + 320 libs/common/src/lib/routes/routes.ts - 319 + 324 @@ -6061,7 +6081,7 @@ libs/common/src/lib/routes/routes.ts - 235 + 240 @@ -6073,7 +6093,7 @@ libs/common/src/lib/routes/routes.ts - 243 + 248 @@ -6082,11 +6102,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 238 + 243 libs/common/src/lib/routes/routes.ts - 241 + 246 @@ -6198,7 +6218,7 @@ Internazionalizzazione libs/common/src/lib/routes/routes.ts - 114 + 119 @@ -6930,7 +6950,7 @@ libs/common/src/lib/routes/routes.ts - 288 + 293 @@ -6942,7 +6962,7 @@ libs/common/src/lib/routes/routes.ts - 296 + 301 @@ -6951,11 +6971,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 291 + 296 libs/common/src/lib/routes/routes.ts - 294 + 299 @@ -6964,11 +6984,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 283 + 288 libs/common/src/lib/routes/routes.ts - 286 + 291 @@ -7417,11 +7437,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 207 + 212 libs/common/src/lib/routes/routes.ts - 210 + 215 @@ -7429,7 +7449,7 @@ Termini e condizioni libs/common/src/lib/routes/routes.ts - 212 + 217 @@ -7553,7 +7573,7 @@ Watchlist libs/common/src/lib/routes/routes.ts - 105 + 110 @@ -7579,6 +7599,10 @@ apps/client/src/app/components/home-market/home-market.html 43 + + apps/client/src/app/components/markets/markets.html + 52 + changelog @@ -7586,11 +7610,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 175 + 180 libs/common/src/lib/routes/routes.ts - 178 + 183 @@ -7694,7 +7718,7 @@ Live Demo libs/common/src/lib/routes/routes.ts - 226 + 231 @@ -7702,7 +7726,7 @@ L’alternativa open source a libs/common/src/lib/routes/routes.ts - 321 + 326 @@ -7743,15 +7767,15 @@ kebab-case libs/common/src/lib/routes/routes.ts - 307 + 312 libs/common/src/lib/routes/routes.ts - 310 + 315 libs/common/src/lib/routes/routes.ts - 318 + 323 @@ -7760,11 +7784,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 299 + 304 libs/common/src/lib/routes/routes.ts - 302 + 307 @@ -7981,11 +8005,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 331 + 336 libs/common/src/lib/routes/routes.ts - 332 + 337 @@ -8004,6 +8028,22 @@ 43 + + Stocks + Stocks + + apps/client/src/app/components/markets/markets.component.ts + 54 + + + + Cryptocurrencies + Cryptocurrencies + + apps/client/src/app/components/markets/markets.component.ts + 55 + + diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index 09272fbc1..58ee1dac0 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -984,6 +984,10 @@ apps/client/src/app/components/home-market/home-market.html 2 + + apps/client/src/app/components/markets/markets.html + 2 + apps/client/src/app/pages/resources/markets/resources-markets.component.html 2 @@ -1014,7 +1018,7 @@ libs/common/src/lib/routes/routes.ts - 152 + 157 @@ -1048,6 +1052,10 @@ apps/client/src/app/components/home-market/home-market.html 7 + + apps/client/src/app/components/markets/markets.html + 17 + Summary @@ -1478,7 +1486,7 @@ libs/common/src/lib/routes/routes.ts - 215 + 220 @@ -1618,7 +1626,7 @@ Privacybeleid libs/common/src/lib/routes/routes.ts - 204 + 209 @@ -1930,7 +1938,7 @@ Blog libs/common/src/lib/routes/routes.ts - 220 + 225 @@ -1950,7 +1958,7 @@ libs/common/src/lib/routes/routes.ts - 246 + 251 @@ -1958,7 +1966,7 @@ Functionaliteiten libs/common/src/lib/routes/routes.ts - 251 + 256 @@ -1974,11 +1982,11 @@ libs/common/src/lib/routes/routes.ts - 108 + 113 libs/common/src/lib/routes/routes.ts - 165 + 170 @@ -1994,11 +2002,15 @@ libs/common/src/lib/routes/routes.ts - 256 + 100 libs/common/src/lib/routes/routes.ts - 304 + 261 + + + libs/common/src/lib/routes/routes.ts + 309 @@ -2010,7 +2022,7 @@ libs/common/src/lib/routes/routes.ts - 128 + 133 @@ -2094,7 +2106,7 @@ Analyse libs/common/src/lib/routes/routes.ts - 133 + 138 @@ -2162,7 +2174,7 @@ libs/common/src/lib/routes/routes.ts - 162 + 167 @@ -2318,7 +2330,7 @@ Activiteiten libs/common/src/lib/routes/routes.ts - 123 + 128 @@ -2346,7 +2358,7 @@ libs/common/src/lib/routes/routes.ts - 266 + 271 @@ -2362,7 +2374,7 @@ libs/common/src/lib/routes/routes.ts - 146 + 151 @@ -2394,7 +2406,7 @@ Registratie libs/common/src/lib/routes/routes.ts - 276 + 281 @@ -2426,7 +2438,7 @@ Bronnen libs/common/src/lib/routes/routes.ts - 327 + 332 @@ -2788,6 +2800,10 @@ apps/client/src/app/components/home-market/home-market.component.ts 28 + + apps/client/src/app/components/markets/markets.component.ts + 49 + libs/ui/src/lib/i18n.ts 102 @@ -2800,6 +2816,10 @@ apps/client/src/app/components/home-market/home-market.component.ts 29 + + apps/client/src/app/components/markets/markets.component.ts + 50 + libs/ui/src/lib/i18n.ts 103 @@ -3322,7 +3342,7 @@ Samenvatting libs/common/src/lib/routes/routes.ts - 100 + 105 @@ -4138,7 +4158,7 @@ Changelog libs/common/src/lib/routes/routes.ts - 180 + 185 @@ -4146,7 +4166,7 @@ Licentie libs/common/src/lib/routes/routes.ts - 188 + 193 @@ -4282,7 +4302,7 @@ Tools voor persoonlijke financiën libs/common/src/lib/routes/routes.ts - 324 + 329 @@ -5111,19 +5131,19 @@ kebab-case libs/common/src/lib/routes/routes.ts - 229 + 234 libs/common/src/lib/routes/routes.ts - 230 + 235 libs/common/src/lib/routes/routes.ts - 234 + 239 libs/common/src/lib/routes/routes.ts - 240 + 245 @@ -5132,11 +5152,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 249 + 254 libs/common/src/lib/routes/routes.ts - 250 + 255 @@ -5145,31 +5165,31 @@ kebab-case libs/common/src/lib/routes/routes.ts - 171 + 176 libs/common/src/lib/routes/routes.ts - 172 + 177 libs/common/src/lib/routes/routes.ts - 177 + 182 libs/common/src/lib/routes/routes.ts - 185 + 190 libs/common/src/lib/routes/routes.ts - 193 + 198 libs/common/src/lib/routes/routes.ts - 201 + 206 libs/common/src/lib/routes/routes.ts - 209 + 214 @@ -5178,11 +5198,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 199 + 204 libs/common/src/lib/routes/routes.ts - 202 + 207 @@ -5191,11 +5211,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 183 + 188 libs/common/src/lib/routes/routes.ts - 186 + 191 @@ -5204,11 +5224,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 254 + 259 libs/common/src/lib/routes/routes.ts - 255 + 260 @@ -5217,11 +5237,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 264 + 269 libs/common/src/lib/routes/routes.ts - 265 + 270 @@ -5230,11 +5250,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 274 + 279 libs/common/src/lib/routes/routes.ts - 275 + 280 @@ -5243,31 +5263,31 @@ kebab-case libs/common/src/lib/routes/routes.ts - 279 + 284 libs/common/src/lib/routes/routes.ts - 280 + 285 libs/common/src/lib/routes/routes.ts - 285 + 290 libs/common/src/lib/routes/routes.ts - 293 + 298 libs/common/src/lib/routes/routes.ts - 301 + 306 libs/common/src/lib/routes/routes.ts - 309 + 314 libs/common/src/lib/routes/routes.ts - 317 + 322 @@ -5332,11 +5352,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 315 + 320 libs/common/src/lib/routes/routes.ts - 319 + 324 @@ -6060,7 +6080,7 @@ libs/common/src/lib/routes/routes.ts - 235 + 240 @@ -6072,7 +6092,7 @@ libs/common/src/lib/routes/routes.ts - 243 + 248 @@ -6081,11 +6101,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 238 + 243 libs/common/src/lib/routes/routes.ts - 241 + 246 @@ -6197,7 +6217,7 @@ Internationalizering libs/common/src/lib/routes/routes.ts - 114 + 119 @@ -6929,7 +6949,7 @@ libs/common/src/lib/routes/routes.ts - 288 + 293 @@ -6941,7 +6961,7 @@ libs/common/src/lib/routes/routes.ts - 296 + 301 @@ -6950,11 +6970,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 291 + 296 libs/common/src/lib/routes/routes.ts - 294 + 299 @@ -6963,11 +6983,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 283 + 288 libs/common/src/lib/routes/routes.ts - 286 + 291 @@ -7416,11 +7436,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 207 + 212 libs/common/src/lib/routes/routes.ts - 210 + 215 @@ -7428,7 +7448,7 @@ Servicevoorwaarden libs/common/src/lib/routes/routes.ts - 212 + 217 @@ -7552,7 +7572,7 @@ Volglijst libs/common/src/lib/routes/routes.ts - 105 + 110 @@ -7578,6 +7598,10 @@ apps/client/src/app/components/home-market/home-market.html 43 + + apps/client/src/app/components/markets/markets.html + 52 + changelog @@ -7585,11 +7609,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 175 + 180 libs/common/src/lib/routes/routes.ts - 178 + 183 @@ -7693,7 +7717,7 @@ Live-demo libs/common/src/lib/routes/routes.ts - 226 + 231 @@ -7701,7 +7725,7 @@ Open Source alternatief voor libs/common/src/lib/routes/routes.ts - 321 + 326 @@ -7742,15 +7766,15 @@ kebab-case libs/common/src/lib/routes/routes.ts - 307 + 312 libs/common/src/lib/routes/routes.ts - 310 + 315 libs/common/src/lib/routes/routes.ts - 318 + 323 @@ -7759,11 +7783,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 299 + 304 libs/common/src/lib/routes/routes.ts - 302 + 307 @@ -7980,11 +8004,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 331 + 336 libs/common/src/lib/routes/routes.ts - 332 + 337 @@ -8003,6 +8027,22 @@ 43 + + Stocks + Stocks + + apps/client/src/app/components/markets/markets.component.ts + 54 + + + + Cryptocurrencies + Cryptocurrencies + + apps/client/src/app/components/markets/markets.component.ts + 55 + + diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index e2eb08323..4eff77177 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -7,31 +7,31 @@ kebab-case libs/common/src/lib/routes/routes.ts - 171 + 176 libs/common/src/lib/routes/routes.ts - 172 + 177 libs/common/src/lib/routes/routes.ts - 177 + 182 libs/common/src/lib/routes/routes.ts - 185 + 190 libs/common/src/lib/routes/routes.ts - 193 + 198 libs/common/src/lib/routes/routes.ts - 201 + 206 libs/common/src/lib/routes/routes.ts - 209 + 214 @@ -40,19 +40,19 @@ kebab-case libs/common/src/lib/routes/routes.ts - 229 + 234 libs/common/src/lib/routes/routes.ts - 230 + 235 libs/common/src/lib/routes/routes.ts - 234 + 239 libs/common/src/lib/routes/routes.ts - 240 + 245 @@ -61,11 +61,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 249 + 254 libs/common/src/lib/routes/routes.ts - 250 + 255 @@ -74,11 +74,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 183 + 188 libs/common/src/lib/routes/routes.ts - 186 + 191 @@ -87,11 +87,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 254 + 259 libs/common/src/lib/routes/routes.ts - 255 + 260 @@ -100,11 +100,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 264 + 269 libs/common/src/lib/routes/routes.ts - 265 + 270 @@ -113,11 +113,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 199 + 204 libs/common/src/lib/routes/routes.ts - 202 + 207 @@ -126,11 +126,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 274 + 279 libs/common/src/lib/routes/routes.ts - 275 + 280 @@ -139,31 +139,31 @@ kebab-case libs/common/src/lib/routes/routes.ts - 279 + 284 libs/common/src/lib/routes/routes.ts - 280 + 285 libs/common/src/lib/routes/routes.ts - 285 + 290 libs/common/src/lib/routes/routes.ts - 293 + 298 libs/common/src/lib/routes/routes.ts - 301 + 306 libs/common/src/lib/routes/routes.ts - 309 + 314 libs/common/src/lib/routes/routes.ts - 317 + 322 @@ -217,6 +217,10 @@ apps/client/src/app/components/home-market/home-market.html 2 + + apps/client/src/app/components/markets/markets.html + 2 + apps/client/src/app/pages/resources/markets/resources-markets.component.html 2 @@ -1867,7 +1871,7 @@ libs/common/src/lib/routes/routes.ts - 146 + 151 @@ -1999,7 +2003,7 @@ libs/common/src/lib/routes/routes.ts - 152 + 157 @@ -2033,6 +2037,10 @@ apps/client/src/app/components/home-market/home-market.component.ts 28 + + apps/client/src/app/components/markets/markets.component.ts + 49 + libs/ui/src/lib/i18n.ts 102 @@ -2045,6 +2053,10 @@ apps/client/src/app/components/home-market/home-market.component.ts 29 + + apps/client/src/app/components/markets/markets.component.ts + 50 + libs/ui/src/lib/i18n.ts 103 @@ -2057,6 +2069,10 @@ apps/client/src/app/components/home-market/home-market.html 7 + + apps/client/src/app/components/markets/markets.html + 17 + Welcome to Ghostfolio @@ -3047,7 +3063,7 @@ libs/common/src/lib/routes/routes.ts - 215 + 220 @@ -3055,7 +3071,7 @@ Changelog libs/common/src/lib/routes/routes.ts - 180 + 185 @@ -3063,7 +3079,7 @@ Licencja libs/common/src/lib/routes/routes.ts - 188 + 193 @@ -3071,7 +3087,7 @@ Polityka Prywatności libs/common/src/lib/routes/routes.ts - 204 + 209 @@ -3211,11 +3227,11 @@ libs/common/src/lib/routes/routes.ts - 108 + 113 libs/common/src/lib/routes/routes.ts - 165 + 170 @@ -3223,7 +3239,7 @@ Blog libs/common/src/lib/routes/routes.ts - 220 + 225 @@ -3251,7 +3267,7 @@ libs/common/src/lib/routes/routes.ts - 246 + 251 @@ -3275,7 +3291,7 @@ Funkcje libs/common/src/lib/routes/routes.ts - 251 + 256 @@ -3411,7 +3427,7 @@ libs/common/src/lib/routes/routes.ts - 162 + 167 @@ -3419,7 +3435,7 @@ Podsumowanie libs/common/src/lib/routes/routes.ts - 100 + 105 @@ -3435,11 +3451,15 @@ libs/common/src/lib/routes/routes.ts - 256 + 100 libs/common/src/lib/routes/routes.ts - 304 + 261 + + + libs/common/src/lib/routes/routes.ts + 309 @@ -3863,7 +3883,7 @@ Aktywności libs/common/src/lib/routes/routes.ts - 123 + 128 @@ -4111,7 +4131,7 @@ libs/common/src/lib/routes/routes.ts - 128 + 133 @@ -4283,7 +4303,7 @@ Analiza libs/common/src/lib/routes/routes.ts - 133 + 138 @@ -4451,7 +4471,7 @@ libs/common/src/lib/routes/routes.ts - 266 + 271 @@ -4691,7 +4711,7 @@ Rejestracja libs/common/src/lib/routes/routes.ts - 276 + 281 @@ -4723,7 +4743,7 @@ Narzędzia finansów osobistych libs/common/src/lib/routes/routes.ts - 324 + 329 @@ -4732,11 +4752,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 315 + 320 libs/common/src/lib/routes/routes.ts - 319 + 324 @@ -5016,7 +5036,7 @@ Zasoby libs/common/src/lib/routes/routes.ts - 327 + 332 @@ -6060,7 +6080,7 @@ libs/common/src/lib/routes/routes.ts - 235 + 240 @@ -6072,7 +6092,7 @@ libs/common/src/lib/routes/routes.ts - 243 + 248 @@ -6081,11 +6101,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 238 + 243 libs/common/src/lib/routes/routes.ts - 241 + 246 @@ -6197,7 +6217,7 @@ Internacjonalizacja libs/common/src/lib/routes/routes.ts - 114 + 119 @@ -6929,7 +6949,7 @@ libs/common/src/lib/routes/routes.ts - 288 + 293 @@ -6941,7 +6961,7 @@ libs/common/src/lib/routes/routes.ts - 296 + 301 @@ -6950,11 +6970,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 291 + 296 libs/common/src/lib/routes/routes.ts - 294 + 299 @@ -6963,11 +6983,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 283 + 288 libs/common/src/lib/routes/routes.ts - 286 + 291 @@ -7416,11 +7436,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 207 + 212 libs/common/src/lib/routes/routes.ts - 210 + 215 @@ -7428,7 +7448,7 @@ Warunki świadczenia usług libs/common/src/lib/routes/routes.ts - 212 + 217 @@ -7552,7 +7572,7 @@ Lista obserwowanych libs/common/src/lib/routes/routes.ts - 105 + 110 @@ -7578,6 +7598,10 @@ apps/client/src/app/components/home-market/home-market.html 43 + + apps/client/src/app/components/markets/markets.html + 52 + changelog @@ -7585,11 +7609,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 175 + 180 libs/common/src/lib/routes/routes.ts - 178 + 183 @@ -7693,7 +7717,7 @@ Live Demo libs/common/src/lib/routes/routes.ts - 226 + 231 @@ -7701,7 +7725,7 @@ Alternatywa Open Source dla libs/common/src/lib/routes/routes.ts - 321 + 326 @@ -7742,15 +7766,15 @@ kebab-case libs/common/src/lib/routes/routes.ts - 307 + 312 libs/common/src/lib/routes/routes.ts - 310 + 315 libs/common/src/lib/routes/routes.ts - 318 + 323 @@ -7759,11 +7783,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 299 + 304 libs/common/src/lib/routes/routes.ts - 302 + 307 @@ -7980,11 +8004,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 331 + 336 libs/common/src/lib/routes/routes.ts - 332 + 337 @@ -8003,6 +8027,22 @@ 43 + + Stocks + Stocks + + apps/client/src/app/components/markets/markets.component.ts + 54 + + + + Cryptocurrencies + Cryptocurrencies + + apps/client/src/app/components/markets/markets.component.ts + 55 + + diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index 69868c405..ad6e6a775 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -982,7 +982,7 @@ libs/common/src/lib/routes/routes.ts - 146 + 151 @@ -1160,6 +1160,10 @@ apps/client/src/app/components/home-market/home-market.html 2 + + apps/client/src/app/components/markets/markets.html + 2 + apps/client/src/app/pages/resources/markets/resources-markets.component.html 2 @@ -1198,7 +1202,7 @@ libs/common/src/lib/routes/routes.ts - 152 + 157 @@ -1232,6 +1236,10 @@ apps/client/src/app/components/home-market/home-market.component.ts 28 + + apps/client/src/app/components/markets/markets.component.ts + 49 + libs/ui/src/lib/i18n.ts 102 @@ -1244,6 +1252,10 @@ apps/client/src/app/components/home-market/home-market.component.ts 29 + + apps/client/src/app/components/markets/markets.component.ts + 50 + libs/ui/src/lib/i18n.ts 103 @@ -1256,6 +1268,10 @@ apps/client/src/app/components/home-market/home-market.html 7 + + apps/client/src/app/components/markets/markets.html + 17 + Summary @@ -1806,7 +1822,7 @@ libs/common/src/lib/routes/routes.ts - 215 + 220 @@ -1838,7 +1854,7 @@ Política de Privacidade libs/common/src/lib/routes/routes.ts - 204 + 209 @@ -2162,7 +2178,7 @@ Blog libs/common/src/lib/routes/routes.ts - 220 + 225 @@ -2278,7 +2294,7 @@ libs/common/src/lib/routes/routes.ts - 246 + 251 @@ -2286,7 +2302,7 @@ Funcionalidades libs/common/src/lib/routes/routes.ts - 251 + 256 @@ -2302,11 +2318,11 @@ libs/common/src/lib/routes/routes.ts - 108 + 113 libs/common/src/lib/routes/routes.ts - 165 + 170 @@ -2322,11 +2338,15 @@ libs/common/src/lib/routes/routes.ts - 256 + 100 libs/common/src/lib/routes/routes.ts - 304 + 261 + + + libs/common/src/lib/routes/routes.ts + 309 @@ -2334,7 +2354,7 @@ Atividades libs/common/src/lib/routes/routes.ts - 123 + 128 @@ -2470,7 +2490,7 @@ libs/common/src/lib/routes/routes.ts - 128 + 133 @@ -2598,7 +2618,7 @@ Análise libs/common/src/lib/routes/routes.ts - 133 + 138 @@ -2682,7 +2702,7 @@ libs/common/src/lib/routes/routes.ts - 162 + 167 @@ -2710,7 +2730,7 @@ libs/common/src/lib/routes/routes.ts - 266 + 271 @@ -2762,7 +2782,7 @@ Registo libs/common/src/lib/routes/routes.ts - 276 + 281 @@ -2814,7 +2834,7 @@ Recursos libs/common/src/lib/routes/routes.ts - 327 + 332 @@ -3270,7 +3290,7 @@ Sumário libs/common/src/lib/routes/routes.ts - 100 + 105 @@ -4138,7 +4158,7 @@ Registo de alterações libs/common/src/lib/routes/routes.ts - 180 + 185 @@ -4146,7 +4166,7 @@ Licença libs/common/src/lib/routes/routes.ts - 188 + 193 @@ -4282,7 +4302,7 @@ Ferramentas de finanças pessoais libs/common/src/lib/routes/routes.ts - 324 + 329 @@ -5111,19 +5131,19 @@ kebab-case libs/common/src/lib/routes/routes.ts - 229 + 234 libs/common/src/lib/routes/routes.ts - 230 + 235 libs/common/src/lib/routes/routes.ts - 234 + 239 libs/common/src/lib/routes/routes.ts - 240 + 245 @@ -5132,11 +5152,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 249 + 254 libs/common/src/lib/routes/routes.ts - 250 + 255 @@ -5145,31 +5165,31 @@ kebab-case libs/common/src/lib/routes/routes.ts - 171 + 176 libs/common/src/lib/routes/routes.ts - 172 + 177 libs/common/src/lib/routes/routes.ts - 177 + 182 libs/common/src/lib/routes/routes.ts - 185 + 190 libs/common/src/lib/routes/routes.ts - 193 + 198 libs/common/src/lib/routes/routes.ts - 201 + 206 libs/common/src/lib/routes/routes.ts - 209 + 214 @@ -5178,11 +5198,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 199 + 204 libs/common/src/lib/routes/routes.ts - 202 + 207 @@ -5191,11 +5211,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 183 + 188 libs/common/src/lib/routes/routes.ts - 186 + 191 @@ -5204,11 +5224,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 254 + 259 libs/common/src/lib/routes/routes.ts - 255 + 260 @@ -5217,11 +5237,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 264 + 269 libs/common/src/lib/routes/routes.ts - 265 + 270 @@ -5230,11 +5250,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 274 + 279 libs/common/src/lib/routes/routes.ts - 275 + 280 @@ -5243,31 +5263,31 @@ kebab-case libs/common/src/lib/routes/routes.ts - 279 + 284 libs/common/src/lib/routes/routes.ts - 280 + 285 libs/common/src/lib/routes/routes.ts - 285 + 290 libs/common/src/lib/routes/routes.ts - 293 + 298 libs/common/src/lib/routes/routes.ts - 301 + 306 libs/common/src/lib/routes/routes.ts - 309 + 314 libs/common/src/lib/routes/routes.ts - 317 + 322 @@ -5332,11 +5352,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 315 + 320 libs/common/src/lib/routes/routes.ts - 319 + 324 @@ -6060,7 +6080,7 @@ libs/common/src/lib/routes/routes.ts - 235 + 240 @@ -6072,7 +6092,7 @@ libs/common/src/lib/routes/routes.ts - 243 + 248 @@ -6081,11 +6101,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 238 + 243 libs/common/src/lib/routes/routes.ts - 241 + 246 @@ -6197,7 +6217,7 @@ Internacionalização libs/common/src/lib/routes/routes.ts - 114 + 119 @@ -6929,7 +6949,7 @@ libs/common/src/lib/routes/routes.ts - 288 + 293 @@ -6941,7 +6961,7 @@ libs/common/src/lib/routes/routes.ts - 296 + 301 @@ -6950,11 +6970,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 291 + 296 libs/common/src/lib/routes/routes.ts - 294 + 299 @@ -6963,11 +6983,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 283 + 288 libs/common/src/lib/routes/routes.ts - 286 + 291 @@ -7416,11 +7436,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 207 + 212 libs/common/src/lib/routes/routes.ts - 210 + 215 @@ -7428,7 +7448,7 @@ Termos de Serviço libs/common/src/lib/routes/routes.ts - 212 + 217 @@ -7552,7 +7572,7 @@ Watchlist libs/common/src/lib/routes/routes.ts - 105 + 110 @@ -7578,6 +7598,10 @@ apps/client/src/app/components/home-market/home-market.html 43 + + apps/client/src/app/components/markets/markets.html + 52 + changelog @@ -7585,11 +7609,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 175 + 180 libs/common/src/lib/routes/routes.ts - 178 + 183 @@ -7693,7 +7717,7 @@ Live Demo libs/common/src/lib/routes/routes.ts - 226 + 231 @@ -7701,7 +7725,7 @@ Alternativa de software livre ao libs/common/src/lib/routes/routes.ts - 321 + 326 @@ -7742,15 +7766,15 @@ kebab-case libs/common/src/lib/routes/routes.ts - 307 + 312 libs/common/src/lib/routes/routes.ts - 310 + 315 libs/common/src/lib/routes/routes.ts - 318 + 323 @@ -7759,11 +7783,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 299 + 304 libs/common/src/lib/routes/routes.ts - 302 + 307 @@ -7980,11 +8004,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 331 + 336 libs/common/src/lib/routes/routes.ts - 332 + 337 @@ -8003,6 +8027,22 @@ 43 + + Stocks + Stocks + + apps/client/src/app/components/markets/markets.component.ts + 54 + + + + Cryptocurrencies + Cryptocurrencies + + apps/client/src/app/components/markets/markets.component.ts + 55 + + diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index e90241e09..3cc26889e 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -7,31 +7,31 @@ kebab-case libs/common/src/lib/routes/routes.ts - 171 + 176 libs/common/src/lib/routes/routes.ts - 172 + 177 libs/common/src/lib/routes/routes.ts - 177 + 182 libs/common/src/lib/routes/routes.ts - 185 + 190 libs/common/src/lib/routes/routes.ts - 193 + 198 libs/common/src/lib/routes/routes.ts - 201 + 206 libs/common/src/lib/routes/routes.ts - 209 + 214 @@ -40,19 +40,19 @@ kebab-case libs/common/src/lib/routes/routes.ts - 229 + 234 libs/common/src/lib/routes/routes.ts - 230 + 235 libs/common/src/lib/routes/routes.ts - 234 + 239 libs/common/src/lib/routes/routes.ts - 240 + 245 @@ -61,11 +61,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 249 + 254 libs/common/src/lib/routes/routes.ts - 250 + 255 @@ -74,11 +74,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 183 + 188 libs/common/src/lib/routes/routes.ts - 186 + 191 @@ -87,11 +87,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 254 + 259 libs/common/src/lib/routes/routes.ts - 255 + 260 @@ -100,11 +100,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 264 + 269 libs/common/src/lib/routes/routes.ts - 265 + 270 @@ -113,11 +113,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 199 + 204 libs/common/src/lib/routes/routes.ts - 202 + 207 @@ -126,11 +126,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 274 + 279 libs/common/src/lib/routes/routes.ts - 275 + 280 @@ -139,31 +139,31 @@ kebab-case libs/common/src/lib/routes/routes.ts - 279 + 284 libs/common/src/lib/routes/routes.ts - 280 + 285 libs/common/src/lib/routes/routes.ts - 285 + 290 libs/common/src/lib/routes/routes.ts - 293 + 298 libs/common/src/lib/routes/routes.ts - 301 + 306 libs/common/src/lib/routes/routes.ts - 309 + 314 libs/common/src/lib/routes/routes.ts - 317 + 322 @@ -189,6 +189,10 @@ apps/client/src/app/components/home-market/home-market.html 2 + + apps/client/src/app/components/markets/markets.html + 2 + apps/client/src/app/pages/resources/markets/resources-markets.component.html 2 @@ -1727,7 +1731,7 @@ libs/common/src/lib/routes/routes.ts - 146 + 151 @@ -1847,7 +1851,7 @@ libs/common/src/lib/routes/routes.ts - 152 + 157 @@ -1881,6 +1885,10 @@ apps/client/src/app/components/home-market/home-market.component.ts 28 + + apps/client/src/app/components/markets/markets.component.ts + 49 + libs/ui/src/lib/i18n.ts 102 @@ -1893,6 +1901,10 @@ apps/client/src/app/components/home-market/home-market.component.ts 29 + + apps/client/src/app/components/markets/markets.component.ts + 50 + libs/ui/src/lib/i18n.ts 103 @@ -1905,6 +1917,10 @@ apps/client/src/app/components/home-market/home-market.html 7 + + apps/client/src/app/components/markets/markets.html + 17 + Welcome to Ghostfolio @@ -2623,7 +2639,7 @@ libs/common/src/lib/routes/routes.ts - 215 + 220 @@ -2631,7 +2647,7 @@ Değişiklik Günlüğü libs/common/src/lib/routes/routes.ts - 180 + 185 @@ -2639,7 +2655,7 @@ Lisans libs/common/src/lib/routes/routes.ts - 188 + 193 @@ -2647,7 +2663,7 @@ Gizlilik Politikası libs/common/src/lib/routes/routes.ts - 204 + 209 @@ -2755,11 +2771,11 @@ libs/common/src/lib/routes/routes.ts - 108 + 113 libs/common/src/lib/routes/routes.ts - 165 + 170 @@ -2767,7 +2783,7 @@ Blog libs/common/src/lib/routes/routes.ts - 220 + 225 @@ -2795,7 +2811,7 @@ libs/common/src/lib/routes/routes.ts - 246 + 251 @@ -2819,7 +2835,7 @@ Özellikler libs/common/src/lib/routes/routes.ts - 251 + 256 @@ -2967,7 +2983,7 @@ libs/common/src/lib/routes/routes.ts - 162 + 167 @@ -2975,7 +2991,7 @@ Özet libs/common/src/lib/routes/routes.ts - 100 + 105 @@ -2991,11 +3007,15 @@ libs/common/src/lib/routes/routes.ts - 256 + 100 libs/common/src/lib/routes/routes.ts - 304 + 261 + + + libs/common/src/lib/routes/routes.ts + 309 @@ -3367,7 +3387,7 @@ İşlemler libs/common/src/lib/routes/routes.ts - 123 + 128 @@ -3599,7 +3619,7 @@ libs/common/src/lib/routes/routes.ts - 128 + 133 @@ -3771,7 +3791,7 @@ Analiz libs/common/src/lib/routes/routes.ts - 133 + 138 @@ -3923,7 +3943,7 @@ libs/common/src/lib/routes/routes.ts - 266 + 271 @@ -4163,7 +4183,7 @@ Kayıt libs/common/src/lib/routes/routes.ts - 276 + 281 @@ -4215,7 +4235,7 @@ Kişisel Finans Araçları libs/common/src/lib/routes/routes.ts - 324 + 329 @@ -4224,11 +4244,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 315 + 320 libs/common/src/lib/routes/routes.ts - 319 + 324 @@ -4500,7 +4520,7 @@ Kaynaklar libs/common/src/lib/routes/routes.ts - 327 + 332 @@ -6060,7 +6080,7 @@ libs/common/src/lib/routes/routes.ts - 235 + 240 @@ -6072,7 +6092,7 @@ libs/common/src/lib/routes/routes.ts - 243 + 248 @@ -6081,11 +6101,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 238 + 243 libs/common/src/lib/routes/routes.ts - 241 + 246 @@ -6197,7 +6217,7 @@ İnternasyonalizasyon libs/common/src/lib/routes/routes.ts - 114 + 119 @@ -6929,7 +6949,7 @@ libs/common/src/lib/routes/routes.ts - 288 + 293 @@ -6941,7 +6961,7 @@ libs/common/src/lib/routes/routes.ts - 296 + 301 @@ -6950,11 +6970,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 291 + 296 libs/common/src/lib/routes/routes.ts - 294 + 299 @@ -6963,11 +6983,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 283 + 288 libs/common/src/lib/routes/routes.ts - 286 + 291 @@ -7416,11 +7436,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 207 + 212 libs/common/src/lib/routes/routes.ts - 210 + 215 @@ -7428,7 +7448,7 @@ Hizmet Koşulları libs/common/src/lib/routes/routes.ts - 212 + 217 @@ -7552,7 +7572,7 @@ İzleme Listesi libs/common/src/lib/routes/routes.ts - 105 + 110 @@ -7578,6 +7598,10 @@ apps/client/src/app/components/home-market/home-market.html 43 + + apps/client/src/app/components/markets/markets.html + 52 + changelog @@ -7585,11 +7609,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 175 + 180 libs/common/src/lib/routes/routes.ts - 178 + 183 @@ -7693,7 +7717,7 @@ Canlı Demo libs/common/src/lib/routes/routes.ts - 226 + 231 @@ -7701,7 +7725,7 @@ Açık Kaynak Alternatifi libs/common/src/lib/routes/routes.ts - 321 + 326 @@ -7742,15 +7766,15 @@ kebab-case libs/common/src/lib/routes/routes.ts - 307 + 312 libs/common/src/lib/routes/routes.ts - 310 + 315 libs/common/src/lib/routes/routes.ts - 318 + 323 @@ -7759,11 +7783,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 299 + 304 libs/common/src/lib/routes/routes.ts - 302 + 307 @@ -7980,11 +8004,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 331 + 336 libs/common/src/lib/routes/routes.ts - 332 + 337 @@ -8003,6 +8027,22 @@ 43 + + Stocks + Stocks + + apps/client/src/app/components/markets/markets.component.ts + 54 + + + + Cryptocurrencies + Cryptocurrencies + + apps/client/src/app/components/markets/markets.component.ts + 55 + + diff --git a/apps/client/src/locales/messages.uk.xlf b/apps/client/src/locales/messages.uk.xlf index b00f338a6..09fe9cf15 100644 --- a/apps/client/src/locales/messages.uk.xlf +++ b/apps/client/src/locales/messages.uk.xlf @@ -6,7 +6,7 @@ Функції libs/common/src/lib/routes/routes.ts - 251 + 256 @@ -14,7 +14,7 @@ Інтернаціоналізація libs/common/src/lib/routes/routes.ts - 114 + 119 @@ -30,7 +30,7 @@ libs/common/src/lib/routes/routes.ts - 152 + 157 @@ -84,6 +84,10 @@ apps/client/src/app/components/home-market/home-market.html 2 + + apps/client/src/app/components/markets/markets.html + 2 + apps/client/src/app/pages/resources/markets/resources-markets.component.html 2 @@ -375,31 +379,31 @@ kebab-case libs/common/src/lib/routes/routes.ts - 171 + 176 libs/common/src/lib/routes/routes.ts - 172 + 177 libs/common/src/lib/routes/routes.ts - 177 + 182 libs/common/src/lib/routes/routes.ts - 185 + 190 libs/common/src/lib/routes/routes.ts - 193 + 198 libs/common/src/lib/routes/routes.ts - 201 + 206 libs/common/src/lib/routes/routes.ts - 209 + 214 @@ -408,11 +412,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 183 + 188 libs/common/src/lib/routes/routes.ts - 186 + 191 @@ -421,11 +425,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 199 + 204 libs/common/src/lib/routes/routes.ts - 202 + 207 @@ -434,19 +438,19 @@ kebab-case libs/common/src/lib/routes/routes.ts - 229 + 234 libs/common/src/lib/routes/routes.ts - 230 + 235 libs/common/src/lib/routes/routes.ts - 234 + 239 libs/common/src/lib/routes/routes.ts - 240 + 245 @@ -455,11 +459,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 249 + 254 libs/common/src/lib/routes/routes.ts - 250 + 255 @@ -468,11 +472,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 254 + 259 libs/common/src/lib/routes/routes.ts - 255 + 260 @@ -481,11 +485,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 264 + 269 libs/common/src/lib/routes/routes.ts - 265 + 270 @@ -494,11 +498,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 274 + 279 libs/common/src/lib/routes/routes.ts - 275 + 280 @@ -507,31 +511,31 @@ kebab-case libs/common/src/lib/routes/routes.ts - 279 + 284 libs/common/src/lib/routes/routes.ts - 280 + 285 libs/common/src/lib/routes/routes.ts - 285 + 290 libs/common/src/lib/routes/routes.ts - 293 + 298 libs/common/src/lib/routes/routes.ts - 301 + 306 libs/common/src/lib/routes/routes.ts - 309 + 314 libs/common/src/lib/routes/routes.ts - 317 + 322 @@ -2143,7 +2147,7 @@ libs/common/src/lib/routes/routes.ts - 146 + 151 @@ -2477,6 +2481,10 @@ apps/client/src/app/components/home-market/home-market.component.ts 28 + + apps/client/src/app/components/markets/markets.component.ts + 49 + libs/ui/src/lib/i18n.ts 102 @@ -2489,6 +2497,10 @@ apps/client/src/app/components/home-market/home-market.component.ts 29 + + apps/client/src/app/components/markets/markets.component.ts + 50 + libs/ui/src/lib/i18n.ts 103 @@ -2501,6 +2513,10 @@ apps/client/src/app/components/home-market/home-market.html 7 + + apps/client/src/app/components/markets/markets.html + 17 + Welcome to Ghostfolio @@ -3559,7 +3575,7 @@ libs/common/src/lib/routes/routes.ts - 215 + 220 @@ -3567,7 +3583,7 @@ Журнал змін libs/common/src/lib/routes/routes.ts - 180 + 185 @@ -3575,7 +3591,7 @@ Ліцензія libs/common/src/lib/routes/routes.ts - 188 + 193 @@ -3583,7 +3599,7 @@ Політика конфіденційності libs/common/src/lib/routes/routes.ts - 204 + 209 @@ -3731,11 +3747,11 @@ libs/common/src/lib/routes/routes.ts - 108 + 113 libs/common/src/lib/routes/routes.ts - 165 + 170 @@ -3751,7 +3767,7 @@ Блог libs/common/src/lib/routes/routes.ts - 220 + 225 @@ -3779,7 +3795,7 @@ libs/common/src/lib/routes/routes.ts - 246 + 251 @@ -3799,7 +3815,7 @@ libs/common/src/lib/routes/routes.ts - 235 + 240 @@ -3811,7 +3827,7 @@ libs/common/src/lib/routes/routes.ts - 243 + 248 @@ -3820,11 +3836,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 238 + 243 libs/common/src/lib/routes/routes.ts - 241 + 246 @@ -3976,7 +3992,7 @@ libs/common/src/lib/routes/routes.ts - 162 + 167 @@ -3984,7 +4000,7 @@ Зведення libs/common/src/lib/routes/routes.ts - 100 + 105 @@ -4000,11 +4016,15 @@ libs/common/src/lib/routes/routes.ts - 256 + 100 libs/common/src/lib/routes/routes.ts - 304 + 261 + + + libs/common/src/lib/routes/routes.ts + 309 @@ -4452,7 +4472,7 @@ Активності libs/common/src/lib/routes/routes.ts - 123 + 128 @@ -4728,7 +4748,7 @@ libs/common/src/lib/routes/routes.ts - 128 + 133 @@ -4916,7 +4936,7 @@ Аналіз libs/common/src/lib/routes/routes.ts - 133 + 138 @@ -5180,7 +5200,7 @@ libs/common/src/lib/routes/routes.ts - 266 + 271 @@ -5428,7 +5448,7 @@ Реєстрація libs/common/src/lib/routes/routes.ts - 276 + 281 @@ -5464,7 +5484,7 @@ libs/common/src/lib/routes/routes.ts - 288 + 293 @@ -5484,7 +5504,7 @@ libs/common/src/lib/routes/routes.ts - 296 + 301 @@ -5501,11 +5521,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 291 + 296 libs/common/src/lib/routes/routes.ts - 294 + 299 @@ -5514,11 +5534,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 283 + 288 libs/common/src/lib/routes/routes.ts - 286 + 291 @@ -5526,7 +5546,7 @@ Інструменти особистих фінансів libs/common/src/lib/routes/routes.ts - 324 + 329 @@ -5535,11 +5555,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 315 + 320 libs/common/src/lib/routes/routes.ts - 319 + 324 @@ -6091,7 +6111,7 @@ Ресурси libs/common/src/lib/routes/routes.ts - 327 + 332 @@ -7416,11 +7436,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 207 + 212 libs/common/src/lib/routes/routes.ts - 210 + 215 @@ -7428,7 +7448,7 @@ Terms of Service libs/common/src/lib/routes/routes.ts - 212 + 217 @@ -7552,7 +7572,7 @@ Watchlist libs/common/src/lib/routes/routes.ts - 105 + 110 @@ -7578,6 +7598,10 @@ apps/client/src/app/components/home-market/home-market.html 43 + + apps/client/src/app/components/markets/markets.html + 52 + changelog @@ -7585,11 +7609,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 175 + 180 libs/common/src/lib/routes/routes.ts - 178 + 183 @@ -7693,7 +7717,7 @@ Live Demo libs/common/src/lib/routes/routes.ts - 226 + 231 @@ -7701,7 +7725,7 @@ Альтернатива з відкритим кодом для libs/common/src/lib/routes/routes.ts - 321 + 326 @@ -7742,15 +7766,15 @@ kebab-case libs/common/src/lib/routes/routes.ts - 307 + 312 libs/common/src/lib/routes/routes.ts - 310 + 315 libs/common/src/lib/routes/routes.ts - 318 + 323 @@ -7759,11 +7783,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 299 + 304 libs/common/src/lib/routes/routes.ts - 302 + 307 @@ -7980,11 +8004,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 331 + 336 libs/common/src/lib/routes/routes.ts - 332 + 337 @@ -8003,6 +8027,22 @@ 43 + + Stocks + Stocks + + apps/client/src/app/components/markets/markets.component.ts + 54 + + + + Cryptocurrencies + Cryptocurrencies + + apps/client/src/app/components/markets/markets.component.ts + 55 + + diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index cededc405..87dfa1ffb 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -7,31 +7,31 @@ kebab-case libs/common/src/lib/routes/routes.ts - 171 + 176 libs/common/src/lib/routes/routes.ts - 172 + 177 libs/common/src/lib/routes/routes.ts - 177 + 182 libs/common/src/lib/routes/routes.ts - 185 + 190 libs/common/src/lib/routes/routes.ts - 193 + 198 libs/common/src/lib/routes/routes.ts - 201 + 206 libs/common/src/lib/routes/routes.ts - 209 + 214 @@ -39,19 +39,19 @@ kebab-case libs/common/src/lib/routes/routes.ts - 229 + 234 libs/common/src/lib/routes/routes.ts - 230 + 235 libs/common/src/lib/routes/routes.ts - 234 + 239 libs/common/src/lib/routes/routes.ts - 240 + 245 @@ -59,11 +59,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 249 + 254 libs/common/src/lib/routes/routes.ts - 250 + 255 @@ -71,11 +71,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 183 + 188 libs/common/src/lib/routes/routes.ts - 186 + 191 @@ -83,11 +83,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 254 + 259 libs/common/src/lib/routes/routes.ts - 255 + 260 @@ -95,11 +95,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 264 + 269 libs/common/src/lib/routes/routes.ts - 265 + 270 @@ -107,11 +107,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 199 + 204 libs/common/src/lib/routes/routes.ts - 202 + 207 @@ -119,11 +119,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 274 + 279 libs/common/src/lib/routes/routes.ts - 275 + 280 @@ -131,31 +131,31 @@ kebab-case libs/common/src/lib/routes/routes.ts - 279 + 284 libs/common/src/lib/routes/routes.ts - 280 + 285 libs/common/src/lib/routes/routes.ts - 285 + 290 libs/common/src/lib/routes/routes.ts - 293 + 298 libs/common/src/lib/routes/routes.ts - 301 + 306 libs/common/src/lib/routes/routes.ts - 309 + 314 libs/common/src/lib/routes/routes.ts - 317 + 322 @@ -205,6 +205,10 @@ apps/client/src/app/components/home-market/home-market.html 2 + + apps/client/src/app/components/markets/markets.html + 2 + apps/client/src/app/pages/resources/markets/resources-markets.component.html 2 @@ -1769,7 +1773,7 @@ libs/common/src/lib/routes/routes.ts - 146 + 151 @@ -1889,7 +1893,7 @@ libs/common/src/lib/routes/routes.ts - 152 + 157 @@ -1920,6 +1924,10 @@ apps/client/src/app/components/home-market/home-market.component.ts 28 + + apps/client/src/app/components/markets/markets.component.ts + 49 + libs/ui/src/lib/i18n.ts 102 @@ -1931,6 +1939,10 @@ apps/client/src/app/components/home-market/home-market.component.ts 29 + + apps/client/src/app/components/markets/markets.component.ts + 50 + libs/ui/src/lib/i18n.ts 103 @@ -1942,6 +1954,10 @@ apps/client/src/app/components/home-market/home-market.html 7 + + apps/client/src/app/components/markets/markets.html + 17 + Welcome to Ghostfolio @@ -2835,28 +2851,28 @@ libs/common/src/lib/routes/routes.ts - 215 + 220 Changelog libs/common/src/lib/routes/routes.ts - 180 + 185 License libs/common/src/lib/routes/routes.ts - 188 + 193 Privacy Policy libs/common/src/lib/routes/routes.ts - 204 + 209 @@ -2980,18 +2996,18 @@ libs/common/src/lib/routes/routes.ts - 108 + 113 libs/common/src/lib/routes/routes.ts - 165 + 170 Blog libs/common/src/lib/routes/routes.ts - 220 + 225 @@ -3016,7 +3032,7 @@ libs/common/src/lib/routes/routes.ts - 246 + 251 @@ -3038,7 +3054,7 @@ Features libs/common/src/lib/routes/routes.ts - 251 + 256 @@ -3158,14 +3174,14 @@ libs/common/src/lib/routes/routes.ts - 162 + 167 Summary libs/common/src/lib/routes/routes.ts - 100 + 105 @@ -3180,11 +3196,15 @@ libs/common/src/lib/routes/routes.ts - 256 + 100 libs/common/src/lib/routes/routes.ts - 304 + 261 + + + libs/common/src/lib/routes/routes.ts + 309 @@ -3558,7 +3578,7 @@ Activities libs/common/src/lib/routes/routes.ts - 123 + 128 @@ -3779,7 +3799,7 @@ libs/common/src/lib/routes/routes.ts - 128 + 133 @@ -3933,7 +3953,7 @@ Analysis libs/common/src/lib/routes/routes.ts - 133 + 138 @@ -4082,7 +4102,7 @@ libs/common/src/lib/routes/routes.ts - 266 + 271 @@ -4298,7 +4318,7 @@ Registration libs/common/src/lib/routes/routes.ts - 276 + 281 @@ -4326,7 +4346,7 @@ Personal Finance Tools libs/common/src/lib/routes/routes.ts - 324 + 329 @@ -4334,11 +4354,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 315 + 320 libs/common/src/lib/routes/routes.ts - 319 + 324 @@ -4613,7 +4633,7 @@ Resources libs/common/src/lib/routes/routes.ts - 327 + 332 @@ -5486,11 +5506,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 238 + 243 libs/common/src/lib/routes/routes.ts - 241 + 246 @@ -5501,7 +5521,7 @@ libs/common/src/lib/routes/routes.ts - 243 + 248 @@ -5530,7 +5550,7 @@ libs/common/src/lib/routes/routes.ts - 235 + 240 @@ -5628,7 +5648,7 @@ Internationalization libs/common/src/lib/routes/routes.ts - 114 + 119 @@ -6269,7 +6289,7 @@ libs/common/src/lib/routes/routes.ts - 288 + 293 @@ -6277,11 +6297,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 283 + 288 libs/common/src/lib/routes/routes.ts - 286 + 291 @@ -6292,7 +6312,7 @@ libs/common/src/lib/routes/routes.ts - 296 + 301 @@ -6300,11 +6320,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 291 + 296 libs/common/src/lib/routes/routes.ts - 294 + 299 @@ -6690,7 +6710,7 @@ Terms of Service libs/common/src/lib/routes/routes.ts - 212 + 217 @@ -6698,11 +6718,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 207 + 212 libs/common/src/lib/routes/routes.ts - 210 + 215 @@ -6786,7 +6806,7 @@ Watchlist libs/common/src/lib/routes/routes.ts - 105 + 110 @@ -6820,17 +6840,21 @@ apps/client/src/app/components/home-market/home-market.html 43 + + apps/client/src/app/components/markets/markets.html + 52 + changelog kebab-case libs/common/src/lib/routes/routes.ts - 175 + 180 libs/common/src/lib/routes/routes.ts - 178 + 183 @@ -6921,14 +6945,14 @@ Live Demo libs/common/src/lib/routes/routes.ts - 226 + 231 Open Source Alternative to libs/common/src/lib/routes/routes.ts - 321 + 326 @@ -6964,15 +6988,15 @@ kebab-case libs/common/src/lib/routes/routes.ts - 307 + 312 libs/common/src/lib/routes/routes.ts - 310 + 315 libs/common/src/lib/routes/routes.ts - 318 + 323 @@ -6980,11 +7004,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 299 + 304 libs/common/src/lib/routes/routes.ts - 302 + 307 @@ -7174,11 +7198,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 331 + 336 libs/common/src/lib/routes/routes.ts - 332 + 337 @@ -7195,6 +7219,20 @@ 150 + + Cryptocurrencies + + apps/client/src/app/components/markets/markets.component.ts + 55 + + + + Stocks + + apps/client/src/app/components/markets/markets.component.ts + 54 + + diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf index ae6600123..d6f867971 100644 --- a/apps/client/src/locales/messages.zh.xlf +++ b/apps/client/src/locales/messages.zh.xlf @@ -8,31 +8,31 @@ kebab-case libs/common/src/lib/routes/routes.ts - 171 + 176 libs/common/src/lib/routes/routes.ts - 172 + 177 libs/common/src/lib/routes/routes.ts - 177 + 182 libs/common/src/lib/routes/routes.ts - 185 + 190 libs/common/src/lib/routes/routes.ts - 193 + 198 libs/common/src/lib/routes/routes.ts - 201 + 206 libs/common/src/lib/routes/routes.ts - 209 + 214 @@ -41,19 +41,19 @@ kebab-case libs/common/src/lib/routes/routes.ts - 229 + 234 libs/common/src/lib/routes/routes.ts - 230 + 235 libs/common/src/lib/routes/routes.ts - 234 + 239 libs/common/src/lib/routes/routes.ts - 240 + 245 @@ -62,11 +62,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 249 + 254 libs/common/src/lib/routes/routes.ts - 250 + 255 @@ -75,11 +75,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 183 + 188 libs/common/src/lib/routes/routes.ts - 186 + 191 @@ -88,11 +88,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 254 + 259 libs/common/src/lib/routes/routes.ts - 255 + 260 @@ -101,11 +101,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 264 + 269 libs/common/src/lib/routes/routes.ts - 265 + 270 @@ -114,11 +114,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 199 + 204 libs/common/src/lib/routes/routes.ts - 202 + 207 @@ -127,11 +127,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 274 + 279 libs/common/src/lib/routes/routes.ts - 275 + 280 @@ -140,31 +140,31 @@ kebab-case libs/common/src/lib/routes/routes.ts - 279 + 284 libs/common/src/lib/routes/routes.ts - 280 + 285 libs/common/src/lib/routes/routes.ts - 285 + 290 libs/common/src/lib/routes/routes.ts - 293 + 298 libs/common/src/lib/routes/routes.ts - 301 + 306 libs/common/src/lib/routes/routes.ts - 309 + 314 libs/common/src/lib/routes/routes.ts - 317 + 322 @@ -218,6 +218,10 @@ apps/client/src/app/components/home-market/home-market.html 2 + + apps/client/src/app/components/markets/markets.html + 2 + apps/client/src/app/pages/resources/markets/resources-markets.component.html 2 @@ -1876,7 +1880,7 @@ libs/common/src/lib/routes/routes.ts - 146 + 151 @@ -2008,7 +2012,7 @@ libs/common/src/lib/routes/routes.ts - 152 + 157 @@ -2042,6 +2046,10 @@ apps/client/src/app/components/home-market/home-market.component.ts 28 + + apps/client/src/app/components/markets/markets.component.ts + 49 + libs/ui/src/lib/i18n.ts 102 @@ -2054,6 +2062,10 @@ apps/client/src/app/components/home-market/home-market.component.ts 29 + + apps/client/src/app/components/markets/markets.component.ts + 50 + libs/ui/src/lib/i18n.ts 103 @@ -2066,6 +2078,10 @@ apps/client/src/app/components/home-market/home-market.html 7 + + apps/client/src/app/components/markets/markets.html + 17 + Welcome to Ghostfolio @@ -3056,7 +3072,7 @@ libs/common/src/lib/routes/routes.ts - 215 + 220 @@ -3064,7 +3080,7 @@ 更新日志 libs/common/src/lib/routes/routes.ts - 180 + 185 @@ -3072,7 +3088,7 @@ 许可证 libs/common/src/lib/routes/routes.ts - 188 + 193 @@ -3080,7 +3096,7 @@ 隐私政策 libs/common/src/lib/routes/routes.ts - 204 + 209 @@ -3220,11 +3236,11 @@ libs/common/src/lib/routes/routes.ts - 108 + 113 libs/common/src/lib/routes/routes.ts - 165 + 170 @@ -3232,7 +3248,7 @@ 博客 libs/common/src/lib/routes/routes.ts - 220 + 225 @@ -3260,7 +3276,7 @@ libs/common/src/lib/routes/routes.ts - 246 + 251 @@ -3284,7 +3300,7 @@ 功能 libs/common/src/lib/routes/routes.ts - 251 + 256 @@ -3420,7 +3436,7 @@ libs/common/src/lib/routes/routes.ts - 162 + 167 @@ -3428,7 +3444,7 @@ 汇总 libs/common/src/lib/routes/routes.ts - 100 + 105 @@ -3444,11 +3460,15 @@ libs/common/src/lib/routes/routes.ts - 256 + 100 libs/common/src/lib/routes/routes.ts - 304 + 261 + + + libs/common/src/lib/routes/routes.ts + 309 @@ -3872,7 +3892,7 @@ 活动 libs/common/src/lib/routes/routes.ts - 123 + 128 @@ -4120,7 +4140,7 @@ libs/common/src/lib/routes/routes.ts - 128 + 133 @@ -4292,7 +4312,7 @@ 分析 libs/common/src/lib/routes/routes.ts - 133 + 138 @@ -4460,7 +4480,7 @@ libs/common/src/lib/routes/routes.ts - 266 + 271 @@ -4700,7 +4720,7 @@ 注册 libs/common/src/lib/routes/routes.ts - 276 + 281 @@ -4732,7 +4752,7 @@ 个人理财工具 libs/common/src/lib/routes/routes.ts - 324 + 329 @@ -4741,11 +4761,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 315 + 320 libs/common/src/lib/routes/routes.ts - 319 + 324 @@ -5049,7 +5069,7 @@ 资源 libs/common/src/lib/routes/routes.ts - 327 + 332 @@ -6038,11 +6058,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 238 + 243 libs/common/src/lib/routes/routes.ts - 241 + 246 @@ -6054,7 +6074,7 @@ libs/common/src/lib/routes/routes.ts - 243 + 248 @@ -6086,7 +6106,7 @@ libs/common/src/lib/routes/routes.ts - 235 + 240 @@ -6198,7 +6218,7 @@ 国际化 libs/common/src/lib/routes/routes.ts - 114 + 119 @@ -6930,7 +6950,7 @@ libs/common/src/lib/routes/routes.ts - 288 + 293 @@ -6942,7 +6962,7 @@ libs/common/src/lib/routes/routes.ts - 296 + 301 @@ -6951,11 +6971,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 291 + 296 libs/common/src/lib/routes/routes.ts - 294 + 299 @@ -6964,11 +6984,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 283 + 288 libs/common/src/lib/routes/routes.ts - 286 + 291 @@ -7417,11 +7437,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 207 + 212 libs/common/src/lib/routes/routes.ts - 210 + 215 @@ -7429,7 +7449,7 @@ 服务条款 libs/common/src/lib/routes/routes.ts - 212 + 217 @@ -7553,7 +7573,7 @@ 关注列表 libs/common/src/lib/routes/routes.ts - 105 + 110 @@ -7579,6 +7599,10 @@ apps/client/src/app/components/home-market/home-market.html 43 + + apps/client/src/app/components/markets/markets.html + 52 + changelog @@ -7586,11 +7610,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 175 + 180 libs/common/src/lib/routes/routes.ts - 178 + 183 @@ -7694,7 +7718,7 @@ Live Demo libs/common/src/lib/routes/routes.ts - 226 + 231 @@ -7702,7 +7726,7 @@ Open Source Alternative to libs/common/src/lib/routes/routes.ts - 321 + 326 @@ -7743,15 +7767,15 @@ kebab-case libs/common/src/lib/routes/routes.ts - 307 + 312 libs/common/src/lib/routes/routes.ts - 310 + 315 libs/common/src/lib/routes/routes.ts - 318 + 323 @@ -7760,11 +7784,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 299 + 304 libs/common/src/lib/routes/routes.ts - 302 + 307 @@ -7981,11 +8005,11 @@ kebab-case libs/common/src/lib/routes/routes.ts - 331 + 336 libs/common/src/lib/routes/routes.ts - 332 + 337 @@ -8004,6 +8028,22 @@ 43 + + Stocks + Stocks + + apps/client/src/app/components/markets/markets.component.ts + 54 + + + + Cryptocurrencies + Cryptocurrencies + + apps/client/src/app/components/markets/markets.component.ts + 55 + + From 5d8ca14486cc9c3d6cc4034147261209bc2b0fc0 Mon Sep 17 00:00:00 2001 From: csehatt741 <77381875+csehatt741@users.noreply.github.com> Date: Thu, 3 Jul 2025 19:55:20 +0200 Subject: [PATCH 8/9] Feature/migrate about page components to standalone (#5064) * Migrate about page components to standalone * Update changelog --- CHANGELOG.md | 2 ++ apps/client/src/app/app-routing.module.ts | 2 +- apps/client/src/app/app.module.ts | 8 ++--- .../app/pages/about/about-page.component.ts | 15 ++++++-- .../src/app/pages/about/about-page.module.ts | 14 -------- ...routing.module.ts => about-page.routes.ts} | 35 ++++++------------- .../changelog/changelog-page.component.ts | 6 ++-- .../about/changelog/changelog-page.module.ts | 19 ---------- ...ing.module.ts => changelog-page.routes.ts} | 11 ++---- .../about/license/license-page.component.ts | 5 +-- .../about/license/license-page.module.ts | 13 ------- ...uting.module.ts => license-page.routes.ts} | 11 ++---- .../oss-friends/oss-friends-page.component.ts | 6 ++-- .../oss-friends/oss-friends-page.module.ts | 19 ---------- ...g.module.ts => oss-friends-page.routes.ts} | 11 ++---- .../overview/about-overview-page.component.ts | 16 +++++++-- .../overview/about-overview-page.module.ts | 19 ---------- ...odule.ts => about-overview-page.routes.ts} | 11 ++---- .../privacy-policy-page.component.ts | 3 +- .../privacy-policy-page.module.ts | 17 --------- ...odule.ts => privacy-policy-page.routes.ts} | 11 ++---- .../terms-of-service-page.component.ts | 3 +- .../terms-of-service-page.module.ts | 17 --------- ...ule.ts => terms-of-service-page.routes.ts} | 11 ++---- package-lock.json | 8 ++--- package.json | 2 +- 26 files changed, 74 insertions(+), 221 deletions(-) delete mode 100644 apps/client/src/app/pages/about/about-page.module.ts rename apps/client/src/app/pages/about/{about-page-routing.module.ts => about-page.routes.ts} (50%) delete mode 100644 apps/client/src/app/pages/about/changelog/changelog-page.module.ts rename apps/client/src/app/pages/about/changelog/{changelog-page-routing.module.ts => changelog-page.routes.ts} (58%) delete mode 100644 apps/client/src/app/pages/about/license/license-page.module.ts rename apps/client/src/app/pages/about/license/{license-page-routing.module.ts => license-page.routes.ts} (57%) delete mode 100644 apps/client/src/app/pages/about/oss-friends/oss-friends-page.module.ts rename apps/client/src/app/pages/about/oss-friends/{oss-friends-page-routing.module.ts => oss-friends-page.routes.ts} (59%) delete mode 100644 apps/client/src/app/pages/about/overview/about-overview-page.module.ts rename apps/client/src/app/pages/about/overview/{about-overview-page-routing.module.ts => about-overview-page.routes.ts} (51%) delete mode 100644 apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.module.ts rename apps/client/src/app/pages/about/privacy-policy/{privacy-policy-page-routing.module.ts => privacy-policy-page.routes.ts} (58%) delete mode 100644 apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.module.ts rename apps/client/src/app/pages/about/terms-of-service/{terms-of-service-page-routing.module.ts => terms-of-service-page.routes.ts} (59%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 23ad0f8c1..68657f12f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,11 +13,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Refactored the about pages to standalone - Made the `getByKey()` function generic in the property service - Improved the language localization for Catalan (`ca`) - Improved the language localization for German (`de`) - Improved the language localization for Portuguese (`pt`) - Upgraded `@internationalized/number` from version `3.6.0` to `3.6.3` +- Upgraded `ngx-skeleton-loader` from version `11.0.0` to `11.2.1` ## 2.176.0 - 2025-06-30 diff --git a/apps/client/src/app/app-routing.module.ts b/apps/client/src/app/app-routing.module.ts index 7eac28c87..40dbceb1a 100644 --- a/apps/client/src/app/app-routing.module.ts +++ b/apps/client/src/app/app-routing.module.ts @@ -11,7 +11,7 @@ const routes: Routes = [ { path: publicRoutes.about.path, loadChildren: () => - import('./pages/about/about-page.module').then((m) => m.AboutPageModule) + import('./pages/about/about-page.routes').then((m) => m.routes) }, { path: internalRoutes.account.path, diff --git a/apps/client/src/app/app.module.ts b/apps/client/src/app/app.module.ts index 04602dd2e..d7758cbb4 100644 --- a/apps/client/src/app/app.module.ts +++ b/apps/client/src/app/app.module.ts @@ -19,8 +19,8 @@ import { MatTooltipModule } from '@angular/material/tooltip'; import { BrowserModule } from '@angular/platform-browser'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { ServiceWorkerModule } from '@angular/service-worker'; -import { MarkdownModule } from 'ngx-markdown'; -import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; +import { provideMarkdown } from 'ngx-markdown'; +import { provideNgxSkeletonLoader } from 'ngx-skeleton-loader'; import { NgxStripeModule, STRIPE_PUBLISHABLE_KEY } from 'ngx-stripe'; import { environment } from '../environments/environment'; @@ -50,13 +50,11 @@ export function NgxStripeFactory(): string { GfLogoComponent, GfNotificationModule, GfSubscriptionInterstitialDialogModule, - MarkdownModule.forRoot(), MatAutocompleteModule, MatChipsModule, MatNativeDateModule, MatSnackBarModule, MatTooltipModule, - NgxSkeletonLoaderModule, NgxStripeModule.forRoot(environment.stripePublicKey), ServiceWorkerModule.register('ngsw-worker.js', { enabled: environment.production, @@ -68,6 +66,8 @@ export function NgxStripeFactory(): string { httpResponseInterceptorProviders, LanguageService, provideHttpClient(withInterceptorsFromDi()), + provideMarkdown(), + provideNgxSkeletonLoader(), { provide: DateAdapter, useClass: CustomDateAdapter, diff --git a/apps/client/src/app/pages/about/about-page.component.ts b/apps/client/src/app/pages/about/about-page.component.ts index 249ce5a2d..7a71d42f7 100644 --- a/apps/client/src/app/pages/about/about-page.component.ts +++ b/apps/client/src/app/pages/about/about-page.component.ts @@ -4,17 +4,26 @@ import { TabConfiguration, User } from '@ghostfolio/common/interfaces'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { publicRoutes } from '@ghostfolio/common/routes/routes'; -import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; +import { + ChangeDetectorRef, + Component, + CUSTOM_ELEMENTS_SCHEMA, + OnDestroy, + OnInit +} from '@angular/core'; +import { MatTabsModule } from '@angular/material/tabs'; +import { RouterModule } from '@angular/router'; import { DeviceDetectorService } from 'ngx-device-detector'; import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; @Component({ host: { class: 'page has-tabs' }, + imports: [MatTabsModule, RouterModule], + schemas: [CUSTOM_ELEMENTS_SCHEMA], selector: 'gf-about-page', styleUrls: ['./about-page.scss'], - templateUrl: './about-page.html', - standalone: false + templateUrl: './about-page.html' }) export class AboutPageComponent implements OnDestroy, OnInit { public deviceType: string; diff --git a/apps/client/src/app/pages/about/about-page.module.ts b/apps/client/src/app/pages/about/about-page.module.ts deleted file mode 100644 index 161faaee7..000000000 --- a/apps/client/src/app/pages/about/about-page.module.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; -import { MatTabsModule } from '@angular/material/tabs'; -import { RouterModule } from '@angular/router'; - -import { AboutPageRoutingModule } from './about-page-routing.module'; -import { AboutPageComponent } from './about-page.component'; - -@NgModule({ - declarations: [AboutPageComponent], - imports: [AboutPageRoutingModule, CommonModule, MatTabsModule, RouterModule], - schemas: [CUSTOM_ELEMENTS_SCHEMA] -}) -export class AboutPageModule {} diff --git a/apps/client/src/app/pages/about/about-page-routing.module.ts b/apps/client/src/app/pages/about/about-page.routes.ts similarity index 50% rename from apps/client/src/app/pages/about/about-page-routing.module.ts rename to apps/client/src/app/pages/about/about-page.routes.ts index 59621c794..4cb13280a 100644 --- a/apps/client/src/app/pages/about/about-page-routing.module.ts +++ b/apps/client/src/app/pages/about/about-page.routes.ts @@ -1,55 +1,46 @@ import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; import { publicRoutes } from '@ghostfolio/common/routes/routes'; -import { NgModule } from '@angular/core'; -import { RouterModule, Routes } from '@angular/router'; +import { Routes } from '@angular/router'; import { AboutPageComponent } from './about-page.component'; -const routes: Routes = [ +export const routes: Routes = [ { canActivate: [AuthGuard], children: [ { path: '', loadChildren: () => - import('./overview/about-overview-page.module').then( - (m) => m.AboutOverviewPageModule - ) + import('./overview/about-overview-page.routes').then((m) => m.routes) }, { path: publicRoutes.about.subRoutes.changelog.path, loadChildren: () => - import('./changelog/changelog-page.module').then( - (m) => m.ChangelogPageModule - ) + import('./changelog/changelog-page.routes').then((m) => m.routes) }, { path: publicRoutes.about.subRoutes.license.path, loadChildren: () => - import('./license/license-page.module').then( - (m) => m.LicensePageModule - ) + import('./license/license-page.routes').then((m) => m.routes) }, { path: publicRoutes.about.subRoutes.ossFriends.path, loadChildren: () => - import('./oss-friends/oss-friends-page.module').then( - (m) => m.OpenSourceSoftwareFriendsPageModule - ) + import('./oss-friends/oss-friends-page.routes').then((m) => m.routes) }, { path: publicRoutes.about.subRoutes.privacyPolicy.path, loadChildren: () => - import('./privacy-policy/privacy-policy-page.module').then( - (m) => m.PrivacyPolicyPageModule + import('./privacy-policy/privacy-policy-page.routes').then( + (m) => m.routes ) }, { path: publicRoutes.about.subRoutes.termsOfService.path, loadChildren: () => - import('./terms-of-service/terms-of-service-page.module').then( - (m) => m.TermsOfServicePageModule + import('./terms-of-service/terms-of-service-page.routes').then( + (m) => m.routes ) } ], @@ -58,9 +49,3 @@ const routes: Routes = [ title: publicRoutes.about.title } ]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule] -}) -export class AboutPageRoutingModule {} diff --git a/apps/client/src/app/pages/about/changelog/changelog-page.component.ts b/apps/client/src/app/pages/about/changelog/changelog-page.component.ts index bdf6f52f1..87f3008dc 100644 --- a/apps/client/src/app/pages/about/changelog/changelog-page.component.ts +++ b/apps/client/src/app/pages/about/changelog/changelog-page.component.ts @@ -1,11 +1,13 @@ import { Component, OnDestroy } from '@angular/core'; +import { MarkdownModule } from 'ngx-markdown'; +import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; import { Subject } from 'rxjs'; @Component({ + imports: [MarkdownModule, NgxSkeletonLoaderModule], selector: 'gf-changelog-page', styleUrls: ['./changelog-page.scss'], - templateUrl: './changelog-page.html', - standalone: false + templateUrl: './changelog-page.html' }) export class ChangelogPageComponent implements OnDestroy { public isLoading = true; diff --git a/apps/client/src/app/pages/about/changelog/changelog-page.module.ts b/apps/client/src/app/pages/about/changelog/changelog-page.module.ts deleted file mode 100644 index e81e6805f..000000000 --- a/apps/client/src/app/pages/about/changelog/changelog-page.module.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; -import { MarkdownModule } from 'ngx-markdown'; -import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; - -import { ChangelogPageRoutingModule } from './changelog-page-routing.module'; -import { ChangelogPageComponent } from './changelog-page.component'; - -@NgModule({ - declarations: [ChangelogPageComponent], - imports: [ - ChangelogPageRoutingModule, - CommonModule, - MarkdownModule.forChild(), - NgxSkeletonLoaderModule - ], - schemas: [CUSTOM_ELEMENTS_SCHEMA] -}) -export class ChangelogPageModule {} diff --git a/apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts b/apps/client/src/app/pages/about/changelog/changelog-page.routes.ts similarity index 58% rename from apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts rename to apps/client/src/app/pages/about/changelog/changelog-page.routes.ts index d69da3f64..78ac2ad9e 100644 --- a/apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts +++ b/apps/client/src/app/pages/about/changelog/changelog-page.routes.ts @@ -1,12 +1,11 @@ import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; import { publicRoutes } from '@ghostfolio/common/routes/routes'; -import { NgModule } from '@angular/core'; -import { RouterModule, Routes } from '@angular/router'; +import { Routes } from '@angular/router'; import { ChangelogPageComponent } from './changelog-page.component'; -const routes: Routes = [ +export const routes: Routes = [ { canActivate: [AuthGuard], component: ChangelogPageComponent, @@ -14,9 +13,3 @@ const routes: Routes = [ title: publicRoutes.about.subRoutes.changelog.title } ]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule] -}) -export class ChangelogPageRoutingModule {} diff --git a/apps/client/src/app/pages/about/license/license-page.component.ts b/apps/client/src/app/pages/about/license/license-page.component.ts index deec0de60..0d4b2a97c 100644 --- a/apps/client/src/app/pages/about/license/license-page.component.ts +++ b/apps/client/src/app/pages/about/license/license-page.component.ts @@ -1,11 +1,12 @@ import { Component, OnDestroy } from '@angular/core'; +import { MarkdownModule } from 'ngx-markdown'; import { Subject } from 'rxjs'; @Component({ + imports: [MarkdownModule], selector: 'gf-license-page', styleUrls: ['./license-page.scss'], - templateUrl: './license-page.html', - standalone: false + templateUrl: './license-page.html' }) export class LicensePageComponent implements OnDestroy { private unsubscribeSubject = new Subject(); diff --git a/apps/client/src/app/pages/about/license/license-page.module.ts b/apps/client/src/app/pages/about/license/license-page.module.ts deleted file mode 100644 index d18b48309..000000000 --- a/apps/client/src/app/pages/about/license/license-page.module.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; -import { MarkdownModule } from 'ngx-markdown'; - -import { LicensePageRoutingModule } from './license-page-routing.module'; -import { LicensePageComponent } from './license-page.component'; - -@NgModule({ - declarations: [LicensePageComponent], - imports: [LicensePageRoutingModule, CommonModule, MarkdownModule.forChild()], - schemas: [CUSTOM_ELEMENTS_SCHEMA] -}) -export class LicensePageModule {} diff --git a/apps/client/src/app/pages/about/license/license-page-routing.module.ts b/apps/client/src/app/pages/about/license/license-page.routes.ts similarity index 57% rename from apps/client/src/app/pages/about/license/license-page-routing.module.ts rename to apps/client/src/app/pages/about/license/license-page.routes.ts index af884e35c..d842485ed 100644 --- a/apps/client/src/app/pages/about/license/license-page-routing.module.ts +++ b/apps/client/src/app/pages/about/license/license-page.routes.ts @@ -1,12 +1,11 @@ import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; import { publicRoutes } from '@ghostfolio/common/routes/routes'; -import { NgModule } from '@angular/core'; -import { RouterModule, Routes } from '@angular/router'; +import { Routes } from '@angular/router'; import { LicensePageComponent } from './license-page.component'; -const routes: Routes = [ +export const routes: Routes = [ { canActivate: [AuthGuard], component: LicensePageComponent, @@ -14,9 +13,3 @@ const routes: Routes = [ title: publicRoutes.about.subRoutes.license.title } ]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule] -}) -export class LicensePageRoutingModule {} diff --git a/apps/client/src/app/pages/about/oss-friends/oss-friends-page.component.ts b/apps/client/src/app/pages/about/oss-friends/oss-friends-page.component.ts index 86dcd4ed3..04e77bef0 100644 --- a/apps/client/src/app/pages/about/oss-friends/oss-friends-page.component.ts +++ b/apps/client/src/app/pages/about/oss-friends/oss-friends-page.component.ts @@ -1,13 +1,15 @@ import { Component, OnDestroy } from '@angular/core'; +import { MatButtonModule } from '@angular/material/button'; +import { MatCardModule } from '@angular/material/card'; import { Subject } from 'rxjs'; const ossFriends = require('../../../../assets/oss-friends.json'); @Component({ + imports: [MatButtonModule, MatCardModule], selector: 'gf-oss-friends-page', styleUrls: ['./oss-friends-page.scss'], - templateUrl: './oss-friends-page.html', - standalone: false + templateUrl: './oss-friends-page.html' }) export class OpenSourceSoftwareFriendsPageComponent implements OnDestroy { public ossFriends = ossFriends.data; diff --git a/apps/client/src/app/pages/about/oss-friends/oss-friends-page.module.ts b/apps/client/src/app/pages/about/oss-friends/oss-friends-page.module.ts deleted file mode 100644 index 95cf9c3c3..000000000 --- a/apps/client/src/app/pages/about/oss-friends/oss-friends-page.module.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; -import { MatButtonModule } from '@angular/material/button'; -import { MatCardModule } from '@angular/material/card'; - -import { OpenSourceSoftwareFriendsPageRoutingModule } from './oss-friends-page-routing.module'; -import { OpenSourceSoftwareFriendsPageComponent } from './oss-friends-page.component'; - -@NgModule({ - declarations: [OpenSourceSoftwareFriendsPageComponent], - imports: [ - CommonModule, - MatButtonModule, - MatCardModule, - OpenSourceSoftwareFriendsPageRoutingModule - ], - schemas: [CUSTOM_ELEMENTS_SCHEMA] -}) -export class OpenSourceSoftwareFriendsPageModule {} diff --git a/apps/client/src/app/pages/about/oss-friends/oss-friends-page-routing.module.ts b/apps/client/src/app/pages/about/oss-friends/oss-friends-page.routes.ts similarity index 59% rename from apps/client/src/app/pages/about/oss-friends/oss-friends-page-routing.module.ts rename to apps/client/src/app/pages/about/oss-friends/oss-friends-page.routes.ts index 3b21e89e4..ac0bd2a9f 100644 --- a/apps/client/src/app/pages/about/oss-friends/oss-friends-page-routing.module.ts +++ b/apps/client/src/app/pages/about/oss-friends/oss-friends-page.routes.ts @@ -1,12 +1,11 @@ import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; import { publicRoutes } from '@ghostfolio/common/routes/routes'; -import { NgModule } from '@angular/core'; -import { RouterModule, Routes } from '@angular/router'; +import { Routes } from '@angular/router'; import { OpenSourceSoftwareFriendsPageComponent } from './oss-friends-page.component'; -const routes: Routes = [ +export const routes: Routes = [ { canActivate: [AuthGuard], component: OpenSourceSoftwareFriendsPageComponent, @@ -14,9 +13,3 @@ const routes: Routes = [ title: publicRoutes.about.subRoutes.ossFriends.title } ]; - -@NgModule({ - exports: [RouterModule], - imports: [RouterModule.forChild(routes)] -}) -export class OpenSourceSoftwareFriendsPageRoutingModule {} diff --git a/apps/client/src/app/pages/about/overview/about-overview-page.component.ts b/apps/client/src/app/pages/about/overview/about-overview-page.component.ts index afb260d20..1f01cd58a 100644 --- a/apps/client/src/app/pages/about/overview/about-overview-page.component.ts +++ b/apps/client/src/app/pages/about/overview/about-overview-page.component.ts @@ -4,15 +4,25 @@ import { User } from '@ghostfolio/common/interfaces'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { publicRoutes } from '@ghostfolio/common/routes/routes'; -import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { + ChangeDetectorRef, + Component, + CUSTOM_ELEMENTS_SCHEMA, + OnDestroy, + OnInit +} from '@angular/core'; +import { MatButtonModule } from '@angular/material/button'; +import { RouterModule } from '@angular/router'; import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; @Component({ + imports: [CommonModule, MatButtonModule, RouterModule], + schemas: [CUSTOM_ELEMENTS_SCHEMA], selector: 'gf-about-overview-page', styleUrls: ['./about-overview-page.scss'], - templateUrl: './about-overview-page.html', - standalone: false + templateUrl: './about-overview-page.html' }) export class AboutOverviewPageComponent implements OnDestroy, OnInit { public hasPermissionForStatistics: boolean; diff --git a/apps/client/src/app/pages/about/overview/about-overview-page.module.ts b/apps/client/src/app/pages/about/overview/about-overview-page.module.ts deleted file mode 100644 index 594f5b362..000000000 --- a/apps/client/src/app/pages/about/overview/about-overview-page.module.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; -import { MatButtonModule } from '@angular/material/button'; -import { RouterModule } from '@angular/router'; - -import { AboutOverviewPageRoutingModule } from './about-overview-page-routing.module'; -import { AboutOverviewPageComponent } from './about-overview-page.component'; - -@NgModule({ - declarations: [AboutOverviewPageComponent], - imports: [ - AboutOverviewPageRoutingModule, - CommonModule, - MatButtonModule, - RouterModule - ], - schemas: [CUSTOM_ELEMENTS_SCHEMA] -}) -export class AboutOverviewPageModule {} diff --git a/apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts b/apps/client/src/app/pages/about/overview/about-overview-page.routes.ts similarity index 51% rename from apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts rename to apps/client/src/app/pages/about/overview/about-overview-page.routes.ts index 989dddc9d..8774ceee5 100644 --- a/apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts +++ b/apps/client/src/app/pages/about/overview/about-overview-page.routes.ts @@ -1,11 +1,10 @@ import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; -import { NgModule } from '@angular/core'; -import { RouterModule, Routes } from '@angular/router'; +import { Routes } from '@angular/router'; import { AboutOverviewPageComponent } from './about-overview-page.component'; -const routes: Routes = [ +export const routes: Routes = [ { canActivate: [AuthGuard], component: AboutOverviewPageComponent, @@ -13,9 +12,3 @@ const routes: Routes = [ title: $localize`About` } ]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule] -}) -export class AboutOverviewPageRoutingModule {} diff --git a/apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.component.ts b/apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.component.ts index 0dc1aab13..166963f9d 100644 --- a/apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.component.ts +++ b/apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.component.ts @@ -1,9 +1,10 @@ import { Component, OnDestroy } from '@angular/core'; +import { MarkdownModule } from 'ngx-markdown'; import { Subject } from 'rxjs'; @Component({ + imports: [MarkdownModule], selector: 'gf-privacy-policy-page', - standalone: false, styleUrls: ['./privacy-policy-page.scss'], templateUrl: './privacy-policy-page.html' }) diff --git a/apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.module.ts b/apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.module.ts deleted file mode 100644 index b33aea784..000000000 --- a/apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.module.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; -import { MarkdownModule } from 'ngx-markdown'; - -import { PrivacyPolicyPageRoutingModule } from './privacy-policy-page-routing.module'; -import { PrivacyPolicyPageComponent } from './privacy-policy-page.component'; - -@NgModule({ - declarations: [PrivacyPolicyPageComponent], - imports: [ - CommonModule, - MarkdownModule.forChild(), - PrivacyPolicyPageRoutingModule - ], - schemas: [CUSTOM_ELEMENTS_SCHEMA] -}) -export class PrivacyPolicyPageModule {} diff --git a/apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts b/apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.routes.ts similarity index 58% rename from apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts rename to apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.routes.ts index 83177bbe8..950fee5b5 100644 --- a/apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts +++ b/apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.routes.ts @@ -1,12 +1,11 @@ import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; import { publicRoutes } from '@ghostfolio/common/routes/routes'; -import { NgModule } from '@angular/core'; -import { RouterModule, Routes } from '@angular/router'; +import { Routes } from '@angular/router'; import { PrivacyPolicyPageComponent } from './privacy-policy-page.component'; -const routes: Routes = [ +export const routes: Routes = [ { canActivate: [AuthGuard], component: PrivacyPolicyPageComponent, @@ -14,9 +13,3 @@ const routes: Routes = [ title: publicRoutes.about.subRoutes.privacyPolicy.title } ]; - -@NgModule({ - exports: [RouterModule], - imports: [RouterModule.forChild(routes)] -}) -export class PrivacyPolicyPageRoutingModule {} diff --git a/apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.component.ts b/apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.component.ts index bd4e126ac..4278bb69f 100644 --- a/apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.component.ts +++ b/apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.component.ts @@ -1,9 +1,10 @@ import { Component, OnDestroy } from '@angular/core'; +import { MarkdownModule } from 'ngx-markdown'; import { Subject } from 'rxjs'; @Component({ + imports: [MarkdownModule], selector: 'gf-terms-of-service-page', - standalone: false, styleUrls: ['./terms-of-service-page.scss'], templateUrl: './terms-of-service-page.html' }) diff --git a/apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.module.ts b/apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.module.ts deleted file mode 100644 index 5861cbb16..000000000 --- a/apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.module.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; -import { MarkdownModule } from 'ngx-markdown'; - -import { TermsOfServicePageRoutingModule } from './terms-of-service-page-routing.module'; -import { TermsOfServicePageComponent } from './terms-of-service-page.component'; - -@NgModule({ - declarations: [TermsOfServicePageComponent], - imports: [ - CommonModule, - MarkdownModule.forChild(), - TermsOfServicePageRoutingModule - ], - schemas: [CUSTOM_ELEMENTS_SCHEMA] -}) -export class TermsOfServicePageModule {} diff --git a/apps/client/src/app/pages/about/terms-of-service/terms-of-service-page-routing.module.ts b/apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.routes.ts similarity index 59% rename from apps/client/src/app/pages/about/terms-of-service/terms-of-service-page-routing.module.ts rename to apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.routes.ts index c2b52a9f5..1cc6907c5 100644 --- a/apps/client/src/app/pages/about/terms-of-service/terms-of-service-page-routing.module.ts +++ b/apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.routes.ts @@ -1,12 +1,11 @@ import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; import { publicRoutes } from '@ghostfolio/common/routes/routes'; -import { NgModule } from '@angular/core'; -import { RouterModule, Routes } from '@angular/router'; +import { Routes } from '@angular/router'; import { TermsOfServicePageComponent } from './terms-of-service-page.component'; -const routes: Routes = [ +export const routes: Routes = [ { canActivate: [AuthGuard], component: TermsOfServicePageComponent, @@ -14,9 +13,3 @@ const routes: Routes = [ title: publicRoutes.about.subRoutes.termsOfService.title } ]; - -@NgModule({ - exports: [RouterModule], - imports: [RouterModule.forChild(routes)] -}) -export class TermsOfServicePageRoutingModule {} diff --git a/package-lock.json b/package-lock.json index af9676334..96cc39c42 100644 --- a/package-lock.json +++ b/package-lock.json @@ -78,7 +78,7 @@ "ng-extract-i18n-merge": "2.15.1", "ngx-device-detector": "9.0.0", "ngx-markdown": "19.0.0", - "ngx-skeleton-loader": "11.0.0", + "ngx-skeleton-loader": "11.2.1", "ngx-stripe": "19.7.0", "open-color": "1.9.1", "papaparse": "5.3.1", @@ -26911,9 +26911,9 @@ } }, "node_modules/ngx-skeleton-loader": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/ngx-skeleton-loader/-/ngx-skeleton-loader-11.0.0.tgz", - "integrity": "sha512-SVWgrePXqIX0ToLf/G0Ce+aE6qXCKl/c+9arV61eiFlrqXXaMlXCkVAYT/wpK+4xgVMHXvQha1mnG9YcKVHQ1A==", + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/ngx-skeleton-loader/-/ngx-skeleton-loader-11.2.1.tgz", + "integrity": "sha512-0YWwQgK3X4trtiLvTv3/CMGxcvjPkUbtTTKJJ2EOHhFuvPf0b+XO1KwguK0Ub9BMHnsqK8xOol0cEoVXyNh64Q==", "license": "MIT", "dependencies": { "tslib": "^2.0.0" diff --git a/package.json b/package.json index d8fc4bedb..e84679f7d 100644 --- a/package.json +++ b/package.json @@ -124,7 +124,7 @@ "ng-extract-i18n-merge": "2.15.1", "ngx-device-detector": "9.0.0", "ngx-markdown": "19.0.0", - "ngx-skeleton-loader": "11.0.0", + "ngx-skeleton-loader": "11.2.1", "ngx-stripe": "19.7.0", "open-color": "1.9.1", "papaparse": "5.3.1", From 3d8f5b0961712db9fba96f693a29727679a63ab4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 3 Jul 2025 20:01:32 +0200 Subject: [PATCH 9/9] Feature/update locales (#5083) Co-authored-by: github-actions[bot] --- apps/client/src/locales/messages.ca.xlf | 4 ++-- apps/client/src/locales/messages.de.xlf | 4 ++-- apps/client/src/locales/messages.es.xlf | 4 ++-- apps/client/src/locales/messages.fr.xlf | 4 ++-- apps/client/src/locales/messages.it.xlf | 4 ++-- apps/client/src/locales/messages.nl.xlf | 4 ++-- apps/client/src/locales/messages.pl.xlf | 4 ++-- apps/client/src/locales/messages.pt.xlf | 4 ++-- apps/client/src/locales/messages.tr.xlf | 4 ++-- apps/client/src/locales/messages.uk.xlf | 4 ++-- apps/client/src/locales/messages.xlf | 4 ++-- apps/client/src/locales/messages.zh.xlf | 4 ++-- 12 files changed, 24 insertions(+), 24 deletions(-) diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf index 0861044bc..d75b71bc1 100644 --- a/apps/client/src/locales/messages.ca.xlf +++ b/apps/client/src/locales/messages.ca.xlf @@ -3370,8 +3370,8 @@ About Sobre - apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts - 13 + apps/client/src/app/pages/about/overview/about-overview-page.routes.ts + 12 libs/common/src/lib/routes/routes.ts diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index 1e4c6b5f1..a951dd6ea 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -1497,8 +1497,8 @@ About Über Ghostfolio - apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts - 13 + apps/client/src/app/pages/about/overview/about-overview-page.routes.ts + 12 libs/common/src/lib/routes/routes.ts diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index ec3622688..8b5bbd6b6 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -1482,8 +1482,8 @@ About Sobre - apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts - 13 + apps/client/src/app/pages/about/overview/about-overview-page.routes.ts + 12 libs/common/src/lib/routes/routes.ts diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index 120e07112..a4cb2828b 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -1833,8 +1833,8 @@ About À propos - apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts - 13 + apps/client/src/app/pages/about/overview/about-overview-page.routes.ts + 12 libs/common/src/lib/routes/routes.ts diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index 4cf5f8c41..9088f7a49 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -1482,8 +1482,8 @@ About Informazioni su - apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts - 13 + apps/client/src/app/pages/about/overview/about-overview-page.routes.ts + 12 libs/common/src/lib/routes/routes.ts diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index 58ee1dac0..899d6148b 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -1481,8 +1481,8 @@ About Over - apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts - 13 + apps/client/src/app/pages/about/overview/about-overview-page.routes.ts + 12 libs/common/src/lib/routes/routes.ts diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index 4eff77177..c1872d40a 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -3058,8 +3058,8 @@ About O Ghostfolio - apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts - 13 + apps/client/src/app/pages/about/overview/about-overview-page.routes.ts + 12 libs/common/src/lib/routes/routes.ts diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index ad6e6a775..26b4108be 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -1817,8 +1817,8 @@ About Sobre - apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts - 13 + apps/client/src/app/pages/about/overview/about-overview-page.routes.ts + 12 libs/common/src/lib/routes/routes.ts diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index 3cc26889e..7349b99f9 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -2634,8 +2634,8 @@ About Hakkında - apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts - 13 + apps/client/src/app/pages/about/overview/about-overview-page.routes.ts + 12 libs/common/src/lib/routes/routes.ts diff --git a/apps/client/src/locales/messages.uk.xlf b/apps/client/src/locales/messages.uk.xlf index 09fe9cf15..a82a3fee1 100644 --- a/apps/client/src/locales/messages.uk.xlf +++ b/apps/client/src/locales/messages.uk.xlf @@ -3570,8 +3570,8 @@ About Про нас - apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts - 13 + apps/client/src/app/pages/about/overview/about-overview-page.routes.ts + 12 libs/common/src/lib/routes/routes.ts diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index 87dfa1ffb..7931c907c 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -2846,8 +2846,8 @@ About - apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts - 13 + apps/client/src/app/pages/about/overview/about-overview-page.routes.ts + 12 libs/common/src/lib/routes/routes.ts diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf index d6f867971..a4a44cd55 100644 --- a/apps/client/src/locales/messages.zh.xlf +++ b/apps/client/src/locales/messages.zh.xlf @@ -3067,8 +3067,8 @@ About 关于 - apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts - 13 + apps/client/src/app/pages/about/overview/about-overview-page.routes.ts + 12 libs/common/src/lib/routes/routes.ts