diff --git a/apps/api/src/app/admin/admin.controller.ts b/apps/api/src/app/admin/admin.controller.ts index e7209fa01..7f3f17791 100644 --- a/apps/api/src/app/admin/admin.controller.ts +++ b/apps/api/src/app/admin/admin.controller.ts @@ -9,6 +9,7 @@ import { AdminData, AdminMarketData, AdminMarketDataDetails, + EnhancedSymbolProfile, Filter } from '@ghostfolio/common/interfaces'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; @@ -21,6 +22,7 @@ import { HttpException, Inject, Param, + Patch, Post, Put, Query, @@ -33,6 +35,7 @@ import { isDate } from 'date-fns'; import { StatusCodes, getReasonPhrase } from 'http-status-codes'; import { AdminService } from './admin.service'; +import { UpdateAssetProfileDto } from './update-asset-profile.dto'; import { UpdateMarketDataDto } from './update-market-data.dto'; @Controller('admin') @@ -332,6 +335,32 @@ export class AdminController { return this.adminService.deleteProfileData({ dataSource, symbol }); } + @Patch('profile-data/:dataSource/:symbol') + @UseGuards(AuthGuard('jwt')) + public async patchAssetProfileData( + @Body() assetProfileData: UpdateAssetProfileDto, + @Param('dataSource') dataSource: DataSource, + @Param('symbol') symbol: string + ): Promise { + if ( + !hasPermission( + this.request.user.permissions, + permissions.accessAdminControl + ) + ) { + throw new HttpException( + getReasonPhrase(StatusCodes.FORBIDDEN), + StatusCodes.FORBIDDEN + ); + } + + return this.adminService.patchAssetProfileData({ + ...assetProfileData, + dataSource, + symbol + }); + } + @Put('settings/:key') @UseGuards(AuthGuard('jwt')) public async updateProperty( diff --git a/apps/api/src/app/admin/admin.service.ts b/apps/api/src/app/admin/admin.service.ts index dbf50c767..d7235e9e6 100644 --- a/apps/api/src/app/admin/admin.service.ts +++ b/apps/api/src/app/admin/admin.service.ts @@ -189,6 +189,27 @@ export class AdminService { }; } + public async patchAssetProfileData({ + dataSource, + symbol, + symbolMapping + }: Prisma.SymbolProfileUpdateInput & UniqueAsset) { + await this.symbolProfileService.updateSymbolProfile({ + dataSource, + symbol, + symbolMapping + }); + + const [symbolProfile] = await this.symbolProfileService.getSymbolProfiles([ + { + dataSource, + symbol + } + ]); + + return symbolProfile; + } + public async putSetting(key: string, value: string) { let response: Property; diff --git a/apps/api/src/app/admin/update-asset-profile.dto.ts b/apps/api/src/app/admin/update-asset-profile.dto.ts new file mode 100644 index 000000000..f21785f5b --- /dev/null +++ b/apps/api/src/app/admin/update-asset-profile.dto.ts @@ -0,0 +1,9 @@ +import { IsObject, IsOptional } from 'class-validator'; + +export class UpdateAssetProfileDto { + @IsObject() + @IsOptional() + symbolMapping?: { + [dataProvider: string]: string; + }; +} diff --git a/apps/api/src/services/symbol-profile.service.ts b/apps/api/src/services/symbol-profile.service.ts index ebd388825..edf6528ba 100644 --- a/apps/api/src/services/symbol-profile.service.ts +++ b/apps/api/src/services/symbol-profile.service.ts @@ -8,25 +8,14 @@ import { import { Country } from '@ghostfolio/common/interfaces/country.interface'; import { Sector } from '@ghostfolio/common/interfaces/sector.interface'; import { Injectable } from '@nestjs/common'; -import { - DataSource, - Prisma, - SymbolProfile, - SymbolProfileOverrides -} from '@prisma/client'; +import { Prisma, SymbolProfile, SymbolProfileOverrides } from '@prisma/client'; import { continents, countries } from 'countries-list'; @Injectable() export class SymbolProfileService { public constructor(private readonly prismaService: PrismaService) {} - public async delete({ - dataSource, - symbol - }: { - dataSource: DataSource; - symbol: string; - }) { + public async delete({ dataSource, symbol }: UniqueAsset) { return this.prismaService.symbolProfile.delete({ where: { dataSource_symbol: { dataSource, symbol } } }); @@ -114,6 +103,17 @@ export class SymbolProfileService { .then((symbolProfiles) => this.getSymbols(symbolProfiles)); } + public updateSymbolProfile({ + dataSource, + symbol, + symbolMapping + }: Prisma.SymbolProfileUpdateInput & UniqueAsset) { + return this.prismaService.symbolProfile.update({ + data: { symbolMapping }, + where: { dataSource_symbol: { dataSource, symbol } } + }); + } + private getSymbols( symbolProfiles: (SymbolProfile & { _count: { Order: number }; diff --git a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts index 7b55e85ba..622f5d3c7 100644 --- a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts +++ b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts @@ -6,7 +6,9 @@ import { OnDestroy, OnInit } from '@angular/core'; +import { FormBuilder } from '@angular/forms'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { UpdateAssetProfileDto } from '@ghostfolio/api/app/admin/update-asset-profile.dto'; import { AdminService } from '@ghostfolio/client/services/admin.service'; import { EnhancedSymbolProfile, @@ -27,6 +29,9 @@ import { AssetProfileDialogParams } from './interfaces/interfaces'; }) export class AssetProfileDialog implements OnDestroy, OnInit { public assetProfile: EnhancedSymbolProfile; + public assetProfileForm = this.formBuilder.group({ + symbolMapping: '' + }); public countries: { [code: string]: { name: string; value: number }; }; @@ -40,32 +45,21 @@ export class AssetProfileDialog implements OnDestroy, OnInit { public constructor( private adminService: AdminService, private changeDetectorRef: ChangeDetectorRef, + @Inject(MAT_DIALOG_DATA) public data: AssetProfileDialogParams, public dialogRef: MatDialogRef, - @Inject(MAT_DIALOG_DATA) public data: AssetProfileDialogParams + private formBuilder: FormBuilder ) {} public ngOnInit(): void { this.initialize(); } - public onClose(): void { - this.dialogRef.close(); - } - - public onMarketDataChanged(withRefresh: boolean = false) { - if (withRefresh) { - this.initialize(); - } - } - - public ngOnDestroy() { - this.unsubscribeSubject.next(); - this.unsubscribeSubject.complete(); - } - - private fetchAdminMarketDataBySymbol({ dataSource, symbol }: UniqueAsset) { + public initialize() { this.adminService - .fetchAdminMarketDataBySymbol({ dataSource, symbol }) + .fetchAdminMarketDataBySymbol({ + dataSource: this.data.dataSource, + symbol: this.data.symbol + }) .pipe(takeUntil(this.unsubscribeSubject)) .subscribe(({ assetProfile, marketData }) => { this.assetProfile = assetProfile; @@ -91,14 +85,66 @@ export class AssetProfileDialog implements OnDestroy, OnInit { } } + this.assetProfileForm.setValue({ + symbolMapping: JSON.stringify(this.assetProfile?.symbolMapping) + }); + + this.assetProfileForm.markAsPristine(); + this.changeDetectorRef.markForCheck(); }); } - private initialize() { - this.fetchAdminMarketDataBySymbol({ - dataSource: this.data.dataSource, - symbol: this.data.symbol - }); + public onClose(): void { + this.dialogRef.close(); + } + + public onGatherProfileDataBySymbol({ dataSource, symbol }: UniqueAsset) { + this.adminService + .gatherProfileDataBySymbol({ dataSource, symbol }) + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe(() => {}); + } + + public onGatherSymbol({ dataSource, symbol }: UniqueAsset) { + this.adminService + .gatherSymbol({ dataSource, symbol }) + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe(() => {}); + } + + public onMarketDataChanged(withRefresh: boolean = false) { + if (withRefresh) { + this.initialize(); + } + } + + public onSubmit() { + let symbolMapping = {}; + + try { + symbolMapping = JSON.parse( + this.assetProfileForm.controls['symbolMapping'].value + ); + } catch {} + + const assetProfileData: UpdateAssetProfileDto = { + symbolMapping + }; + + this.adminService + .patchAssetProfile({ + ...assetProfileData, + dataSource: this.data.dataSource, + symbol: this.data.symbol + }) + .subscribe(() => { + this.initialize(); + }); + } + + public ngOnDestroy() { + this.unsubscribeSubject.next(); + this.unsubscribeSubject.complete(); } } 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 4d3b2dad1..63c49d76a 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 @@ -1,112 +1,164 @@ - - -
- -
-
- First Buy Date -
-
- Transactions -
-
- Asset Class +
+

+ {{ assetProfile?.name ?? data.symbol }} +

+ + + +
-
- Asset Sub ClassGather Data + +
- + Gather Profile Data + + +
+ +
+ +
+
+ First Buy Date +
+
+ Transactions +
+
+ Asset Class +
+
+ Asset Sub Class +
-
- Sector -
-
- Country -
+ +
+ Sector +
+
+ Country +
+
+ +
+
Sectors
+ +
+
+
Countries
+ +
+
- -
-
Sectors
- -
-
-
Countries
- -
-
- +
+
+ + Symbol Mapping + + +
-
- +
+ + +
+ diff --git a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/assset-profile-dialog.module.ts b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/assset-profile-dialog.module.ts index 46fb8f162..8672342b0 100644 --- a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/assset-profile-dialog.module.ts +++ b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/assset-profile-dialog.module.ts @@ -1,10 +1,12 @@ +import { TextFieldModule } from '@angular/cdk/text-field'; import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { MatButtonModule } from '@angular/material/button'; import { MatDialogModule } from '@angular/material/dialog'; +import { MatInputModule } from '@angular/material/input'; +import { MatMenuModule } from '@angular/material/menu'; import { GfAdminMarketDataDetailModule } from '@ghostfolio/client/components/admin-market-data-detail/admin-market-data-detail.module'; -import { GfDialogFooterModule } from '@ghostfolio/client/components/dialog-footer/dialog-footer.module'; -import { GfDialogHeaderModule } from '@ghostfolio/client/components/dialog-header/dialog-header.module'; import { GfPortfolioProportionChartModule } from '@ghostfolio/ui/portfolio-proportion-chart/portfolio-proportion-chart.module'; import { GfValueModule } from '@ghostfolio/ui/value'; @@ -14,13 +16,16 @@ import { AssetProfileDialog } from './asset-profile-dialog.component'; declarations: [AssetProfileDialog], imports: [ CommonModule, + FormsModule, GfAdminMarketDataDetailModule, - GfDialogFooterModule, - GfDialogHeaderModule, GfPortfolioProportionChartModule, GfValueModule, MatButtonModule, - MatDialogModule + MatDialogModule, + MatInputModule, + MatMenuModule, + ReactiveFormsModule, + TextFieldModule ], schemas: [CUSTOM_ELEMENTS_SCHEMA] }) diff --git a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.module.ts b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.module.ts index f36e8cfac..b83f72518 100644 --- a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.module.ts +++ b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.module.ts @@ -19,9 +19,9 @@ import { CreateOrUpdateActivityDialog } from './create-or-update-activity-dialog declarations: [CreateOrUpdateActivityDialog], imports: [ CommonModule, + FormsModule, GfSymbolModule, GfValueModule, - FormsModule, MatAutocompleteModule, MatButtonModule, MatChipsModule, diff --git a/apps/client/src/app/services/admin.service.ts b/apps/client/src/app/services/admin.service.ts index 610be4147..a897df97f 100644 --- a/apps/client/src/app/services/admin.service.ts +++ b/apps/client/src/app/services/admin.service.ts @@ -1,11 +1,13 @@ import { HttpClient, HttpParams } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { UpdateMarketDataDto } from '@ghostfolio/api/app/admin/update-market-data.dto'; +import { UpdateAssetProfileDto } from '@ghostfolio/api/app/admin/update-asset-profile.dto'; import { IDataProviderHistoricalResponse } from '@ghostfolio/api/services/interfaces/interfaces'; import { DATE_FORMAT } from '@ghostfolio/common/helper'; import { AdminJobs, AdminMarketDataDetails, + EnhancedSymbolProfile, UniqueAsset } from '@ghostfolio/common/interfaces'; import { DataSource, MarketData } from '@prisma/client'; @@ -124,6 +126,17 @@ export class AdminService { return this.http.get(url); } + public patchAssetProfile({ + dataSource, + symbol, + symbolMapping + }: UniqueAsset & UpdateAssetProfileDto) { + return this.http.patch( + `/api/v1/admin/profile-data/${dataSource}/${symbol}`, + { symbolMapping } + ); + } + public putMarketData({ dataSource, date, diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index cb0c9a433..b2c014534 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -360,6 +360,10 @@ apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html 45 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 154 + apps/client/src/app/pages/account/create-or-update-access-dialog/create-or-update-access-dialog.html 25 @@ -384,6 +388,10 @@ apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html 47 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 161 + apps/client/src/app/pages/account/create-or-update-access-dialog/create-or-update-access-dialog.html 32 @@ -408,10 +416,6 @@ Activity Count Anzahl Aktivitäten - - apps/client/src/app/components/admin-market-data/admin-market-data.html - 69 - apps/client/src/app/components/admin-overview/admin-overview.html 17 @@ -432,6 +436,10 @@ apps/client/src/app/components/admin-market-data/admin-market-data.html 139 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 30 + Please add a currency: @@ -516,6 +524,10 @@ apps/client/src/app/components/admin-market-data/admin-market-data.html 145 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 38 + Exchange Rates @@ -1060,6 +1072,10 @@ Sectors Sektoren + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 118 + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html 185 @@ -1072,6 +1088,10 @@ Countries Länder + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 128 + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html 197 @@ -1892,6 +1912,10 @@ apps/client/src/app/components/admin-market-data/admin-market-data.html 42 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 79 + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html 143 @@ -2260,6 +2284,10 @@ First Buy Date Datum des Erstkaufs + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 61 + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html 129 @@ -2272,6 +2300,10 @@ apps/client/src/app/components/admin-market-data/admin-market-data.html 51 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 88 + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html 152 @@ -2284,6 +2316,10 @@ Sector Sektor + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 103 + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html 167 @@ -2292,6 +2328,10 @@ Country Land + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 112 + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html 179 @@ -2336,6 +2376,10 @@ Transactions Transaktionen + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 70 + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html 138 @@ -2406,7 +2450,7 @@ Anzahl Länder apps/client/src/app/components/admin-market-data/admin-market-data.html - 87 + 96 @@ -2414,7 +2458,7 @@ Anzahl Sektoren apps/client/src/app/components/admin-market-data/admin-market-data.html - 96 + 87 @@ -2857,6 +2901,30 @@ 143 + + Activities Count + Anzahl Aktivitäten + + apps/client/src/app/components/admin-market-data/admin-market-data.html + 69 + + + + Refresh + Aktualisieren + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 22 + + + + Symbol Mapping + Symbol Zuordnung + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 142 + + diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index 4fc5225b3..2af115473 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -361,6 +361,10 @@ apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html 45 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 154 + apps/client/src/app/pages/account/create-or-update-access-dialog/create-or-update-access-dialog.html 25 @@ -385,6 +389,10 @@ apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html 47 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 161 + apps/client/src/app/pages/account/create-or-update-access-dialog/create-or-update-access-dialog.html 32 @@ -409,10 +417,6 @@ Activity Count Recuento de actividad - - apps/client/src/app/components/admin-market-data/admin-market-data.html - 69 - apps/client/src/app/components/admin-overview/admin-overview.html 17 @@ -433,6 +437,10 @@ apps/client/src/app/components/admin-market-data/admin-market-data.html 139 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 30 + Please add a currency: @@ -517,6 +525,10 @@ apps/client/src/app/components/admin-market-data/admin-market-data.html 145 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 38 + Exchange Rates @@ -1061,6 +1073,10 @@ Sectors Sectores + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 118 + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html 185 @@ -1073,6 +1089,10 @@ Countries Países + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 128 + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html 197 @@ -1893,6 +1913,10 @@ apps/client/src/app/components/admin-market-data/admin-market-data.html 42 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 79 + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html 143 @@ -2253,6 +2277,10 @@ apps/client/src/app/components/admin-market-data/admin-market-data.html 51 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 88 + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html 152 @@ -2305,6 +2333,10 @@ Sector Sector + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 103 + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html 167 @@ -2313,6 +2345,10 @@ Country País + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 112 + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html 179 @@ -2329,6 +2365,10 @@ First Buy Date Fecha de la primera compra + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 61 + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html 129 @@ -2337,6 +2377,10 @@ Transactions Transacciones + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 70 + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html 138 @@ -2407,7 +2451,7 @@ Número de sectores apps/client/src/app/components/admin-market-data/admin-market-data.html - 96 + 87 @@ -2415,7 +2459,7 @@ Número de países apps/client/src/app/components/admin-market-data/admin-market-data.html - 87 + 96 @@ -2858,6 +2902,30 @@ 143 + + Activities Count + Activities Count + + apps/client/src/app/components/admin-market-data/admin-market-data.html + 69 + + + + Refresh + Refresh + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 22 + + + + Symbol Mapping + Symbol Mapping + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 142 + + diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index ef9bac618..2807f38f0 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -361,6 +361,10 @@ apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html 45 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 154 + apps/client/src/app/pages/account/create-or-update-access-dialog/create-or-update-access-dialog.html 25 @@ -385,6 +389,10 @@ apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html 47 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 161 + apps/client/src/app/pages/account/create-or-update-access-dialog/create-or-update-access-dialog.html 32 @@ -409,10 +417,6 @@ Activity Count Conteggio attività - - apps/client/src/app/components/admin-market-data/admin-market-data.html - 69 - apps/client/src/app/components/admin-overview/admin-overview.html 17 @@ -433,6 +437,10 @@ apps/client/src/app/components/admin-market-data/admin-market-data.html 139 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 30 + Please add a currency: @@ -517,6 +525,10 @@ apps/client/src/app/components/admin-market-data/admin-market-data.html 145 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 38 + Exchange Rates @@ -1061,6 +1073,10 @@ Sectors Settori + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 118 + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html 185 @@ -1073,6 +1089,10 @@ Countries Paesi + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 128 + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html 197 @@ -1893,6 +1913,10 @@ apps/client/src/app/components/admin-market-data/admin-market-data.html 42 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 79 + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html 143 @@ -2253,6 +2277,10 @@ apps/client/src/app/components/admin-market-data/admin-market-data.html 51 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 88 + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html 152 @@ -2305,6 +2333,10 @@ Sector Settore + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 103 + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html 167 @@ -2313,6 +2345,10 @@ Country Paese + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 112 + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html 179 @@ -2329,6 +2365,10 @@ First Buy Date Data del primo acquisto + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 61 + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html 129 @@ -2337,6 +2377,10 @@ Transactions Transazioni + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 70 + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html 138 @@ -2407,7 +2451,7 @@ Numero di settori apps/client/src/app/components/admin-market-data/admin-market-data.html - 96 + 87 @@ -2415,7 +2459,7 @@ Numero di paesi apps/client/src/app/components/admin-market-data/admin-market-data.html - 87 + 96 @@ -2858,6 +2902,30 @@ 143 + + Activities Count + Activities Count + + apps/client/src/app/components/admin-market-data/admin-market-data.html + 69 + + + + Refresh + Refresh + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 22 + + + + Symbol Mapping + Symbol Mapping + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 142 + + diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index e22e1a701..e72bde28b 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -360,6 +360,10 @@ apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html 45 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 154 + apps/client/src/app/pages/account/create-or-update-access-dialog/create-or-update-access-dialog.html 25 @@ -384,6 +388,10 @@ apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html 47 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 161 + apps/client/src/app/pages/account/create-or-update-access-dialog/create-or-update-access-dialog.html 32 @@ -408,10 +416,6 @@ Activity Count Activiteitentelling - - apps/client/src/app/components/admin-market-data/admin-market-data.html - 69 - apps/client/src/app/components/admin-overview/admin-overview.html 17 @@ -432,6 +436,10 @@ apps/client/src/app/components/admin-market-data/admin-market-data.html 139 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 30 + Please add a currency: @@ -516,6 +524,10 @@ apps/client/src/app/components/admin-market-data/admin-market-data.html 145 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 38 + Exchange Rates @@ -1060,6 +1072,10 @@ Sectors Sectoren + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 118 + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html 185 @@ -1072,6 +1088,10 @@ Countries Landen + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 128 + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html 197 @@ -1892,6 +1912,10 @@ apps/client/src/app/components/admin-market-data/admin-market-data.html 42 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 79 + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html 143 @@ -2252,6 +2276,10 @@ apps/client/src/app/components/admin-market-data/admin-market-data.html 51 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 88 + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html 152 @@ -2304,6 +2332,10 @@ Sector Sector + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 103 + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html 167 @@ -2312,6 +2344,10 @@ Country Land + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 112 + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html 179 @@ -2328,6 +2364,10 @@ First Buy Date Eerste aankoopdatum + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 61 + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html 129 @@ -2336,6 +2376,10 @@ Transactions Transacties + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 70 + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html 138 @@ -2406,7 +2450,7 @@ Sectoren tellen apps/client/src/app/components/admin-market-data/admin-market-data.html - 96 + 87 @@ -2414,7 +2458,7 @@ Landen Telling apps/client/src/app/components/admin-market-data/admin-market-data.html - 87 + 96 @@ -2857,6 +2901,30 @@ 143 + + Activities Count + Activities Count + + apps/client/src/app/components/admin-market-data/admin-market-data.html + 69 + + + + Refresh + Refresh + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 22 + + + + Symbol Mapping + Symbol Mapping + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 142 + + diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index b043c0eff..a7ffb72aa 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -331,6 +331,10 @@ apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html 45 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 154 + apps/client/src/app/pages/account/create-or-update-access-dialog/create-or-update-access-dialog.html 25 @@ -354,6 +358,10 @@ apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html 47 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 161 + apps/client/src/app/pages/account/create-or-update-access-dialog/create-or-update-access-dialog.html 32 @@ -376,10 +384,6 @@ Activity Count - - apps/client/src/app/components/admin-market-data/admin-market-data.html - 69 - apps/client/src/app/components/admin-overview/admin-overview.html 17 @@ -398,6 +402,10 @@ apps/client/src/app/components/admin-market-data/admin-market-data.html 139 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 30 + Please add a currency: @@ -472,6 +480,10 @@ apps/client/src/app/components/admin-market-data/admin-market-data.html 145 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 38 + Exchange Rates @@ -958,6 +970,10 @@ Sectors + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 118 + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html 185 @@ -969,6 +985,10 @@ Countries + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 128 + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html 197 @@ -1697,6 +1717,10 @@ apps/client/src/app/components/admin-market-data/admin-market-data.html 42 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 79 + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html 143 @@ -2015,6 +2039,10 @@ apps/client/src/app/components/admin-market-data/admin-market-data.html 51 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 88 + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html 152 @@ -2062,6 +2090,10 @@ Sector + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 103 + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html 167 @@ -2069,6 +2101,10 @@ Country + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 112 + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html 179 @@ -2083,6 +2119,10 @@ First Buy Date + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 61 + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html 129 @@ -2090,6 +2130,10 @@ Transactions + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 70 + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html 138 @@ -2152,14 +2196,14 @@ Sectors Count apps/client/src/app/components/admin-market-data/admin-market-data.html - 96 + 87 Countries Count apps/client/src/app/components/admin-market-data/admin-market-data.html - 87 + 96 @@ -2550,6 +2594,27 @@ 143 + + Activities Count + + apps/client/src/app/components/admin-market-data/admin-market-data.html + 69 + + + + Symbol Mapping + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 142 + + + + Refresh + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 22 + +