diff --git a/CHANGELOG.md b/CHANGELOG.md index 3ffc88713..8a503cc42 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,13 +9,30 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Upgraded `chart.js` from version `4.5.0` to `4.5.1` +- Upgraded `svgmap` from version `2.12.2` to `2.14.0` + +## 2.215.0 - 2025-11-06 + +### Added + +- Added the endpoint `GET /api/v1/admin/user/:id` + +### Changed + +- Improved the _Self-Hosting_ section content for the _Compare with..._ concept on the Frequently Asked Questions (FAQ) page +- Improved the _Self-Hosting_ section content for the _Markets_ concept on the Frequently Asked Questions (FAQ) page - Changed the build executor of the client from `@nx/angular:webpack-browser` to `@nx/angular:browser-esbuild` +- Refactored the app component to standalone - Improved the language localization for German (`de`) -- Upgraded `svgmap` from version `2.12.2` to `2.14.0` +- Upgraded `@ionic/angular` from version `8.7.3` to `8.7.8` ### Fixed - Fixed the style of the safe withdrawal rate selector in the _FIRE_ section (experimental) +- Assigned the `ADMIN` role to the first user signing up via a social login provider if no administrator existed +- Improved the table headers’ alignment in the platform management of the admin control panel +- Improved the table headers’ alignment in the tag management of the admin control panel ## 2.214.0 - 2025-11-01 diff --git a/apps/api/src/app/admin/admin.controller.ts b/apps/api/src/app/admin/admin.controller.ts index 2419b0a7d..7ed7f364b 100644 --- a/apps/api/src/app/admin/admin.controller.ts +++ b/apps/api/src/app/admin/admin.controller.ts @@ -17,6 +17,7 @@ import { getAssetProfileIdentifier } from '@ghostfolio/common/helper'; import { AdminData, AdminMarketData, + AdminUserResponse, AdminUsersResponse, EnhancedSymbolProfile, ScraperConfiguration @@ -321,4 +322,11 @@ export class AdminController { take: isNaN(take) ? undefined : take }); } + + @Get('user/:id') + @HasPermission(permissions.accessAdminControl) + @UseGuards(AuthGuard('jwt'), HasPermissionGuard) + public async getUser(@Param('id') id: string): Promise { + return this.adminService.getUser(id); + } } diff --git a/apps/api/src/app/admin/admin.service.ts b/apps/api/src/app/admin/admin.service.ts index 683e72cb8..6b29b141a 100644 --- a/apps/api/src/app/admin/admin.service.ts +++ b/apps/api/src/app/admin/admin.service.ts @@ -23,6 +23,7 @@ import { AdminMarketData, AdminMarketDataDetails, AdminMarketDataItem, + AdminUserResponse, AdminUsersResponse, AssetProfileIdentifier, EnhancedSymbolProfile, @@ -35,7 +36,8 @@ import { BadRequestException, HttpException, Injectable, - Logger + Logger, + NotFoundException } from '@nestjs/common'; import { AssetClass, @@ -507,6 +509,18 @@ export class AdminService { }; } + public async getUser(id: string): Promise { + const [user] = await this.getUsersWithAnalytics({ + where: { id } + }); + + if (!user) { + throw new NotFoundException(`User with ID ${id} not found`); + } + + return user; + } + public async getUsers({ skip, take = Number.MAX_SAFE_INTEGER @@ -516,7 +530,15 @@ export class AdminService { }): Promise { const [count, users] = await Promise.all([ this.countUsersWithAnalytics(), - this.getUsersWithAnalytics({ skip, take }) + this.getUsersWithAnalytics({ + skip, + take, + where: { + NOT: { + analytics: null + } + } + }) ]); return { count, users }; @@ -814,17 +836,17 @@ export class AdminService { private async getUsersWithAnalytics({ skip, - take + take, + where }: { skip?: number; take?: number; + where?: Prisma.UserWhereInput; }): Promise { let orderBy: Prisma.Enumerable = [ { createdAt: 'desc' } ]; - let where: Prisma.UserWhereInput; - if (this.configurationService.get('ENABLE_FEATURE_SUBSCRIPTION')) { orderBy = [ { @@ -833,12 +855,6 @@ export class AdminService { } } ]; - - where = { - NOT: { - analytics: null - } - }; } const usersWithAnalytics = await this.prismaService.user.findMany({ diff --git a/apps/api/src/app/user/user.controller.ts b/apps/api/src/app/user/user.controller.ts index e545fd335..8704662f7 100644 --- a/apps/api/src/app/user/user.controller.ts +++ b/apps/api/src/app/user/user.controller.ts @@ -126,11 +126,7 @@ export class UserController { ); } - const hasAdmin = await this.userService.hasAdmin(); - - const { accessToken, id, role } = await this.userService.createUser({ - data: { role: hasAdmin ? 'USER' : 'ADMIN' } - }); + const { accessToken, id, role } = await this.userService.createUser(); return { accessToken, diff --git a/apps/api/src/app/user/user.service.ts b/apps/api/src/app/user/user.service.ts index f797270ff..65ce92cb2 100644 --- a/apps/api/src/app/user/user.service.ts +++ b/apps/api/src/app/user/user.service.ts @@ -526,15 +526,23 @@ export class UserService { }); } - public async createUser({ - data - }: { - data: Prisma.UserCreateInput; - }): Promise { - if (!data?.provider) { + public async createUser( + { + data + }: { + data: Prisma.UserCreateInput; + } = { data: {} } + ): Promise { + if (!data.provider) { data.provider = 'ANONYMOUS'; } + if (!data.role) { + const hasAdmin = await this.hasAdmin(); + + data.role = hasAdmin ? 'USER' : 'ADMIN'; + } + const user = await this.prismaService.user.create({ data: { ...data, diff --git a/apps/client/src/app/app.component.ts b/apps/client/src/app/app.component.ts index 5ecb7bf8b..b70850016 100644 --- a/apps/client/src/app/app.component.ts +++ b/apps/client/src/app/app.component.ts @@ -1,5 +1,3 @@ -import { GfHoldingDetailDialogComponent } from '@ghostfolio/client/components/holding-detail-dialog/holding-detail-dialog.component'; -import { HoldingDetailDialogParams } from '@ghostfolio/client/components/holding-detail-dialog/interfaces/interfaces'; import { getCssVariable } from '@ghostfolio/common/helper'; import { InfoItem, User } from '@ghostfolio/common/interfaces'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; @@ -22,7 +20,9 @@ import { ActivatedRoute, NavigationEnd, PRIMARY_OUTLET, - Router + Router, + RouterLink, + RouterOutlet } from '@angular/router'; import { DataSource } from '@prisma/client'; import { addIcons } from 'ionicons'; @@ -31,6 +31,10 @@ import { DeviceDetectorService } from 'ngx-device-detector'; import { Subject } from 'rxjs'; import { filter, takeUntil } from 'rxjs/operators'; +import { GfFooterComponent } from './components/footer/footer.component'; +import { GfHeaderComponent } from './components/header/header.component'; +import { GfHoldingDetailDialogComponent } from './components/holding-detail-dialog/holding-detail-dialog.component'; +import { HoldingDetailDialogParams } from './components/holding-detail-dialog/interfaces/interfaces'; import { NotificationService } from './core/notification/notification.service'; import { DataService } from './services/data.service'; import { ImpersonationStorageService } from './services/impersonation-storage.service'; @@ -38,13 +42,13 @@ import { TokenStorageService } from './services/token-storage.service'; import { UserService } from './services/user/user.service'; @Component({ - selector: 'gf-root', changeDetection: ChangeDetectionStrategy.OnPush, - templateUrl: './app.component.html', + imports: [GfFooterComponent, GfHeaderComponent, RouterLink, RouterOutlet], + selector: 'gf-root', styleUrls: ['./app.component.scss'], - standalone: false + templateUrl: './app.component.html' }) -export class AppComponent implements OnDestroy, OnInit { +export class GfAppComponent implements OnDestroy, OnInit { @HostBinding('class.has-info-message') get getHasMessage() { return this.hasInfoMessage; } diff --git a/apps/client/src/app/app.module.ts b/apps/client/src/app/app.module.ts deleted file mode 100644 index 63de8fca7..000000000 --- a/apps/client/src/app/app.module.ts +++ /dev/null @@ -1,83 +0,0 @@ -import { Platform } from '@angular/cdk/platform'; -import { - provideHttpClient, - withInterceptorsFromDi -} from '@angular/common/http'; -import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; -import { MatAutocompleteModule } from '@angular/material/autocomplete'; -import { MatChipsModule } from '@angular/material/chips'; -import { - DateAdapter, - MAT_DATE_FORMATS, - MAT_DATE_LOCALE, - MatNativeDateModule -} from '@angular/material/core'; -import { MatSnackBarModule } from '@angular/material/snack-bar'; -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 { provideIonicAngular } from '@ionic/angular/standalone'; -import { provideMarkdown } from 'ngx-markdown'; -import { provideNgxSkeletonLoader } from 'ngx-skeleton-loader'; -import { NgxStripeModule, STRIPE_PUBLISHABLE_KEY } from 'ngx-stripe'; - -import { environment } from '../environments/environment'; -import { CustomDateAdapter } from './adapter/custom-date-adapter'; -import { DateFormats } from './adapter/date-formats'; -import { AppRoutingModule } from './app-routing.module'; -import { AppComponent } from './app.component'; -import { GfFooterComponent } from './components/footer/footer.component'; -import { GfHeaderComponent } from './components/header/header.component'; -import { authInterceptorProviders } from './core/auth.interceptor'; -import { httpResponseInterceptorProviders } from './core/http-response.interceptor'; -import { LanguageService } from './core/language.service'; -import { GfNotificationModule } from './core/notification/notification.module'; - -export function NgxStripeFactory(): string { - return environment.stripePublicKey; -} - -@NgModule({ - bootstrap: [AppComponent], - declarations: [AppComponent], - imports: [ - AppRoutingModule, - BrowserAnimationsModule, - BrowserModule, - GfFooterComponent, - GfHeaderComponent, - GfNotificationModule, - MatAutocompleteModule, - MatChipsModule, - MatNativeDateModule, - MatSnackBarModule, - MatTooltipModule, - NgxStripeModule.forRoot(environment.stripePublicKey), - ServiceWorkerModule.register('ngsw-worker.js', { - enabled: environment.production, - registrationStrategy: 'registerImmediately' - }) - ], - providers: [ - authInterceptorProviders, - httpResponseInterceptorProviders, - LanguageService, - provideHttpClient(withInterceptorsFromDi()), - provideIonicAngular(), - provideMarkdown(), - provideNgxSkeletonLoader(), - { - provide: DateAdapter, - useClass: CustomDateAdapter, - deps: [LanguageService, MAT_DATE_LOCALE, Platform] - }, - { provide: MAT_DATE_FORMATS, useValue: DateFormats }, - { - provide: STRIPE_PUBLISHABLE_KEY, - useFactory: NgxStripeFactory - } - ], - schemas: [CUSTOM_ELEMENTS_SCHEMA] -}) -export class AppModule {} diff --git a/apps/client/src/app/app-routing.module.ts b/apps/client/src/app/app.routes.ts similarity index 81% rename from apps/client/src/app/app-routing.module.ts rename to apps/client/src/app/app.routes.ts index fb045a174..9588cee68 100644 --- a/apps/client/src/app/app-routing.module.ts +++ b/apps/client/src/app/app.routes.ts @@ -1,13 +1,10 @@ -import { publicRoutes, internalRoutes } from '@ghostfolio/common/routes/routes'; +import { internalRoutes, publicRoutes } from '@ghostfolio/common/routes/routes'; -import { NgModule } from '@angular/core'; -import { RouterModule, Routes, TitleStrategy } from '@angular/router'; +import { Routes } from '@angular/router'; import { AuthGuard } from './core/auth.guard'; -import { ModulePreloadService } from './core/module-preload.service'; -import { PageTitleStrategy } from './services/page-title.strategy'; -const routes: Routes = [ +export const routes: Routes = [ { path: publicRoutes.about.path, loadChildren: () => @@ -147,24 +144,3 @@ const routes: Routes = [ pathMatch: 'full' } ]; - -@NgModule({ - imports: [ - RouterModule.forRoot( - routes, - // Preload all lazy loaded modules with the attribute preload === true - { - anchorScrolling: 'enabled', - // enableTracing: true, // <-- debugging purposes only - preloadingStrategy: ModulePreloadService, - scrollPositionRestoration: 'top' - } - ) - ], - providers: [ - ModulePreloadService, - { provide: TitleStrategy, useClass: PageTitleStrategy } - ], - exports: [RouterModule] -}) -export class AppRoutingModule {} diff --git a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html index b2c063684..3d855e6e0 100644 --- a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html +++ b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -352,7 +352,6 @@
Benchmark + Include in +   + Benchmark + / + Markets +
diff --git a/apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.component.ts b/apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.component.ts index 18dc48c39..44a0b374b 100644 --- a/apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.component.ts +++ b/apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.component.ts @@ -53,7 +53,7 @@ import { CreateAssetProfileDialogMode } from './interfaces/interfaces'; styleUrls: ['./create-asset-profile-dialog.component.scss'], templateUrl: 'create-asset-profile-dialog.html' }) -export class GfCreateAssetProfileDialogComponent implements OnInit, OnDestroy { +export class GfCreateAssetProfileDialogComponent implements OnDestroy, OnInit { public createAssetProfileForm: FormGroup; public ghostfolioPrefix = `${ghostfolioPrefix}_`; public mode: CreateAssetProfileDialogMode; diff --git a/apps/client/src/app/components/admin-platform/admin-platform.component.html b/apps/client/src/app/components/admin-platform/admin-platform.component.html index 9e38d5de7..e71dcf17b 100644 --- a/apps/client/src/app/components/admin-platform/admin-platform.component.html +++ b/apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -45,7 +45,7 @@ diff --git a/apps/client/src/app/components/admin-platform/admin-platform.component.ts b/apps/client/src/app/components/admin-platform/admin-platform.component.ts index 6c95cee0b..6642d2315 100644 --- a/apps/client/src/app/components/admin-platform/admin-platform.component.ts +++ b/apps/client/src/app/components/admin-platform/admin-platform.component.ts @@ -51,7 +51,7 @@ import { CreateOrUpdatePlatformDialogParams } from './create-or-update-platform- styleUrls: ['./admin-platform.component.scss'], templateUrl: './admin-platform.component.html' }) -export class GfAdminPlatformComponent implements OnInit, OnDestroy { +export class GfAdminPlatformComponent implements OnDestroy, OnInit { @ViewChild(MatSort) sort: MatSort; public dataSource = new MatTableDataSource(); diff --git a/apps/client/src/app/components/admin-tag/admin-tag.component.html b/apps/client/src/app/components/admin-tag/admin-tag.component.html index 5979d2778..8b1b510d7 100644 --- a/apps/client/src/app/components/admin-tag/admin-tag.component.html +++ b/apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -38,7 +38,7 @@ diff --git a/apps/client/src/app/components/admin-tag/admin-tag.component.ts b/apps/client/src/app/components/admin-tag/admin-tag.component.ts index 5552fa01b..88e8faa9d 100644 --- a/apps/client/src/app/components/admin-tag/admin-tag.component.ts +++ b/apps/client/src/app/components/admin-tag/admin-tag.component.ts @@ -48,7 +48,7 @@ import { CreateOrUpdateTagDialogParams } from './create-or-update-tag-dialog/int styleUrls: ['./admin-tag.component.scss'], templateUrl: './admin-tag.component.html' }) -export class GfAdminTagComponent implements OnInit, OnDestroy { +export class GfAdminTagComponent implements OnDestroy, OnInit { @ViewChild(MatSort) sort: MatSort; public dataSource = new MatTableDataSource(); diff --git a/apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.component.ts b/apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.component.ts index 7bd7d2ae1..60d74be92 100644 --- a/apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.component.ts +++ b/apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.component.ts @@ -36,7 +36,7 @@ import { Subject } from 'rxjs'; styleUrls: ['./create-watchlist-item-dialog.component.scss'], templateUrl: 'create-watchlist-item-dialog.html' }) -export class GfCreateWatchlistItemDialogComponent implements OnInit, OnDestroy { +export class GfCreateWatchlistItemDialogComponent implements OnDestroy, OnInit { public createWatchlistItemForm: FormGroup; private unsubscribeSubject = new Subject(); diff --git a/apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html b/apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html index bc468fe96..f44759124 100644 --- a/apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html +++ b/apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html @@ -184,7 +184,9 @@
  • Open the Admin Control panel
  • Navigate to the Market Data section
  • Choose an asset profile
  • -
  • In the dialog, check the Benchmark box
  • +
  • + In the dialog, check the Include in Benchmark / Markets box +
  • @@ -212,12 +214,13 @@ How do I set up Markets? -

    The Markets list is derived from your Benchmarks.

    1. Open the Admin Control panel
    2. Navigate to the Market Data section
    3. Choose an asset profile
    4. -
    5. In the dialog, check the Benchmark box
    6. +
    7. + In the dialog, check the Include in Benchmark / Markets box +

    Please note: Data is cached, meaning changes may take a few minutes diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf index 361c4ec31..7513eedaf 100644 --- a/apps/client/src/locales/messages.ca.xlf +++ b/apps/client/src/locales/messages.ca.xlf @@ -687,7 +687,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 563 + 567 @@ -1071,7 +1071,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 511 + 515 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -1091,7 +1091,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 522 + 526 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -1103,7 +1103,7 @@ Mapatge de Símbols apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 375 + 379 @@ -1119,7 +1119,7 @@ Configuració del Proveïdor de Dades apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 400 + 404 @@ -1127,7 +1127,7 @@ Prova apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 500 + 504 @@ -1135,11 +1135,11 @@ Url apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 482 + 486 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 534 + 538 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -1155,7 +1155,7 @@ Notes apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 547 + 551 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -1303,7 +1303,7 @@ Recollida de Dades apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 593 + 597 apps/client/src/app/components/admin-overview/admin-overview.html @@ -1563,7 +1563,7 @@ Punt de Referència apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 369 + 371 apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts @@ -2498,6 +2498,14 @@ 280 + + Include in + Include in + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 369 + + Oops! There was an error setting up biometric authentication. Ups! Hi ha hagut un error en configurar l’autenticació biomètrica. @@ -2551,7 +2559,7 @@ Localització apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 437 + 441 apps/client/src/app/components/user-account-settings/user-account-settings.html @@ -3390,6 +3398,10 @@ Markets Mercats + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 373 + apps/client/src/app/components/footer/footer.component.html 11 @@ -6589,7 +6601,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 598 + 602 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -6641,7 +6653,7 @@ Close apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 600 + 604 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -7183,7 +7195,7 @@ Save apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 609 + 613 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -7307,7 +7319,7 @@ Default Market Price apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 409 + 413 @@ -7315,7 +7327,7 @@ Mode apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 450 + 454 @@ -7323,7 +7335,7 @@ Selector apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 466 + 470 @@ -7331,7 +7343,7 @@ HTTP Request Headers apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 422 + 426 diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index 9a0ebd159..a3583df02 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -394,7 +394,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 563 + 567 @@ -962,7 +962,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 511 + 515 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -982,7 +982,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 522 + 526 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -1262,7 +1262,7 @@ Lokalität apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 437 + 441 apps/client/src/app/components/user-account-settings/user-account-settings.html @@ -1664,6 +1664,10 @@ Markets Märkte + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 373 + apps/client/src/app/components/footer/footer.component.html 11 @@ -1966,7 +1970,7 @@ Kommentar apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 547 + 551 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -2606,7 +2610,7 @@ Benchmark apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 369 + 371 apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts @@ -3038,7 +3042,7 @@ Symbol Zuordnung apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 375 + 379 @@ -3774,11 +3778,11 @@ Url apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 482 + 486 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 534 + 538 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -4142,7 +4146,7 @@ Scraper Konfiguration apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 400 + 404 @@ -5660,7 +5664,7 @@ Test apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 500 + 504 @@ -5944,7 +5948,7 @@ Finanzmarktdaten synchronisieren apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 593 + 597 apps/client/src/app/components/admin-overview/admin-overview.html @@ -6164,6 +6168,14 @@ 333 + + Include in + Berücksichtigen in + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 369 + + Oops! There was an error setting up biometric authentication. Ups! Beim Einrichten der biometrischen Authentifizierung ist ein Fehler aufgetreten. @@ -6613,7 +6625,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 598 + 602 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -6665,7 +6677,7 @@ Schliessen apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 600 + 604 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -7207,7 +7219,7 @@ Speichern apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 609 + 613 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -7331,7 +7343,7 @@ Standardmarktpreis apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 409 + 413 @@ -7339,7 +7351,7 @@ Modus apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 450 + 454 @@ -7347,7 +7359,7 @@ Selektor apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 466 + 470 @@ -7355,7 +7367,7 @@ HTTP Request-Headers apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 422 + 426 diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index 07e4e855d..62f437994 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -395,7 +395,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 563 + 567 @@ -947,7 +947,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 511 + 515 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -967,7 +967,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 522 + 526 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -1247,7 +1247,7 @@ Ubicación apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 437 + 441 apps/client/src/app/components/user-account-settings/user-account-settings.html @@ -1649,6 +1649,10 @@ Markets Mercados + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 373 + apps/client/src/app/components/footer/footer.component.html 11 @@ -1951,7 +1955,7 @@ Nota apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 547 + 551 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -2583,7 +2587,7 @@ Benchmark apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 369 + 371 apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts @@ -3023,7 +3027,7 @@ Mapeo de símbolos apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 375 + 379 @@ -3751,11 +3755,11 @@ ¿La URL? apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 482 + 486 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 534 + 538 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -4119,7 +4123,7 @@ Configuración del scraper apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 400 + 404 @@ -5637,7 +5641,7 @@ Prueba apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 500 + 504 @@ -5921,7 +5925,7 @@ Recopilación de datos apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 593 + 597 apps/client/src/app/components/admin-overview/admin-overview.html @@ -6141,6 +6145,14 @@ 333 + + Include in + Include in + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 369 + + Oops! There was an error setting up biometric authentication. ¡Ups! Hubo un error al configurar la autenticación biométrica. @@ -6590,7 +6602,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 598 + 602 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -6642,7 +6654,7 @@ Cerca apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 600 + 604 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -7184,7 +7196,7 @@ Ahorrar apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 609 + 613 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -7308,7 +7320,7 @@ Precio de mercado por defecto apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 409 + 413 @@ -7316,7 +7328,7 @@ Modo apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 450 + 454 @@ -7324,7 +7336,7 @@ Selector apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 466 + 470 @@ -7332,7 +7344,7 @@ Encabezados de solicitud HTTP apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 422 + 426 diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index f51609582..560859d05 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -450,7 +450,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 563 + 567 @@ -642,7 +642,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 511 + 515 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -662,7 +662,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 522 + 526 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -674,7 +674,7 @@ Équivalence de Symboles apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 375 + 379 @@ -682,7 +682,7 @@ Note apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 547 + 551 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -914,7 +914,7 @@ Référence apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 369 + 371 apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts @@ -1534,7 +1534,7 @@ Paramètres régionaux apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 437 + 441 apps/client/src/app/components/user-account-settings/user-account-settings.html @@ -1928,6 +1928,10 @@ Markets Marchés + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 373 + apps/client/src/app/components/footer/footer.component.html 11 @@ -3750,11 +3754,11 @@ Lien apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 482 + 486 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 534 + 538 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -4118,7 +4122,7 @@ Configuration du Scraper apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 400 + 404 @@ -5636,7 +5640,7 @@ Test apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 500 + 504 @@ -5920,7 +5924,7 @@ Collecter les données apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 593 + 597 apps/client/src/app/components/admin-overview/admin-overview.html @@ -6140,6 +6144,14 @@ 333 + + Include in + Include in + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 369 + + Oops! There was an error setting up biometric authentication. Oops! Une erreur s’est produite lors de la configuration de l’authentification biométrique. @@ -6589,7 +6601,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 598 + 602 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -6641,7 +6653,7 @@ Fermer apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 600 + 604 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -7183,7 +7195,7 @@ Sauvegarder apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 609 + 613 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -7307,7 +7319,7 @@ Prix du marché par défaut apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 409 + 413 @@ -7315,7 +7327,7 @@ Mode apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 450 + 454 @@ -7323,7 +7335,7 @@ Selecteur apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 466 + 470 @@ -7331,7 +7343,7 @@ En-têtes de requête HTTP apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 422 + 426 diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index 5b4058606..076c02068 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -395,7 +395,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 563 + 567 @@ -947,7 +947,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 511 + 515 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -967,7 +967,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 522 + 526 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -1247,7 +1247,7 @@ Locale apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 437 + 441 apps/client/src/app/components/user-account-settings/user-account-settings.html @@ -1649,6 +1649,10 @@ Markets Mercati + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 373 + apps/client/src/app/components/footer/footer.component.html 11 @@ -1951,7 +1955,7 @@ Nota apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 547 + 551 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -2583,7 +2587,7 @@ Benchmark apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 369 + 371 apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts @@ -3023,7 +3027,7 @@ Mappatura dei simboli apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 375 + 379 @@ -3751,11 +3755,11 @@ Url apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 482 + 486 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 534 + 538 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -4119,7 +4123,7 @@ Configurazione dello scraper apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 400 + 404 @@ -5637,7 +5641,7 @@ Prova apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 500 + 504 @@ -5921,7 +5925,7 @@ Raccolta Dati apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 593 + 597 apps/client/src/app/components/admin-overview/admin-overview.html @@ -6141,6 +6145,14 @@ 333 + + Include in + Include in + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 369 + + Oops! There was an error setting up biometric authentication. Ops! C’è stato un errore impostando l’autenticazione biometrica. @@ -6590,7 +6602,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 598 + 602 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -6642,7 +6654,7 @@ Chiudi apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 600 + 604 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -7184,7 +7196,7 @@ Salva apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 609 + 613 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -7308,7 +7320,7 @@ Prezzo di mercato predefinito apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 409 + 413 @@ -7316,7 +7328,7 @@ Modalità apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 450 + 454 @@ -7324,7 +7336,7 @@ Selettore apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 466 + 470 @@ -7332,7 +7344,7 @@ Intestazioni della richiesta HTTP apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 422 + 426 diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index 6a1f871a6..4a17736b4 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -394,7 +394,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 563 + 567 @@ -946,7 +946,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 511 + 515 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -966,7 +966,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 522 + 526 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -1246,7 +1246,7 @@ Locatie apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 437 + 441 apps/client/src/app/components/user-account-settings/user-account-settings.html @@ -1648,6 +1648,10 @@ Markets Markten + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 373 + apps/client/src/app/components/footer/footer.component.html 11 @@ -1950,7 +1954,7 @@ Opmerking apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 547 + 551 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -2582,7 +2586,7 @@ Benchmark apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 369 + 371 apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts @@ -3022,7 +3026,7 @@ Symbool toewijzen apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 375 + 379 @@ -3750,11 +3754,11 @@ Url apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 482 + 486 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 534 + 538 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -4118,7 +4122,7 @@ Scraper instellingen apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 400 + 404 @@ -5636,7 +5640,7 @@ Test apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 500 + 504 @@ -5920,7 +5924,7 @@ Data Verzamelen apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 593 + 597 apps/client/src/app/components/admin-overview/admin-overview.html @@ -6140,6 +6144,14 @@ 333 + + Include in + Include in + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 369 + + Oops! There was an error setting up biometric authentication. Oeps! Er is een fout opgetreden met het instellen van de biometrische authenticatie. @@ -6589,7 +6601,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 598 + 602 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -6641,7 +6653,7 @@ Sluiten apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 600 + 604 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -7183,7 +7195,7 @@ Opslaan apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 609 + 613 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -7307,7 +7319,7 @@ Standaard Marktprijs apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 409 + 413 @@ -7315,7 +7327,7 @@ Modus apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 450 + 454 @@ -7323,7 +7335,7 @@ Kiezer apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 466 + 470 @@ -7331,7 +7343,7 @@ HTTP Verzoek Headers apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 422 + 426 diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index a52b15599..321cfbecd 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -591,7 +591,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 563 + 567 @@ -919,7 +919,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 511 + 515 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -939,7 +939,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 522 + 526 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -951,7 +951,7 @@ Mapowanie Symboli apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 375 + 379 @@ -967,7 +967,7 @@ Konfiguracja Scrapera apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 400 + 404 @@ -975,7 +975,7 @@ Notatka apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 547 + 551 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -1191,11 +1191,11 @@ Url apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 482 + 486 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 534 + 538 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -1391,7 +1391,7 @@ Poziom Odniesienia (Benchmark) apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 369 + 371 apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts @@ -2247,7 +2247,7 @@ Ustawienia Regionalne apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 437 + 441 apps/client/src/app/components/user-account-settings/user-account-settings.html @@ -3033,6 +3033,10 @@ Markets Rynki + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 373 + apps/client/src/app/components/footer/footer.component.html 11 @@ -5636,7 +5640,7 @@ Test apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 500 + 504 @@ -5920,7 +5924,7 @@ Gromadzenie Danych apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 593 + 597 apps/client/src/app/components/admin-overview/admin-overview.html @@ -6140,6 +6144,14 @@ 333 + + Include in + Include in + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 369 + + Oops! There was an error setting up biometric authentication. Ups! Wystąpił błąd podczas konfigurowania uwierzytelniania biometrycznego. @@ -6589,7 +6601,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 598 + 602 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -6641,7 +6653,7 @@ Zamknij apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 600 + 604 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -7183,7 +7195,7 @@ Zapisz apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 609 + 613 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -7307,7 +7319,7 @@ Domyślna cena rynkowa apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 409 + 413 @@ -7315,7 +7327,7 @@ Tryb apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 450 + 454 @@ -7323,7 +7335,7 @@ Selektor apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 466 + 470 @@ -7331,7 +7343,7 @@ Nagłówki żądań HTTP apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 422 + 426 diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index 3867d6fbe..dc8804544 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -450,7 +450,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 563 + 567 @@ -786,7 +786,7 @@ Referência apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 369 + 371 apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts @@ -1166,7 +1166,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 511 + 515 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -1186,7 +1186,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 522 + 526 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -1530,7 +1530,7 @@ Localidade apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 437 + 441 apps/client/src/app/components/user-account-settings/user-account-settings.html @@ -1900,6 +1900,10 @@ Markets Mercados + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 373 + apps/client/src/app/components/footer/footer.component.html 11 @@ -2062,7 +2066,7 @@ Nota apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 547 + 551 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -3030,7 +3034,7 @@ Mapeamento de Símbolo apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 375 + 379 @@ -3750,11 +3754,11 @@ Url apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 482 + 486 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 534 + 538 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -4118,7 +4122,7 @@ Configuração do raspador apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 400 + 404 @@ -5636,7 +5640,7 @@ Teste apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 500 + 504 @@ -5920,7 +5924,7 @@ Coleta de dados apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 593 + 597 apps/client/src/app/components/admin-overview/admin-overview.html @@ -6140,6 +6144,14 @@ 333 + + Include in + Include in + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 369 + + Oops! There was an error setting up biometric authentication. Ops! Ocorreu um erro ao configurar a autenticação biométrica. @@ -6589,7 +6601,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 598 + 602 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -6641,7 +6653,7 @@ Fechar apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 600 + 604 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -7183,7 +7195,7 @@ Guardar apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 609 + 613 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -7307,7 +7319,7 @@ Preço de mercado padrão apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 409 + 413 @@ -7315,7 +7327,7 @@ Mode apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 450 + 454 @@ -7323,7 +7335,7 @@ Selector apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 466 + 470 @@ -7331,7 +7343,7 @@ HTTP Request Headers apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 422 + 426 diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index b672a6f2c..235f670a3 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -631,7 +631,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 563 + 567 @@ -851,7 +851,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 511 + 515 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -871,7 +871,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 522 + 526 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -883,7 +883,7 @@ Sembol Eşleştirme apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 375 + 379 @@ -899,7 +899,7 @@ Veri Toplayıcı Yapılandırması apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 400 + 404 @@ -907,7 +907,7 @@ Not apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 547 + 551 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -1107,11 +1107,11 @@ Url apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 482 + 486 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 534 + 538 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -1259,7 +1259,7 @@ Karşılaştırma Ölçütü apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 369 + 371 apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts @@ -2617,6 +2617,10 @@ Markets Piyasalar + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 373 + apps/client/src/app/components/footer/footer.component.html 11 @@ -4380,7 +4384,7 @@ Yerel Ayarlar apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 437 + 441 apps/client/src/app/components/user-account-settings/user-account-settings.html @@ -5636,7 +5640,7 @@ Test apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 500 + 504 @@ -5920,7 +5924,7 @@ Veri Toplama apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 593 + 597 apps/client/src/app/components/admin-overview/admin-overview.html @@ -6140,6 +6144,14 @@ 333 + + Include in + Include in + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 369 + + Oops! There was an error setting up biometric authentication. Oops! Biyometrik kimlik doğrulama ayarlanırken bir hata oluştu. @@ -6589,7 +6601,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 598 + 602 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -6641,7 +6653,7 @@ Kapat apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 600 + 604 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -7183,7 +7195,7 @@ Kaydet apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 609 + 613 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -7307,7 +7319,7 @@ Varsayılan Piyasa Fiyatı apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 409 + 413 @@ -7315,7 +7327,7 @@ Mod apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 450 + 454 @@ -7323,7 +7335,7 @@ Seçici apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 466 + 470 @@ -7331,7 +7343,7 @@ HTTP İstek Başlıkları apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 422 + 426 diff --git a/apps/client/src/locales/messages.uk.xlf b/apps/client/src/locales/messages.uk.xlf index 5677f32ca..c1f2c7bce 100644 --- a/apps/client/src/locales/messages.uk.xlf +++ b/apps/client/src/locales/messages.uk.xlf @@ -711,7 +711,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 563 + 567 @@ -1059,7 +1059,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 511 + 515 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -1079,7 +1079,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 522 + 526 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -1091,7 +1091,7 @@ Зіставлення символів apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 375 + 379 @@ -1107,7 +1107,7 @@ Конфігурація скребка apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 400 + 404 @@ -1115,7 +1115,7 @@ Тест apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 500 + 504 @@ -1123,11 +1123,11 @@ URL apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 482 + 486 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 534 + 538 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -1143,7 +1143,7 @@ Примітка apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 547 + 551 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -1299,7 +1299,7 @@ Збір даних apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 593 + 597 apps/client/src/app/components/admin-overview/admin-overview.html @@ -1683,7 +1683,7 @@ Порівняльний показник apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 369 + 371 apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts @@ -2239,7 +2239,7 @@ Зберегти apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 609 + 613 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -2798,6 +2798,14 @@ 280 + + Include in + Include in + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 369 + + Oops! There was an error setting up biometric authentication. Упс! Виникла помилка під час налаштування біометричної автентифікації. @@ -2851,7 +2859,7 @@ Локалізація apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 437 + 441 apps/client/src/app/components/user-account-settings/user-account-settings.html @@ -3682,6 +3690,10 @@ Markets Ринки + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 373 + apps/client/src/app/components/footer/footer.component.html 11 @@ -6467,7 +6479,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 598 + 602 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -6527,7 +6539,7 @@ Закрити apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 600 + 604 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -7307,7 +7319,7 @@ Default Market Price apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 409 + 413 @@ -7315,7 +7327,7 @@ Mode apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 450 + 454 @@ -7323,7 +7335,7 @@ Selector apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 466 + 470 @@ -7331,7 +7343,7 @@ HTTP Request Headers apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 422 + 426 diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index d6f615dc8..3a6ce2f09 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -566,7 +566,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 563 + 567 @@ -885,7 +885,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 511 + 515 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -904,7 +904,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 522 + 526 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -915,7 +915,7 @@ Symbol Mapping apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 375 + 379 @@ -929,14 +929,14 @@ Scraper Configuration apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 400 + 404 Note apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 547 + 551 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -1128,11 +1128,11 @@ Url apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 482 + 486 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 534 + 538 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -1308,7 +1308,7 @@ Benchmark apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 369 + 371 apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts @@ -2087,7 +2087,7 @@ Locale apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 437 + 441 apps/client/src/app/components/user-account-settings/user-account-settings.html @@ -2814,6 +2814,10 @@ Markets + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 373 + apps/client/src/app/components/footer/footer.component.html 11 @@ -5158,7 +5162,7 @@ Test apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 500 + 504 @@ -5429,7 +5433,7 @@ Data Gathering apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 593 + 597 apps/client/src/app/components/admin-overview/admin-overview.html @@ -5601,6 +5605,13 @@ 333 + + Include in + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 369 + + Oops! There was an error setting up biometric authentication. @@ -5966,7 +5977,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 598 + 602 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -6045,7 +6056,7 @@ Close apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 600 + 604 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -6538,7 +6549,7 @@ Save apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 609 + 613 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -6631,7 +6642,7 @@ Mode apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 450 + 454 @@ -6645,14 +6656,14 @@ Default Market Price apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 409 + 413 Selector apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 466 + 470 @@ -6673,7 +6684,7 @@ HTTP Request Headers apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 422 + 426 diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf index 524e28259..1595ea726 100644 --- a/apps/client/src/locales/messages.zh.xlf +++ b/apps/client/src/locales/messages.zh.xlf @@ -600,7 +600,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 563 + 567 @@ -928,7 +928,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 511 + 515 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -948,7 +948,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 522 + 526 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -960,7 +960,7 @@ 代码映射 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 375 + 379 @@ -976,7 +976,7 @@ 刮削配置 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 400 + 404 @@ -984,7 +984,7 @@ 笔记 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 547 + 551 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -1200,11 +1200,11 @@ 网址 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 482 + 486 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 534 + 538 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -1400,7 +1400,7 @@ 基准 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 369 + 371 apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts @@ -2256,7 +2256,7 @@ 语言环境 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 437 + 441 apps/client/src/app/components/user-account-settings/user-account-settings.html @@ -3042,6 +3042,10 @@ Markets 市场 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 373 + apps/client/src/app/components/footer/footer.component.html 11 @@ -5645,7 +5649,7 @@ 测试 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 500 + 504 @@ -5946,7 +5950,7 @@ 数据收集 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 593 + 597 apps/client/src/app/components/admin-overview/admin-overview.html @@ -6141,6 +6145,14 @@ 333 + + Include in + Include in + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 369 + + Oops! There was an error setting up biometric authentication. 哎呀!设置生物识别认证时发生错误。 @@ -6590,7 +6602,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 598 + 602 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -6642,7 +6654,7 @@ 关闭 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 600 + 604 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -7184,7 +7196,7 @@ 保存 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 609 + 613 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -7308,7 +7320,7 @@ 默认市场价格 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 409 + 413 @@ -7316,7 +7328,7 @@ 模式 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 450 + 454 @@ -7324,7 +7336,7 @@ 选择器 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 466 + 470 @@ -7332,7 +7344,7 @@ HTTP 请求标头 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 422 + 426 diff --git a/apps/client/src/main.ts b/apps/client/src/main.ts index 96d6c0582..fc8a9ef7a 100644 --- a/apps/client/src/main.ts +++ b/apps/client/src/main.ts @@ -2,11 +2,39 @@ import { locale } from '@ghostfolio/common/config'; import { InfoResponse } from '@ghostfolio/common/interfaces'; import { filterGlobalPermissions } from '@ghostfolio/common/permissions'; -import { enableProdMode } from '@angular/core'; -import { LOCALE_ID } from '@angular/core'; -import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; +import { Platform } from '@angular/cdk/platform'; +import { + provideHttpClient, + withInterceptorsFromDi +} from '@angular/common/http'; +import { enableProdMode, importProvidersFrom, LOCALE_ID } from '@angular/core'; +import { + DateAdapter, + MAT_DATE_FORMATS, + MAT_DATE_LOCALE, + MatNativeDateModule +} from '@angular/material/core'; +import { MatSnackBarModule } from '@angular/material/snack-bar'; +import { MatTooltipModule } from '@angular/material/tooltip'; +import { bootstrapApplication } from '@angular/platform-browser'; +import { provideAnimations } from '@angular/platform-browser/animations'; +import { RouterModule, TitleStrategy } from '@angular/router'; +import { ServiceWorkerModule } from '@angular/service-worker'; +import { provideIonicAngular } from '@ionic/angular/standalone'; +import { provideMarkdown } from 'ngx-markdown'; +import { provideNgxSkeletonLoader } from 'ngx-skeleton-loader'; +import { NgxStripeModule, STRIPE_PUBLISHABLE_KEY } from 'ngx-stripe'; -import { AppModule } from './app/app.module'; +import { CustomDateAdapter } from './app/adapter/custom-date-adapter'; +import { DateFormats } from './app/adapter/date-formats'; +import { GfAppComponent } from './app/app.component'; +import { routes } from './app/app.routes'; +import { authInterceptorProviders } from './app/core/auth.interceptor'; +import { httpResponseInterceptorProviders } from './app/core/http-response.interceptor'; +import { LanguageService } from './app/core/language.service'; +import { ModulePreloadService } from './app/core/module-preload.service'; +import { GfNotificationModule } from './app/core/notification/notification.module'; +import { PageTitleStrategy } from './app/services/page-title.strategy'; import { environment } from './environments/environment'; (async () => { @@ -29,9 +57,54 @@ import { environment } from './environments/environment'; enableProdMode(); } - platformBrowserDynamic() - .bootstrapModule(AppModule, { - providers: [{ provide: LOCALE_ID, useValue: locale }] - }) - .catch((error) => console.error(error)); + await bootstrapApplication(GfAppComponent, { + providers: [ + authInterceptorProviders, + httpResponseInterceptorProviders, + importProvidersFrom( + GfNotificationModule, + MatNativeDateModule, + MatSnackBarModule, + MatTooltipModule, + NgxStripeModule.forRoot(environment.stripePublicKey), + RouterModule.forRoot(routes, { + anchorScrolling: 'enabled', + preloadingStrategy: ModulePreloadService, + scrollPositionRestoration: 'top' + }), + ServiceWorkerModule.register('ngsw-worker.js', { + enabled: environment.production, + registrationStrategy: 'registerImmediately' + }) + ), + LanguageService, + ModulePreloadService, + provideAnimations(), + provideHttpClient(withInterceptorsFromDi()), + provideIonicAngular(), + provideMarkdown(), + provideNgxSkeletonLoader(), + { + deps: [LanguageService, MAT_DATE_LOCALE, Platform], + provide: DateAdapter, + useClass: CustomDateAdapter + }, + { + provide: LOCALE_ID, + useValue: locale + }, + { + provide: MAT_DATE_FORMATS, + useValue: DateFormats + }, + { + provide: STRIPE_PUBLISHABLE_KEY, + useFactory: () => environment.stripePublicKey + }, + { + provide: TitleStrategy, + useClass: PageTitleStrategy + } + ] + }); })(); diff --git a/libs/common/src/lib/interfaces/admin-user.interface.ts b/libs/common/src/lib/interfaces/admin-user.interface.ts new file mode 100644 index 000000000..872abca90 --- /dev/null +++ b/libs/common/src/lib/interfaces/admin-user.interface.ts @@ -0,0 +1,13 @@ +import { Role } from '@prisma/client'; + +export interface AdminUser { + accountCount: number; + activityCount: number; + country: string; + createdAt: Date; + dailyApiRequests: number; + engagement: number; + id: string; + lastActivity: Date; + role: Role; +} diff --git a/libs/common/src/lib/interfaces/index.ts b/libs/common/src/lib/interfaces/index.ts index 06ecf32e8..899813f30 100644 --- a/libs/common/src/lib/interfaces/index.ts +++ b/libs/common/src/lib/interfaces/index.ts @@ -7,6 +7,7 @@ import type { AdminMarketData, AdminMarketDataItem } from './admin-market-data.interface'; +import type { AdminUser } from './admin-user.interface'; import type { AssetClassSelectorOption } from './asset-class-selector-option.interface'; import type { AssetProfileIdentifier } from './asset-profile-identifier.interface'; import type { BenchmarkProperty } from './benchmark-property.interface'; @@ -38,6 +39,7 @@ import type { AccountBalancesResponse } from './responses/account-balances-respo import type { AccountsResponse } from './responses/accounts-response.interface'; import type { ActivitiesResponse } from './responses/activities-response.interface'; import type { ActivityResponse } from './responses/activity-response.interface'; +import type { AdminUserResponse } from './responses/admin-user-response.interface'; import type { AdminUsersResponse } from './responses/admin-users-response.interface'; import type { AiPromptResponse } from './responses/ai-prompt-response.interface'; import type { ApiKeyResponse } from './responses/api-key-response.interface'; @@ -92,6 +94,8 @@ export { AdminMarketData, AdminMarketDataDetails, AdminMarketDataItem, + AdminUser, + AdminUserResponse, AdminUsersResponse, AiPromptResponse, ApiKeyResponse, diff --git a/libs/common/src/lib/interfaces/responses/admin-user-response.interface.ts b/libs/common/src/lib/interfaces/responses/admin-user-response.interface.ts new file mode 100644 index 000000000..8e93fc097 --- /dev/null +++ b/libs/common/src/lib/interfaces/responses/admin-user-response.interface.ts @@ -0,0 +1,3 @@ +import { AdminUser } from '../admin-user.interface'; + +export interface AdminUserResponse extends AdminUser {} diff --git a/libs/common/src/lib/interfaces/responses/admin-users-response.interface.ts b/libs/common/src/lib/interfaces/responses/admin-users-response.interface.ts index d9f58ee18..8dd058030 100644 --- a/libs/common/src/lib/interfaces/responses/admin-users-response.interface.ts +++ b/libs/common/src/lib/interfaces/responses/admin-users-response.interface.ts @@ -1,16 +1,6 @@ -import { Role } from '@prisma/client'; +import { AdminUser } from '../admin-user.interface'; export interface AdminUsersResponse { count: number; - users: { - accountCount: number; - activityCount: number; - country: string; - createdAt: Date; - dailyApiRequests: number; - engagement: number; - id: string; - lastActivity: Date; - role: Role; - }[]; + users: AdminUser[]; } diff --git a/package-lock.json b/package-lock.json index fe8f0ac10..c33710231 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ghostfolio", - "version": "2.214.0", + "version": "2.215.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ghostfolio", - "version": "2.214.0", + "version": "2.215.0", "hasInstallScript": true, "license": "AGPL-3.0", "dependencies": { @@ -24,7 +24,7 @@ "@codewithdan/observable-store": "2.2.15", "@date-fns/utc": "2.1.0", "@internationalized/number": "3.6.3", - "@ionic/angular": "8.7.3", + "@ionic/angular": "8.7.8", "@keyv/redis": "4.4.0", "@nestjs/bull": "11.0.4", "@nestjs/cache-manager": "3.0.1", @@ -47,7 +47,7 @@ "big.js": "7.0.1", "bootstrap": "4.6.2", "bull": "4.16.5", - "chart.js": "4.5.0", + "chart.js": "4.5.1", "chartjs-adapter-date-fns": "3.0.0", "chartjs-chart-treemap": "3.1.0", "chartjs-plugin-annotation": "3.1.0", @@ -6015,12 +6015,12 @@ } }, "node_modules/@ionic/angular": { - "version": "8.7.3", - "resolved": "https://registry.npmjs.org/@ionic/angular/-/angular-8.7.3.tgz", - "integrity": "sha512-Fd2bsluwsi88d8AEvSVANn3a7xZ7NEmlvgVTLnuF9VTI0TgdkLQptgEolty00axnQdjCaxSXxgFJd/m0gVpKIg==", + "version": "8.7.8", + "resolved": "https://registry.npmjs.org/@ionic/angular/-/angular-8.7.8.tgz", + "integrity": "sha512-IBN5h3nIOwbuglLit48S7wNeg7NHtl/vaKAHDggICyzI92cSg5yYL07Fz59pszhkBlZQUB5SQnml990Zj2bZUg==", "license": "MIT", "dependencies": { - "@ionic/core": "8.7.3", + "@ionic/core": "8.7.8", "ionicons": "^8.0.13", "jsonc-parser": "^3.0.0", "tslib": "^2.3.0" @@ -6034,12 +6034,12 @@ } }, "node_modules/@ionic/core": { - "version": "8.7.3", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.3.tgz", - "integrity": "sha512-KdyMxpMDQj+uqpztpK6yvN/T96hqcDiGXQ4T+aAZ+LW3wV3+0it6/rbh9C1B/wCl4Isnm4IRltPabgEfNJ50nw==", + "version": "8.7.8", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.7.8.tgz", + "integrity": "sha512-GLWb/lz3kocpzTZTeQQ5xxoWz4CKHD6zpnbwJknTKsncebohAaw2KTe7uOw5toKQEDdohTseFuSGoDDBoRQ1Ug==", "license": "MIT", "dependencies": { - "@stencil/core": "4.36.2", + "@stencil/core": "4.38.0", "ionicons": "^8.0.13", "tslib": "^2.1.0" } @@ -12995,9 +12995,9 @@ "license": "MIT" }, "node_modules/@stencil/core": { - "version": "4.36.2", - "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.36.2.tgz", - "integrity": "sha512-PRFSpxNzX9Oi0Wfh02asztN9Sgev/MacfZwmd+VVyE6ZxW+a/kEpAYZhzGAmE+/aKVOGYuug7R9SulanYGxiDQ==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.38.0.tgz", + "integrity": "sha512-oC3QFKO0X1yXVvETgc8OLY525MNKhn9vISBrbtKnGoPlokJ6rI8Vk1RK22TevnNrHLI4SExNLbcDnqilKR35JQ==", "license": "MIT", "bin": { "stencil": "bin/stencil" @@ -17502,9 +17502,9 @@ "license": "MIT" }, "node_modules/chart.js": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.5.0.tgz", - "integrity": "sha512-aYeC/jDgSEx8SHWZvANYMioYMZ2KX02W6f6uVfyteuCGcadDLcYVHdfdygsTQkQ4TKn5lghoojAsPj5pu0SnvQ==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.5.1.tgz", + "integrity": "sha512-GIjfiT9dbmHRiYi6Nl2yFCq7kkwdkp1W/lp2J99rX0yo9tgJGn3lKQATztIjb5tVtevcBtIdICNWqlq5+E8/Pw==", "license": "MIT", "dependencies": { "@kurkle/color": "^0.3.0" @@ -24942,29 +24942,6 @@ "@stencil/core": "^4.35.3" } }, - "node_modules/ionicons/node_modules/@stencil/core": { - "version": "4.36.3", - "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.36.3.tgz", - "integrity": "sha512-C9DOaAjm+hSYRuVoUuYWG/lrYT8+4DG0AL0m1Ea9+G5v2Y6ApVpNJLbXvFlRZIdDMGecH86s6v0Gp39uockLxg==", - "license": "MIT", - "bin": { - "stencil": "bin/stencil" - }, - "engines": { - "node": ">=16.0.0", - "npm": ">=7.10.0" - }, - "optionalDependencies": { - "@rollup/rollup-darwin-arm64": "4.34.9", - "@rollup/rollup-darwin-x64": "4.34.9", - "@rollup/rollup-linux-arm64-gnu": "4.34.9", - "@rollup/rollup-linux-arm64-musl": "4.34.9", - "@rollup/rollup-linux-x64-gnu": "4.34.9", - "@rollup/rollup-linux-x64-musl": "4.34.9", - "@rollup/rollup-win32-arm64-msvc": "4.34.9", - "@rollup/rollup-win32-x64-msvc": "4.34.9" - } - }, "node_modules/ioredis": { "version": "5.8.2", "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.8.2.tgz", diff --git a/package.json b/package.json index 61d64ec23..ff7f05ea0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ghostfolio", - "version": "2.214.0", + "version": "2.215.0", "homepage": "https://ghostfol.io", "license": "AGPL-3.0", "repository": "https://github.com/ghostfolio/ghostfolio", @@ -70,7 +70,7 @@ "@codewithdan/observable-store": "2.2.15", "@date-fns/utc": "2.1.0", "@internationalized/number": "3.6.3", - "@ionic/angular": "8.7.3", + "@ionic/angular": "8.7.8", "@keyv/redis": "4.4.0", "@nestjs/bull": "11.0.4", "@nestjs/cache-manager": "3.0.1", @@ -93,7 +93,7 @@ "big.js": "7.0.1", "bootstrap": "4.6.2", "bull": "4.16.5", - "chart.js": "4.5.0", + "chart.js": "4.5.1", "chartjs-adapter-date-fns": "3.0.0", "chartjs-chart-treemap": "3.1.0", "chartjs-plugin-annotation": "3.1.0",