From 30e561c06f0e0712098daa6bc736a79a544e31ee Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Mon, 16 Oct 2023 21:54:36 +0200 Subject: [PATCH 01/29] Feature/extend assistant with search for asset profile (#2499) * Extend assistant with search for asset profile * Extend search results by currency, symbol and asset sub class * Update changelog --- CHANGELOG.md | 1 + apps/api/src/app/admin/admin.controller.ts | 21 ++--- apps/api/src/app/admin/admin.module.ts | 2 + apps/api/src/app/admin/admin.service.ts | 24 +++++- .../src/app/portfolio/portfolio.service.ts | 1 + apps/api/src/services/api/api.service.ts | 9 ++ .../components/header/header.component.html | 3 + .../interfaces/admin-market-data.interface.ts | 2 + .../src/lib/interfaces/position.interface.ts | 6 +- .../assistant-list-item.component.ts | 32 ++++++- .../assistant-list-item.html | 20 +++-- .../assistant-list-item.module.ts | 3 +- .../src/lib/assistant/assistant.component.ts | 83 +++++++++++++++++-- libs/ui/src/lib/assistant/assistant.html | 26 +++++- .../lib/assistant/interfaces/interfaces.ts | 11 ++- 15 files changed, 201 insertions(+), 43 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c5357fb89..02922b3e9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Added the endpoint `GET api/v1/account/:id/balances` which provides historical cash balances +- Added support to search for an asset profile by `isin`, `name` and `symbol` as an administrator (experimental) ### Changed diff --git a/apps/api/src/app/admin/admin.controller.ts b/apps/api/src/app/admin/admin.controller.ts index 2d6022221..30270d0c1 100644 --- a/apps/api/src/app/admin/admin.controller.ts +++ b/apps/api/src/app/admin/admin.controller.ts @@ -1,9 +1,9 @@ import { TransformDataSourceInRequestInterceptor } from '@ghostfolio/api/interceptors/transform-data-source-in-request.interceptor'; +import { ApiService } from '@ghostfolio/api/services/api/api.service'; import { DataGatheringService } from '@ghostfolio/api/services/data-gathering/data-gathering.service'; import { MarketDataService } from '@ghostfolio/api/services/market-data/market-data.service'; import { PropertyDto } from '@ghostfolio/api/services/property/property.dto'; import { - DEFAULT_PAGE_SIZE, GATHER_ASSET_PROFILE_PROCESS, GATHER_ASSET_PROFILE_PROCESS_OPTIONS } from '@ghostfolio/common/config'; @@ -12,8 +12,7 @@ import { AdminData, AdminMarketData, AdminMarketDataDetails, - EnhancedSymbolProfile, - Filter + EnhancedSymbolProfile } from '@ghostfolio/common/interfaces'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import type { @@ -50,6 +49,7 @@ import { UpdateMarketDataDto } from './update-market-data.dto'; export class AdminController { public constructor( private readonly adminService: AdminService, + private readonly apiService: ApiService, private readonly dataGatheringService: DataGatheringService, private readonly marketDataService: MarketDataService, @Inject(REQUEST) private readonly request: RequestWithUser @@ -255,6 +255,7 @@ export class AdminController { public async getMarketData( @Query('assetSubClasses') filterByAssetSubClasses?: string, @Query('presetId') presetId?: MarketDataPreset, + @Query('query') filterBySearchQuery?: string, @Query('skip') skip?: number, @Query('sortColumn') sortColumn?: string, @Query('sortDirection') sortDirection?: Prisma.SortOrder, @@ -272,16 +273,10 @@ export class AdminController { ); } - const assetSubClasses = filterByAssetSubClasses?.split(',') ?? []; - - const filters: Filter[] = [ - ...assetSubClasses.map((assetSubClass) => { - return { - id: assetSubClass, - type: 'ASSET_SUB_CLASS' - }; - }) - ]; + const filters = this.apiService.buildFiltersFromQueryParams({ + filterByAssetSubClasses, + filterBySearchQuery + }); return this.adminService.getMarketData({ filters, diff --git a/apps/api/src/app/admin/admin.module.ts b/apps/api/src/app/admin/admin.module.ts index 500af69db..079af87fa 100644 --- a/apps/api/src/app/admin/admin.module.ts +++ b/apps/api/src/app/admin/admin.module.ts @@ -1,4 +1,5 @@ import { SubscriptionModule } from '@ghostfolio/api/app/subscription/subscription.module'; +import { ApiModule } from '@ghostfolio/api/services/api/api.module'; import { ConfigurationModule } from '@ghostfolio/api/services/configuration/configuration.module'; import { DataGatheringModule } from '@ghostfolio/api/services/data-gathering/data-gathering.module'; import { DataProviderModule } from '@ghostfolio/api/services/data-provider/data-provider.module'; @@ -15,6 +16,7 @@ import { QueueModule } from './queue/queue.module'; @Module({ imports: [ + ApiModule, ConfigurationModule, DataGatheringModule, DataProviderModule, diff --git a/apps/api/src/app/admin/admin.service.ts b/apps/api/src/app/admin/admin.service.ts index dd9e3f9ce..173854ea7 100644 --- a/apps/api/src/app/admin/admin.service.ts +++ b/apps/api/src/app/admin/admin.service.ts @@ -131,10 +131,14 @@ export class AdminService { filters = [{ id: 'ETF', type: 'ASSET_SUB_CLASS' }]; } + const searchQuery = filters.find(({ type }) => { + return type === 'SEARCH_QUERY'; + })?.id; + const { ASSET_SUB_CLASS: filtersByAssetSubClass } = groupBy( filters, - (filter) => { - return filter.type; + ({ type }) => { + return type; } ); @@ -147,6 +151,14 @@ export class AdminService { where.assetSubClass = AssetSubClass[filtersByAssetSubClass[0].id]; } + if (searchQuery) { + where.OR = [ + { isin: { mode: 'insensitive', startsWith: searchQuery } }, + { name: { mode: 'insensitive', startsWith: searchQuery } }, + { symbol: { mode: 'insensitive', startsWith: searchQuery } } + ]; + } + if (sortColumn) { orderBy = [{ [sortColumn]: sortDirection }]; @@ -173,7 +185,9 @@ export class AdminService { assetSubClass: true, comment: true, countries: true, + currency: true, dataSource: true, + name: true, Order: { orderBy: [{ date: 'asc' }], select: { date: true }, @@ -194,7 +208,9 @@ export class AdminService { assetSubClass, comment, countries, + currency, dataSource, + name, Order, sectors, symbol @@ -213,8 +229,10 @@ export class AdminService { assetClass, assetSubClass, comment, + currency, countriesCount, dataSource, + name, symbol, marketDataItemCount, sectorsCount, @@ -341,6 +359,8 @@ export class AdminService { symbol, assetClass: 'CASH', countriesCount: 0, + currency: symbol.replace(DEFAULT_CURRENCY, ''), + name: symbol, sectorsCount: 0 }; }); diff --git a/apps/api/src/app/portfolio/portfolio.service.ts b/apps/api/src/app/portfolio/portfolio.service.ts index de366908f..fcd2cb13c 100644 --- a/apps/api/src/app/portfolio/portfolio.service.ts +++ b/apps/api/src/app/portfolio/portfolio.service.ts @@ -1088,6 +1088,7 @@ export class PortfolioService { return { ...position, assetClass: symbolProfileMap[position.symbol].assetClass, + assetSubClass: symbolProfileMap[position.symbol].assetSubClass, averagePrice: new Big(position.averagePrice).toNumber(), grossPerformance: position.grossPerformance?.toNumber() ?? null, grossPerformancePercentage: diff --git a/apps/api/src/services/api/api.service.ts b/apps/api/src/services/api/api.service.ts index 204aa030e..8ef0df7b3 100644 --- a/apps/api/src/services/api/api.service.ts +++ b/apps/api/src/services/api/api.service.ts @@ -8,16 +8,19 @@ export class ApiService { public buildFiltersFromQueryParams({ filterByAccounts, filterByAssetClasses, + filterByAssetSubClasses, filterBySearchQuery, filterByTags }: { filterByAccounts?: string; filterByAssetClasses?: string; + filterByAssetSubClasses?: string; filterBySearchQuery?: string; filterByTags?: string; }): Filter[] { const accountIds = filterByAccounts?.split(',') ?? []; const assetClasses = filterByAssetClasses?.split(',') ?? []; + const assetSubClasses = filterByAssetSubClasses?.split(',') ?? []; const searchQuery = filterBySearchQuery?.toLowerCase(); const tagIds = filterByTags?.split(',') ?? []; @@ -34,6 +37,12 @@ export class ApiService { type: 'ASSET_CLASS' }; }), + ...assetSubClasses.map((assetClass) => { + return { + id: assetClass, + type: 'ASSET_SUB_CLASS' + }; + }), { id: searchQuery, type: 'SEARCH_QUERY' diff --git a/apps/client/src/app/components/header/header.component.html b/apps/client/src/app/components/header/header.component.html index 45986df95..4d606f591 100644 --- a/apps/client/src/app/components/header/header.component.html +++ b/apps/client/src/app/components/header/header.component.html @@ -131,6 +131,9 @@ diff --git a/libs/common/src/lib/interfaces/admin-market-data.interface.ts b/libs/common/src/lib/interfaces/admin-market-data.interface.ts index d53562a23..08838d4bc 100644 --- a/libs/common/src/lib/interfaces/admin-market-data.interface.ts +++ b/libs/common/src/lib/interfaces/admin-market-data.interface.ts @@ -9,9 +9,11 @@ export interface AdminMarketDataItem { assetClass?: AssetClass; assetSubClass?: AssetSubClass; countriesCount: number; + currency: string; dataSource: DataSource; date?: Date; marketDataItemCount: number; + name: string; sectorsCount: number; symbol: string; } diff --git a/libs/common/src/lib/interfaces/position.interface.ts b/libs/common/src/lib/interfaces/position.interface.ts index 6d94e3443..1df07e0ce 100644 --- a/libs/common/src/lib/interfaces/position.interface.ts +++ b/libs/common/src/lib/interfaces/position.interface.ts @@ -1,9 +1,9 @@ -import { AssetClass, DataSource } from '@prisma/client'; - -import { MarketState } from '../types'; +import { MarketState } from '@ghostfolio/common/types'; +import { AssetClass, AssetSubClass, DataSource } from '@prisma/client'; export interface Position { assetClass: AssetClass; + assetSubClass: AssetSubClass; averagePrice: number; currency: string; dataSource: DataSource; diff --git a/libs/ui/src/lib/assistant/assistant-list-item/assistant-list-item.component.ts b/libs/ui/src/lib/assistant/assistant-list-item/assistant-list-item.component.ts index 53a72206d..d00977c18 100644 --- a/libs/ui/src/lib/assistant/assistant-list-item/assistant-list-item.component.ts +++ b/libs/ui/src/lib/assistant/assistant-list-item/assistant-list-item.component.ts @@ -7,10 +7,12 @@ import { EventEmitter, HostBinding, Input, + OnChanges, Output, ViewChild } from '@angular/core'; -import { Position } from '@ghostfolio/common/interfaces'; +import { Params } from '@angular/router'; +import { ISearchResultItem } from '@ghostfolio/ui/assistant/interfaces/interfaces'; @Component({ changeDetection: ChangeDetectionStrategy.OnPush, @@ -18,22 +20,46 @@ import { Position } from '@ghostfolio/common/interfaces'; templateUrl: './assistant-list-item.html', styleUrls: ['./assistant-list-item.scss'] }) -export class AssistantListItemComponent implements FocusableOption { +export class AssistantListItemComponent implements FocusableOption, OnChanges { @HostBinding('attr.tabindex') tabindex = -1; @HostBinding('class.has-focus') get getHasFocus() { return this.hasFocus; } - @Input() holding: Position; + @Input() item: ISearchResultItem; + @Input() mode: 'assetProfile' | 'holding'; @Output() clicked = new EventEmitter(); @ViewChild('link') public linkElement: ElementRef; public hasFocus = false; + public queryParams: Params; + public routerLink: string[]; public constructor(private changeDetectorRef: ChangeDetectorRef) {} + public ngOnChanges() { + const dataSource = this.item?.dataSource; + const symbol = this.item?.symbol; + + if (this.mode === 'assetProfile') { + this.queryParams = { + dataSource, + symbol, + assetProfileDialog: true + }; + this.routerLink = ['/admin', 'market-data']; + } else if (this.mode === 'holding') { + this.queryParams = { + dataSource, + symbol, + positionDetailDialog: true + }; + this.routerLink = ['/portfolio', 'holdings']; + } + } + public focus() { this.hasFocus = true; diff --git a/libs/ui/src/lib/assistant/assistant-list-item/assistant-list-item.html b/libs/ui/src/lib/assistant/assistant-list-item/assistant-list-item.html index 5e078241d..d75db3c8a 100644 --- a/libs/ui/src/lib/assistant/assistant-list-item/assistant-list-item.html +++ b/libs/ui/src/lib/assistant/assistant-list-item/assistant-list-item.html @@ -1,12 +1,16 @@ {{ holding?.name }}{{ item?.name }} +
+ {{ item?.symbol | gfSymbol }} · {{ item?.currency }} + · {{ item?.assetSubClassString }} diff --git a/libs/ui/src/lib/assistant/assistant-list-item/assistant-list-item.module.ts b/libs/ui/src/lib/assistant/assistant-list-item/assistant-list-item.module.ts index 9a88fc919..0c2e89726 100644 --- a/libs/ui/src/lib/assistant/assistant-list-item/assistant-list-item.module.ts +++ b/libs/ui/src/lib/assistant/assistant-list-item/assistant-list-item.module.ts @@ -1,12 +1,13 @@ import { CommonModule } from '@angular/common'; import { NgModule } from '@angular/core'; import { RouterModule } from '@angular/router'; +import { GfSymbolModule } from '@ghostfolio/client/pipes/symbol/symbol.module'; import { AssistantListItemComponent } from './assistant-list-item.component'; @NgModule({ declarations: [AssistantListItemComponent], exports: [AssistantListItemComponent], - imports: [CommonModule, RouterModule] + imports: [CommonModule, GfSymbolModule, RouterModule] }) export class GfAssistantListItemModule {} diff --git a/libs/ui/src/lib/assistant/assistant.component.ts b/libs/ui/src/lib/assistant/assistant.component.ts index 30db8f2e0..2cfd9eff2 100644 --- a/libs/ui/src/lib/assistant/assistant.component.ts +++ b/libs/ui/src/lib/assistant/assistant.component.ts @@ -16,9 +16,10 @@ import { } from '@angular/core'; import { FormControl } from '@angular/forms'; import { MatMenuTrigger } from '@angular/material/menu'; +import { AdminService } from '@ghostfolio/client/services/admin.service'; import { DataService } from '@ghostfolio/client/services/data.service'; -import { Position } from '@ghostfolio/common/interfaces'; -import { EMPTY, Subject, lastValueFrom } from 'rxjs'; +import { translate } from '@ghostfolio/ui/i18n'; +import { EMPTY, Observable, Subject, lastValueFrom } from 'rxjs'; import { catchError, debounceTime, @@ -29,13 +30,13 @@ import { } from 'rxjs/operators'; import { AssistantListItemComponent } from './assistant-list-item/assistant-list-item.component'; -import { ISearchResults } from './interfaces/interfaces'; +import { ISearchResultItem, ISearchResults } from './interfaces/interfaces'; @Component({ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'gf-assistant', - templateUrl: './assistant.html', - styleUrls: ['./assistant.scss'] + styleUrls: ['./assistant.scss'], + templateUrl: './assistant.html' }) export class AssistantComponent implements OnDestroy, OnInit { @HostListener('document:keydown', ['$event']) onKeydown( @@ -71,6 +72,7 @@ export class AssistantComponent implements OnDestroy, OnInit { } @Input() deviceType: string; + @Input() hasPermissionToAccessAdminControl: boolean; @Output() closed = new EventEmitter(); @@ -87,6 +89,7 @@ export class AssistantComponent implements OnDestroy, OnInit { public placeholder = $localize`Find holding...`; public searchFormControl = new FormControl(''); public searchResults: ISearchResults = { + assetProfiles: [], holdings: [] }; @@ -94,6 +97,7 @@ export class AssistantComponent implements OnDestroy, OnInit { private unsubscribeSubject = new Subject(); public constructor( + private adminService: AdminService, private changeDetectorRef: ChangeDetectorRef, private dataService: DataService ) {} @@ -104,6 +108,7 @@ export class AssistantComponent implements OnDestroy, OnInit { map((searchTerm) => { this.isLoading = true; this.searchResults = { + assetProfiles: [], holdings: [] }; @@ -115,6 +120,7 @@ export class AssistantComponent implements OnDestroy, OnInit { distinctUntilChanged(), mergeMap(async (searchTerm) => { const result = { + assetProfiles: [], holdings: [] }; @@ -140,6 +146,7 @@ export class AssistantComponent implements OnDestroy, OnInit { this.isLoading = true; this.keyManager = new FocusKeyManager(this.assistantListItems).withWrap(); this.searchResults = { + assetProfiles: [], holdings: [] }; @@ -180,10 +187,23 @@ export class AssistantComponent implements OnDestroy, OnInit { } private async getSearchResults(aSearchTerm: string) { - let holdings: Position[] = []; + let assetProfiles: ISearchResultItem[] = []; + let holdings: ISearchResultItem[] = []; + + if (this.hasPermissionToAccessAdminControl) { + try { + assetProfiles = await lastValueFrom( + this.searchAssetProfiles(aSearchTerm) + ); + assetProfiles = assetProfiles.slice( + 0, + AssistantComponent.SEARCH_RESULTS_DEFAULT_LIMIT + ); + } catch {} + } try { - holdings = await lastValueFrom(this.searchHolding(aSearchTerm)); + holdings = await lastValueFrom(this.searchHoldings(aSearchTerm)); holdings = holdings.slice( 0, AssistantComponent.SEARCH_RESULTS_DEFAULT_LIMIT @@ -191,11 +211,46 @@ export class AssistantComponent implements OnDestroy, OnInit { } catch {} return { + assetProfiles, holdings }; } - private searchHolding(aSearchTerm: string) { + private searchAssetProfiles( + aSearchTerm: string + ): Observable { + return this.adminService + .fetchAdminMarketData({ + filters: [ + { + id: aSearchTerm, + type: 'SEARCH_QUERY' + } + ], + take: AssistantComponent.SEARCH_RESULTS_DEFAULT_LIMIT + }) + .pipe( + catchError(() => { + return EMPTY; + }), + map(({ marketData }) => { + return marketData.map( + ({ assetSubClass, currency, dataSource, name, symbol }) => { + return { + currency, + dataSource, + name, + symbol, + assetSubClassString: translate(assetSubClass) + }; + } + ); + }), + takeUntil(this.unsubscribeSubject) + ); + } + + private searchHoldings(aSearchTerm: string): Observable { return this.dataService .fetchPositions({ filters: [ @@ -211,7 +266,17 @@ export class AssistantComponent implements OnDestroy, OnInit { return EMPTY; }), map(({ positions }) => { - return positions; + return positions.map( + ({ assetSubClass, currency, dataSource, name, symbol }) => { + return { + currency, + dataSource, + name, + symbol, + assetSubClassString: translate(assetSubClass) + }; + } + ); }), takeUntil(this.unsubscribeSubject) ); diff --git a/libs/ui/src/lib/assistant/assistant.html b/libs/ui/src/lib/assistant/assistant.html index c5db29658..0644c945e 100644 --- a/libs/ui/src/lib/assistant/assistant.html +++ b/libs/ui/src/lib/assistant/assistant.html @@ -45,8 +45,9 @@
Holdings
@@ -62,5 +63,26 @@
No entries...
+
+
Asset Profiles
+ + + +
No entries...
+
+
diff --git a/libs/ui/src/lib/assistant/interfaces/interfaces.ts b/libs/ui/src/lib/assistant/interfaces/interfaces.ts index 922091fb5..99f70dbe1 100644 --- a/libs/ui/src/lib/assistant/interfaces/interfaces.ts +++ b/libs/ui/src/lib/assistant/interfaces/interfaces.ts @@ -1,5 +1,12 @@ -import { Position } from '@ghostfolio/common/interfaces'; +import { UniqueAsset } from '@ghostfolio/common/interfaces'; + +export interface ISearchResultItem extends UniqueAsset { + assetSubClassString: string; + currency: string; + name: string; +} export interface ISearchResults { - holdings: Position[]; + assetProfiles: ISearchResultItem[]; + holdings: ISearchResultItem[]; } From 8492a8fed097b6f2511f4cde19c2b24ebad0df17 Mon Sep 17 00:00:00 2001 From: Kevin Date: Tue, 17 Oct 2023 09:17:44 +0200 Subject: [PATCH 02/29] Upgrade simplewebauthn (#2498) * Upgrade simplewebauthn to new major version * Update changelog --- CHANGELOG.md | 2 + apps/api/src/app/auth/web-auth.service.ts | 30 ++- .../user-account-settings.component.ts | 16 +- .../user-account-settings.html | 2 +- .../src/app/services/web-authn.service.ts | 4 +- package.json | 6 +- yarn.lock | 243 +++++++++--------- 7 files changed, 154 insertions(+), 149 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 02922b3e9..ba9a7d750 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,10 +15,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Extended the `copy-assets` `Nx` target to copy the locales to the server’s assets +- Upgraded `@simplewebauthn/browser` and `@simplewebauthn/server` from version `5.2.1` to `8.3` ### Fixed - Displayed the transfer cash balance button based on a permission +- Fixed the biometric authentication ## 2.11.0 - 2023-10-14 diff --git a/apps/api/src/app/auth/web-auth.service.ts b/apps/api/src/app/auth/web-auth.service.ts index 471b77709..8d5c91a74 100644 --- a/apps/api/src/app/auth/web-auth.service.ts +++ b/apps/api/src/app/auth/web-auth.service.ts @@ -64,7 +64,7 @@ export class WebAuthService { } }; - const options = generateRegistrationOptions(opts); + const options = await generateRegistrationOptions(opts); await this.userService.updateUser({ data: { @@ -88,10 +88,16 @@ export class WebAuthService { let verification: VerifiedRegistrationResponse; try { const opts: VerifyRegistrationResponseOpts = { - credential, expectedChallenge, expectedOrigin: this.expectedOrigin, - expectedRPID: this.rpID + expectedRPID: this.rpID, + response: { + clientExtensionResults: credential.clientExtensionResults, + id: credential.id, + rawId: credential.rawId, + response: credential.response, + type: 'public-key' + } }; verification = await verifyRegistrationResponse(opts); } catch (error) { @@ -117,8 +123,8 @@ export class WebAuthService { */ existingDevice = await this.deviceService.createAuthDevice({ counter, - credentialPublicKey, - credentialId: credentialID, + credentialId: Buffer.from(credentialID), + credentialPublicKey: Buffer.from(credentialPublicKey), User: { connect: { id: user.id } } }); } @@ -152,7 +158,7 @@ export class WebAuthService { userVerification: 'preferred' }; - const options = generateAuthenticationOptions(opts); + const options = await generateAuthenticationOptions(opts); await this.userService.updateUser({ data: { @@ -181,7 +187,6 @@ export class WebAuthService { let verification: VerifiedAuthenticationResponse; try { const opts: VerifyAuthenticationResponseOpts = { - credential, authenticator: { credentialID: device.credentialId, credentialPublicKey: device.credentialPublicKey, @@ -189,9 +194,16 @@ export class WebAuthService { }, expectedChallenge: `${user.authChallenge}`, expectedOrigin: this.expectedOrigin, - expectedRPID: this.rpID + expectedRPID: this.rpID, + response: { + clientExtensionResults: credential.clientExtensionResults, + id: credential.id, + rawId: credential.rawId, + response: credential.response, + type: 'public-key' + } }; - verification = verifyAuthenticationResponse(opts); + verification = await verifyAuthenticationResponse(opts); } catch (error) { Logger.error(error, 'WebAuthService'); throw new InternalServerErrorException({ error: error.message }); diff --git a/apps/client/src/app/components/user-account-settings/user-account-settings.component.ts b/apps/client/src/app/components/user-account-settings/user-account-settings.component.ts index a52812ed3..6fb8d5c15 100644 --- a/apps/client/src/app/components/user-account-settings/user-account-settings.component.ts +++ b/apps/client/src/app/components/user-account-settings/user-account-settings.component.ts @@ -3,10 +3,9 @@ import { ChangeDetectorRef, Component, OnDestroy, - OnInit, - ViewChild + OnInit } from '@angular/core'; -import { MatCheckbox, MatCheckboxChange } from '@angular/material/checkbox'; +import { MatCheckboxChange } from '@angular/material/checkbox'; import { DataService } from '@ghostfolio/client/services/data.service'; import { STAY_SIGNED_IN, @@ -29,14 +28,12 @@ import { catchError, takeUntil } from 'rxjs/operators'; templateUrl: './user-account-settings.html' }) export class UserAccountSettingsComponent implements OnDestroy, OnInit { - @ViewChild('toggleSignInWithFingerprintEnabledElement') - signInWithFingerprintElement: MatCheckbox; - public appearancePlaceholder = $localize`Auto`; public baseCurrency: string; public currencies: string[] = []; public hasPermissionToUpdateViewMode: boolean; public hasPermissionToUpdateUserSettings: boolean; + public isWebAuthnEnabled: boolean; public language = document.documentElement.lang; public locales = [ 'de', @@ -250,9 +247,8 @@ export class UserAccountSettingsComponent implements OnDestroy, OnInit { } private update() { - if (this.signInWithFingerprintElement) { - this.signInWithFingerprintElement.checked = - this.webAuthnService.isEnabled() ?? false; - } + this.isWebAuthnEnabled = this.webAuthnService.isEnabled() ?? false; + + this.changeDetectorRef.markForCheck(); } } diff --git a/apps/client/src/app/components/user-account-settings/user-account-settings.html b/apps/client/src/app/components/user-account-settings/user-account-settings.html index 12f3da458..66829d55e 100644 --- a/apps/client/src/app/components/user-account-settings/user-account-settings.html +++ b/apps/client/src/app/components/user-account-settings/user-account-settings.html @@ -154,8 +154,8 @@
diff --git a/apps/client/src/app/services/web-authn.service.ts b/apps/client/src/app/services/web-authn.service.ts index eb033884c..5075d036d 100644 --- a/apps/client/src/app/services/web-authn.service.ts +++ b/apps/client/src/app/services/web-authn.service.ts @@ -88,7 +88,9 @@ export class WebAuthnService { { deviceId } ) .pipe( - switchMap(startAuthentication), + switchMap((requestOptionsJSON) => + startAuthentication(requestOptionsJSON, true) + ), switchMap((assertionResponse) => { return this.http.post<{ authToken: string }>( `/api/v1/auth/webauthn/verify-assertion`, diff --git a/package.json b/package.json index 4cb57f549..5bc51418d 100644 --- a/package.json +++ b/package.json @@ -82,8 +82,8 @@ "@nestjs/schedule": "3.0.2", "@nestjs/serve-static": "4.0.0", "@prisma/client": "5.4.2", - "@simplewebauthn/browser": "5.2.1", - "@simplewebauthn/server": "5.2.1", + "@simplewebauthn/browser": "8.3.1", + "@simplewebauthn/server": "8.3.2", "@stripe/stripe-js": "1.47.0", "alphavantage": "2.2.0", "big.js": "6.2.1", @@ -157,7 +157,7 @@ "@nx/web": "16.7.4", "@nx/workspace": "16.7.4", "@schematics/angular": "16.2.0", - "@simplewebauthn/typescript-types": "5.2.1", + "@simplewebauthn/typescript-types": "8.0.0", "@storybook/addon-essentials": "7.3.2", "@storybook/angular": "7.3.2", "@storybook/core-server": "7.3.2", diff --git a/yarn.lock b/yarn.lock index aede5f1be..3c798bb15 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1819,6 +1819,36 @@ resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-6.0.2.tgz#6110f918d273fe2af8ea1c4398a88774bb9fc12f" integrity sha512-Tbsj02wXCbqGmzdnXNk0SOF19ChhRU70BsroIi4Pm6Ehp56in6vch94mfbdQ17DozxkL3BAVjbZ4Qc1a0HFRAg== +"@cbor-extract/cbor-extract-darwin-arm64@2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@cbor-extract/cbor-extract-darwin-arm64/-/cbor-extract-darwin-arm64-2.1.1.tgz#5721f6dd3feae0b96d23122853ce977e0671b7a6" + integrity sha512-blVBy5MXz6m36Vx0DfLd7PChOQKEs8lK2bD1WJn/vVgG4FXZiZmZb2GECHFvVPA5T7OnODd9xZiL3nMCv6QUhA== + +"@cbor-extract/cbor-extract-darwin-x64@2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@cbor-extract/cbor-extract-darwin-x64/-/cbor-extract-darwin-x64-2.1.1.tgz#c25e7d0133950d87d101d7b3afafea8d50d83f5f" + integrity sha512-h6KFOzqk8jXTvkOftyRIWGrd7sKQzQv2jVdTL9nKSf3D2drCvQB/LHUxAOpPXo3pv2clDtKs3xnHalpEh3rDsw== + +"@cbor-extract/cbor-extract-linux-arm64@2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@cbor-extract/cbor-extract-linux-arm64/-/cbor-extract-linux-arm64-2.1.1.tgz#48f78e7d8f0fcc84ed074b6bfa6d15dd83187c63" + integrity sha512-SxAaRcYf8S0QHaMc7gvRSiTSr7nUYMqbUdErBEu+HYA4Q6UNydx1VwFE68hGcp1qvxcy9yT5U7gA+a5XikfwSQ== + +"@cbor-extract/cbor-extract-linux-arm@2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@cbor-extract/cbor-extract-linux-arm/-/cbor-extract-linux-arm-2.1.1.tgz#7507d346389cb682e44fab8fae9534edd52e2e41" + integrity sha512-ds0uikdcIGUjPyraV4oJqyVE5gl/qYBpa/Wnh6l6xLE2lj/hwnjT2XcZCChdXwW/YFZ1LUHs6waoYN8PmK0nKQ== + +"@cbor-extract/cbor-extract-linux-x64@2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@cbor-extract/cbor-extract-linux-x64/-/cbor-extract-linux-x64-2.1.1.tgz#b7c1d2be61c58ec18d58afbad52411ded63cd4cd" + integrity sha512-GVK+8fNIE9lJQHAlhOROYiI0Yd4bAZ4u++C2ZjlkS3YmO6hi+FUxe6Dqm+OKWTcMpL/l71N6CQAmaRcb4zyJuA== + +"@cbor-extract/cbor-extract-win32-x64@2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@cbor-extract/cbor-extract-win32-x64/-/cbor-extract-win32-x64-2.1.1.tgz#21b11a1a3f18c3e7d62fd5f87438b7ed2c64c1f7" + integrity sha512-2Niq1C41dCRIDeD8LddiH+mxGlO7HJ612Ll3D/E73ZWBmycued+8ghTr/Ho3CMOWPUEr08XtyBMVXAjqF+TcKw== + "@codewithdan/observable-store@2.2.15": version "2.2.15" resolved "https://registry.yarnpkg.com/@codewithdan/observable-store/-/observable-store-2.2.15.tgz#6d27e0988e182853def59a714b712f4389e558d2" @@ -2540,6 +2570,11 @@ resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.1.1.tgz#1a5b1959a528e374e8037c4396c3e825d6cf4a83" integrity sha512-m0G6wlnhm/AX0H12IOWtK8gASEMffnX08RtKkCgTdHb9JpHKGloI7icFfLg9ZmQeavcvR0PKmzxClyuFPSjKWw== +"@hexagon/base64@^1.1.27": + version "1.1.28" + resolved "https://registry.yarnpkg.com/@hexagon/base64/-/base64-1.1.28.tgz#7d306a97f1423829be5b27c9d388fe50e3099d48" + integrity sha512-lhqDEAvWixy3bZ+UOYbPwUbBkwBq5C1LAJ/xPC8Oi+lL54oyakv/npbA0aU2hgCsx/1NUd4IBvV03+aUBWxerw== + "@humanwhocodes/config-array@^0.11.8": version "0.11.10" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.10.tgz#5a3ffe32cc9306365fb3fd572596cd602d5e12d2" @@ -4252,7 +4287,7 @@ node-addon-api "^3.2.1" node-gyp-build "^4.3.0" -"@peculiar/asn1-android@^2.1.7": +"@peculiar/asn1-android@^2.3.6": version "2.3.6" resolved "https://registry.yarnpkg.com/@peculiar/asn1-android/-/asn1-android-2.3.6.tgz#20363c23bc5b9a91f7ffd80d7c3842dccff8c20b" integrity sha512-zkYh4DsiRhiNfg6tWaUuRc+huwlb9XJbmeZLrjTz9v76UK1Ehq3EnfJFED6P3sdznW/nqWe46LoM9JrqxcD58g== @@ -4261,7 +4296,27 @@ asn1js "^3.0.5" tslib "^2.4.0" -"@peculiar/asn1-schema@^2.1.7", "@peculiar/asn1-schema@^2.3.6": +"@peculiar/asn1-ecc@^2.3.6": + version "2.3.6" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-ecc/-/asn1-ecc-2.3.6.tgz#f155f33f5c61df463d9b33b911d25578a19694b7" + integrity sha512-Hu1xzMJQWv8/GvzOiinaE6XiD1/kEhq2C/V89UEoWeZ2fLUcGNIvMxOr/pMyL0OmpRWj/mhCTXOZp4PP+a0aTg== + dependencies: + "@peculiar/asn1-schema" "^2.3.6" + "@peculiar/asn1-x509" "^2.3.6" + asn1js "^3.0.5" + tslib "^2.4.0" + +"@peculiar/asn1-rsa@^2.3.6": + version "2.3.6" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-rsa/-/asn1-rsa-2.3.6.tgz#e2af2c52a914c60f33853a86a48905ec555b29c2" + integrity sha512-DswjJyAXZnvESuImGNTvbNKvh1XApBVqU+r3UmrFFTAI23gv62byl0f5OFKWTNhCf66WQrd3sklpsCZc/4+jwA== + dependencies: + "@peculiar/asn1-schema" "^2.3.6" + "@peculiar/asn1-x509" "^2.3.6" + asn1js "^3.0.5" + tslib "^2.4.0" + +"@peculiar/asn1-schema@^2.3.6": version "2.3.6" resolved "https://registry.yarnpkg.com/@peculiar/asn1-schema/-/asn1-schema-2.3.6.tgz#3dd3c2ade7f702a9a94dfb395c192f5fa5d6b922" integrity sha512-izNRxPoaeJeg/AyH8hER6s+H7p4itk+03QCa4sbxI3lNdseQYCuxzgsuNK8bTXChtLTjpJz6NmXKA73qLa3rCA== @@ -4270,7 +4325,7 @@ pvtsutils "^1.3.2" tslib "^2.4.0" -"@peculiar/asn1-x509@^2.1.7": +"@peculiar/asn1-x509@^2.3.6": version "2.3.6" resolved "https://registry.yarnpkg.com/@peculiar/asn1-x509/-/asn1-x509-2.3.6.tgz#e50154a460cdf43da8a41b23ee807a53e0036af0" integrity sha512-dRwX31R1lcbIdzbztiMvLNTDoGptxdV7HocNx87LfKU0fEWh7fTWJjx4oV+glETSy6heF/hJHB2J4RGB3vVSYg== @@ -4638,38 +4693,32 @@ "@sigstore/protobuf-specs" "^0.1.0" tuf-js "^1.1.7" -"@simplewebauthn/browser@5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@simplewebauthn/browser/-/browser-5.2.1.tgz#569252a9f235a99aae90c4d1cc6c441f42637b8e" - integrity sha512-TxL3OPHJf57hmnfQoF3zRIQWEdsJLxrA9NcGdRK0sB/h3jd13kpGQonBtMnj4YBQnWTtRDZ804wlpI9IEMaJ9g== - -"@simplewebauthn/server@5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@simplewebauthn/server/-/server-5.2.1.tgz#49038d2951ad2ac065bdf8342fdb13f78ee4df1c" - integrity sha512-+CQ8oJf9Io8y4ReYLagX5JG9ShntIkdeCPkMoyHLBSRPlNY0N/Yv3Iun4YPQ8d4LJUU9f8S1eD5bibIEMjWDRg== - dependencies: - "@peculiar/asn1-android" "^2.1.7" - "@peculiar/asn1-schema" "^2.1.7" - "@peculiar/asn1-x509" "^2.1.7" - "@simplewebauthn/typescript-types" "^5.2.1" - base64url "^3.0.1" - cbor "^5.1.0" - debug "^4.3.2" - elliptic "^6.5.3" - jsrsasign "^10.4.0" - jwk-to-pem "^2.0.4" - node-fetch "^2.6.0" - node-rsa "^1.1.1" +"@simplewebauthn/browser@8.3.1": + version "8.3.1" + resolved "https://registry.yarnpkg.com/@simplewebauthn/browser/-/browser-8.3.1.tgz#f5c1aed6313d61944a9e13f16ae4495750bddf93" + integrity sha512-bMW7oOkxX4ydRAkkPtJ1do2k9yOoIGc/hZYebcuEOVdJoC6wwVpu97mYY7Mz8B9hLlcaR5WFgBsLl5tSJVzm8A== + dependencies: + "@simplewebauthn/typescript-types" "^8.0.0" -"@simplewebauthn/typescript-types@5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@simplewebauthn/typescript-types/-/typescript-types-5.2.1.tgz#a8229ce4f71be7edafe3bfdce062b332ef494f0d" - integrity sha512-t/NzbjaD0zu4ivUmiof2cPA8X5LHhFX+DflBBl71/dzEhl15qepDI2rxWdjB+Hc0FfOT1fBQnb1uP19fPcDUiA== +"@simplewebauthn/server@8.3.2": + version "8.3.2" + resolved "https://registry.yarnpkg.com/@simplewebauthn/server/-/server-8.3.2.tgz#dfdbe7af4c1258e786c4a0b1c83c54743ba7568c" + integrity sha512-ceo8t5gdO5W/JOePQWPDH+rAd8tO6QNalLU56rc9ItdzaTjk+qcYwQg/BKXDDg6117P3HKrRBkZwBrMJl4dOdA== + dependencies: + "@hexagon/base64" "^1.1.27" + "@peculiar/asn1-android" "^2.3.6" + "@peculiar/asn1-ecc" "^2.3.6" + "@peculiar/asn1-rsa" "^2.3.6" + "@peculiar/asn1-schema" "^2.3.6" + "@peculiar/asn1-x509" "^2.3.6" + "@simplewebauthn/typescript-types" "^8.0.0" + cbor-x "^1.5.2" + cross-fetch "^4.0.0" -"@simplewebauthn/typescript-types@^5.2.1": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@simplewebauthn/typescript-types/-/typescript-types-5.4.0.tgz#533b28e7cabcc092396ecd07bbb953b71e7696b6" - integrity sha512-LeJq6Jx+o7D6iIlCy8CH5jCjwVcUvAReEo66VcF3nysfc/yKW5yCAPLSRmPITF4CRZTfnVPxUBUcveUQL6aBMA== +"@simplewebauthn/typescript-types@8.0.0", "@simplewebauthn/typescript-types@^8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@simplewebauthn/typescript-types/-/typescript-types-8.0.0.tgz#1698a7228aba880c5c1deba1f13a4f9fd8851cb3" + integrity sha512-d7Izb2H+LZJteXMkS8DmpAarD6mZdpIOu/av/yH4/u/3Pd6DKFLyBM3j8BMmUvUqpzvJvHARNrRfQYto58mtTQ== "@sinclair/typebox@^0.27.8": version "0.27.8" @@ -7122,17 +7171,7 @@ arrify@^2.0.0: resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== -asn1.js@^5.3.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" - integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - safer-buffer "^2.1.0" - -asn1@^0.2.4, asn1@~0.2.3: +asn1@~0.2.3: version "0.2.6" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== @@ -7461,7 +7500,7 @@ base64-js@^1.2.0, base64-js@^1.3.0, base64-js@^1.3.1: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== -base64url@3.x.x, base64url@^3.0.1: +base64url@3.x.x: version "3.0.1" resolved "https://registry.yarnpkg.com/base64url/-/base64url-3.0.1.tgz#6399d572e2bc3f90a9a8b22d5dbb0a32d33f788d" integrity sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A== @@ -7527,7 +7566,7 @@ big.js@^5.2.2: resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== -bignumber.js@^9.0.0, bignumber.js@^9.0.1: +bignumber.js@^9.0.0: version "9.1.1" resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.1.tgz#c4df7dc496bd849d4c9464344c1aa74228b4dac6" integrity sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig== @@ -7556,11 +7595,6 @@ bluebird@^3.7.2: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -bn.js@^4.0.0, bn.js@^4.11.9: - version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== - body-parser@1.20.1: version "1.20.1" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" @@ -7689,11 +7723,6 @@ braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.0.1" -brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== - browser-assert@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/browser-assert/-/browser-assert-1.2.1.tgz#9aaa5a2a8c74685c2ae05bfe46efd606f068c200" @@ -7953,13 +7982,26 @@ caseless@~0.12.0: resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== -cbor@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/cbor/-/cbor-5.2.0.tgz#4cca67783ccd6de7b50ab4ed62636712f287a67c" - integrity sha512-5IMhi9e1QU76ppa5/ajP1BmMWZ2FHkhAhjeVKQ/EFCgYSEaeVaoGtL7cxJskf9oCCk+XjzaIdc3IuU/dbA/o2A== +cbor-extract@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/cbor-extract/-/cbor-extract-2.1.1.tgz#f154b31529fdb6b7c70fb3ca448f44eda96a1b42" + integrity sha512-1UX977+L+zOJHsp0mWFG13GLwO6ucKgSmSW6JTl8B9GUvACvHeIVpFqhU92299Z6PfD09aTXDell5p+lp1rUFA== dependencies: - bignumber.js "^9.0.1" - nofilter "^1.0.4" + node-gyp-build-optional-packages "5.0.3" + optionalDependencies: + "@cbor-extract/cbor-extract-darwin-arm64" "2.1.1" + "@cbor-extract/cbor-extract-darwin-x64" "2.1.1" + "@cbor-extract/cbor-extract-linux-arm" "2.1.1" + "@cbor-extract/cbor-extract-linux-arm64" "2.1.1" + "@cbor-extract/cbor-extract-linux-x64" "2.1.1" + "@cbor-extract/cbor-extract-win32-x64" "2.1.1" + +cbor-x@^1.5.2: + version "1.5.4" + resolved "https://registry.yarnpkg.com/cbor-x/-/cbor-x-1.5.4.tgz#8f0754fa8589cbd7339b613b2b5717d133508e98" + integrity sha512-PVKILDn+Rf6MRhhcyzGXi5eizn1i0i3F8Fe6UMMxXBnWkalq9+C5+VTmlIjAYM4iF2IYF2N+zToqAfYOp+3rfw== + optionalDependencies: + cbor-extract "^2.1.1" chalk@^1.0.0, chalk@^1.1.3: version "1.1.3" @@ -8691,6 +8733,13 @@ cross-fetch@^3.0.5: dependencies: node-fetch "^2.6.12" +cross-fetch@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-4.0.0.tgz#f037aef1580bb3a1a35164ea2a848ba81b445983" + integrity sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g== + dependencies: + node-fetch "^2.6.12" + cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" @@ -9741,19 +9790,6 @@ elkjs@^0.8.2: resolved "https://registry.yarnpkg.com/elkjs/-/elkjs-0.8.2.tgz#c37763c5a3e24e042e318455e0147c912a7c248e" integrity sha512-L6uRgvZTH+4OF5NE/MBbzQx/WYpru1xCBE9respNj6qznEewGUIfhzmm7horWWxbNO2M0WckQypGctR8lH79xQ== -elliptic@^6.5.3, elliptic@^6.5.4: - version "6.5.4" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" - integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" - emittery@^0.13.1: version "0.13.1" resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" @@ -11673,14 +11709,6 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - hdr-histogram-js@^2.0.1: version "2.0.3" resolved "https://registry.yarnpkg.com/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz#0b860534655722b6e3f3e7dca7b78867cf43dcb5" @@ -11710,15 +11738,6 @@ helmet@7.0.0: resolved "https://registry.yarnpkg.com/helmet/-/helmet-7.0.0.tgz#ac3011ba82fa2467f58075afa58a49427ba6212d" integrity sha512-MsIgYmdBh460ZZ8cJC81q4XJknjG567wzEmv46WOBblDb6TUd3z8/GhgmsM9pn8g2B80tAJ4m5/d3Bi1KrSUBQ== -hmac-drbg@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - hosted-git-info@^2.1.4: version "2.8.9" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" @@ -13490,11 +13509,6 @@ jsprim@^2.0.2: json-schema "0.4.0" verror "1.10.0" -jsrsasign@^10.4.0: - version "10.8.6" - resolved "https://registry.yarnpkg.com/jsrsasign/-/jsrsasign-10.8.6.tgz#ebf7f3c812c6517af84f0d8a10115e0dbfabe145" - integrity sha512-bQmbVtsfbgaKBTWCKiDCPlUPbdlRIK/FzSwT3BzIgZl/cU6TqXu6pZJsCI/dJVrZ9Gir5GC4woqw9shH/v7MBw== - jwa@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a" @@ -13513,15 +13527,6 @@ jwa@^2.0.0: ecdsa-sig-formatter "1.0.11" safe-buffer "^5.0.1" -jwk-to-pem@^2.0.4: - version "2.0.5" - resolved "https://registry.yarnpkg.com/jwk-to-pem/-/jwk-to-pem-2.0.5.tgz#151310bcfbcf731adc5ad9f379cbc8b395742906" - integrity sha512-L90jwellhO8jRKYwbssU9ifaMVqajzj3fpRjDKcsDzrslU9syRbFqfkXtT4B89HYAap+xsxNcxgBSB09ig+a7A== - dependencies: - asn1.js "^5.3.0" - elliptic "^6.5.4" - safe-buffer "^5.0.1" - jws@^3.2.2: version "3.2.2" resolved "https://registry.yarnpkg.com/jws/-/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304" @@ -14226,16 +14231,11 @@ mini-css-extract-plugin@~2.4.7: dependencies: schema-utils "^4.0.0" -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: +minimalistic-assert@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== -minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== - minimatch@3.0.5: version "3.0.5" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.5.tgz#4da8f1290ee0f0f8e83d60ca69f8f134068604a3" @@ -14600,7 +14600,7 @@ node-fetch-native@^1.0.2: resolved "https://registry.yarnpkg.com/node-fetch-native/-/node-fetch-native-1.2.0.tgz#13ec6df98f33168958dbfb6945f10aedf42e7ea8" integrity sha512-5IAMBTl9p6PaAjYCnMv5FmqIF6GcZnawAVnzaCG0rX2aYZJ4CxEkZNtVPuTRug7fL7wyM5BQYTlAzcyMPi6oTQ== -node-fetch@^2.0.0, node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.12, node-fetch@^2.6.7: +node-fetch@^2.0.0, node-fetch@^2.6.1, node-fetch@^2.6.12, node-fetch@^2.6.7: version "2.6.12" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.12.tgz#02eb8e22074018e3d5a83016649d04df0e348fba" integrity sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g== @@ -14612,6 +14612,11 @@ node-forge@^1, node-forge@^1.3.1: resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== +node-gyp-build-optional-packages@5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.3.tgz#92a89d400352c44ad3975010368072b41ad66c17" + integrity sha512-k75jcVzk5wnnc/FMxsf4udAoTEUv2jY3ycfdSd3yWu6Cnd1oee6/CfZJApyscA4FJOmdoixWwiwOyf16RzD5JA== + node-gyp-build-optional-packages@5.0.7: version "5.0.7" resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.7.tgz#5d2632bbde0ab2f6e22f1bbac2199b07244ae0b3" @@ -14654,18 +14659,6 @@ node-releases@^2.0.12: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d" integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== -node-rsa@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/node-rsa/-/node-rsa-1.1.1.tgz#efd9ad382097782f506153398496f79e4464434d" - integrity sha512-Jd4cvbJMryN21r5HgxQOpMEqv+ooke/korixNNK3mGqfGJmy0M77WDDzo/05969+OkMy3XW1UuZsSmW9KQm7Fw== - dependencies: - asn1 "^0.2.4" - -nofilter@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/nofilter/-/nofilter-1.0.4.tgz#78d6f4b6a613e7ced8b015cec534625f7667006e" - integrity sha512-N8lidFp+fCz+TD51+haYdbDGrcBWwuHX40F5+z0qkUjMJ5Tp+rdSuAkMJ9N9eoolDlEVTf6u5icM+cNKkKW2mA== - non-layered-tidy-tree-layout@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/non-layered-tidy-tree-layout/-/non-layered-tidy-tree-layout-2.0.2.tgz#57d35d13c356643fc296a55fb11ac15e74da7804" From 32df7620d90c65102e97d9495eb60955b2bb2373 Mon Sep 17 00:00:00 2001 From: Manushreshta B L <77065548+M27afk@users.noreply.github.com> Date: Tue, 17 Oct 2023 22:03:22 +0530 Subject: [PATCH 03/29] Add support for creating asset profiles with MANUAL data source (#2479) * Add support for creating asset profiles with MANUAL data source * Refactoring * Update changelog --------- Co-authored-by: Thomas <4159106+dtslvr@users.noreply.github.com> --- CHANGELOG.md | 1 + apps/api/src/app/admin/admin.controller.ts | 7 ++- apps/api/src/app/admin/admin.service.ts | 11 +++- ...create-asset-profile-dialog.component.scss | 3 + .../create-asset-profile-dialog.component.ts | 62 +++++++++++++++---- .../create-asset-profile-dialog.html | 38 +++++++++--- .../create-asset-profile-dialog.module.ts | 4 ++ 7 files changed, 104 insertions(+), 22 deletions(-) create mode 100644 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.component.scss diff --git a/CHANGELOG.md b/CHANGELOG.md index ba9a7d750..2c3f4dd80 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Added the endpoint `GET api/v1/account/:id/balances` which provides historical cash balances - Added support to search for an asset profile by `isin`, `name` and `symbol` as an administrator (experimental) +- Added support for creating asset profiles with `MANUAL` data source ### Changed diff --git a/apps/api/src/app/admin/admin.controller.ts b/apps/api/src/app/admin/admin.controller.ts index 30270d0c1..a19b17d4a 100644 --- a/apps/api/src/app/admin/admin.controller.ts +++ b/apps/api/src/app/admin/admin.controller.ts @@ -398,8 +398,11 @@ export class AdminController { StatusCodes.FORBIDDEN ); } - - return this.adminService.addAssetProfile({ dataSource, symbol }); + return this.adminService.addAssetProfile({ + dataSource, + symbol, + currency: this.request.user.Settings.settings.baseCurrency + }); } @Delete('profile-data/:dataSource/:symbol') diff --git a/apps/api/src/app/admin/admin.service.ts b/apps/api/src/app/admin/admin.service.ts index 173854ea7..84ae5934c 100644 --- a/apps/api/src/app/admin/admin.service.ts +++ b/apps/api/src/app/admin/admin.service.ts @@ -41,10 +41,19 @@ export class AdminService { ) {} public async addAssetProfile({ + currency, dataSource, symbol - }: UniqueAsset): Promise { + }: UniqueAsset & { currency?: string }): Promise { try { + if (dataSource === 'MANUAL') { + return this.symbolProfileService.add({ + currency, + dataSource, + symbol + }); + } + const assetProfiles = await this.dataProviderService.getAssetProfiles([ { dataSource, symbol } ]); diff --git a/apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.component.scss b/apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.component.scss new file mode 100644 index 000000000..5d4e87f30 --- /dev/null +++ b/apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.component.scss @@ -0,0 +1,3 @@ +:host { + display: block; +} 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 c3c2fb2eb..eea8898c1 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 @@ -1,15 +1,15 @@ import { ChangeDetectionStrategy, - ChangeDetectorRef, Component, - Inject, OnDestroy, OnInit } from '@angular/core'; import { + AbstractControl, FormBuilder, FormControl, FormGroup, + ValidationErrors, Validators } from '@angular/forms'; import { MatDialogRef } from '@angular/material/dialog'; @@ -19,35 +19,75 @@ import { AdminService } from '@ghostfolio/client/services/admin.service'; changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'h-100' }, selector: 'gf-create-asset-profile-dialog', + styleUrls: ['./create-asset-profile-dialog.component.scss'], templateUrl: 'create-asset-profile-dialog.html' }) export class CreateAssetProfileDialog implements OnInit, OnDestroy { public createAssetProfileForm: FormGroup; + public mode: 'auto' | 'manual'; public constructor( public readonly adminService: AdminService, - public readonly changeDetectorRef: ChangeDetectorRef, public readonly dialogRef: MatDialogRef, public readonly formBuilder: FormBuilder ) {} public ngOnInit() { - this.createAssetProfileForm = this.formBuilder.group({ - searchSymbol: new FormControl(null, [Validators.required]) - }); + this.createAssetProfileForm = this.formBuilder.group( + { + addSymbol: new FormControl(null, [Validators.required]), + searchSymbol: new FormControl(null, [Validators.required]) + }, + { + validators: this.atLeastOneValid + } + ); + + this.mode = 'auto'; } public onCancel() { this.dialogRef.close(); } + public onRadioChange(mode: 'auto' | 'manual') { + this.mode = mode; + } + public onSubmit() { - this.dialogRef.close({ - dataSource: - this.createAssetProfileForm.controls['searchSymbol'].value.dataSource, - symbol: this.createAssetProfileForm.controls['searchSymbol'].value.symbol - }); + this.mode === 'auto' + ? this.dialogRef.close({ + dataSource: + this.createAssetProfileForm.controls['searchSymbol'].value + .dataSource, + symbol: + this.createAssetProfileForm.controls['searchSymbol'].value.symbol + }) + : this.dialogRef.close({ + dataSource: 'MANUAL', + symbol: this.createAssetProfileForm.controls['addSymbol'].value + }); } public ngOnDestroy() {} + + private atLeastOneValid(control: AbstractControl): ValidationErrors { + const addSymbolControl = control.get('addSymbol'); + const searchSymbolControl = control.get('searchSymbol'); + + if (addSymbolControl.valid && searchSymbolControl.valid) { + return { atLeastOneValid: true }; + } + + if ( + addSymbolControl.valid || + !addSymbolControl || + searchSymbolControl.valid || + !searchSymbolControl + ) { + return { atLeastOneValid: false }; + } + + return { atLeastOneValid: true }; + } } diff --git a/apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html b/apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html index 43eadf93e..e7ed9352a 100644 --- a/apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html +++ b/apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -6,13 +6,35 @@ >

Add Asset Profile

- - Name, symbol or ISIN - - +
+ + + + + + + +
+ +
+ + Name, symbol or ISIN + + +
+
+ + Symbol + + +
@@ -20,7 +42,7 @@ color="primary" mat-flat-button type="submit" - [disabled]="!createAssetProfileForm.valid" + [disabled]="createAssetProfileForm.hasError('atLeastOneValid')" > Save diff --git a/apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.module.ts b/apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.module.ts index e99d8f788..2d50200c4 100644 --- a/apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.module.ts +++ b/apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.module.ts @@ -4,6 +4,8 @@ import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { MatButtonModule } from '@angular/material/button'; import { MatDialogModule } from '@angular/material/dialog'; import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatInputModule } from '@angular/material/input'; +import { MatRadioModule } from '@angular/material/radio'; import { GfSymbolAutocompleteModule } from '@ghostfolio/ui/symbol-autocomplete'; import { CreateAssetProfileDialog } from './create-asset-profile-dialog.component'; @@ -17,6 +19,8 @@ import { CreateAssetProfileDialog } from './create-asset-profile-dialog.componen MatDialogModule, MatButtonModule, MatFormFieldModule, + MatInputModule, + MatRadioModule, ReactiveFormsModule ], schemas: [CUSTOM_ELEMENTS_SCHEMA] From 0375b938a20d5d4b6e6f7cd5167fd36eec327b58 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Tue, 17 Oct 2023 20:14:46 +0200 Subject: [PATCH 04/29] Add confirmation dialog (#2501) --- .../admin-market-data.component.ts | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/apps/client/src/app/components/admin-market-data/admin-market-data.component.ts b/apps/client/src/app/components/admin-market-data/admin-market-data.component.ts index 0ffa77bf0..bcf7679d0 100644 --- a/apps/client/src/app/components/admin-market-data/admin-market-data.component.ts +++ b/apps/client/src/app/components/admin-market-data/admin-market-data.component.ts @@ -178,10 +178,20 @@ export class AdminMarketDataComponent } public onDeleteProfileData({ dataSource, symbol }: UniqueAsset) { - this.adminService - .deleteProfileData({ dataSource, symbol }) - .pipe(takeUntil(this.unsubscribeSubject)) - .subscribe(() => {}); + const confirmation = confirm( + $localize`Do you really want to delete this asset profile?` + ); + + if (confirmation) { + this.adminService + .deleteProfileData({ dataSource, symbol }) + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe(() => { + setTimeout(() => { + window.location.reload(); + }, 300); + }); + } } public onGather7Days() { From 74278073b32d325e41c5bdea383a3c760bb5588b Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Tue, 17 Oct 2023 20:36:01 +0200 Subject: [PATCH 05/29] Bugfix/fix query to get asset profiles matching data source and symbol (#2504) * Match dataSource and symbol * Update changelog --- CHANGELOG.md | 1 + .../symbol-profile/symbol-profile.service.ts | 20 ++++++------------- 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2c3f4dd80..33f52cbcc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Displayed the transfer cash balance button based on a permission - Fixed the biometric authentication +- Fixed the query to get asset profiles that match both the `dataSource` and `symbol` values ## 2.11.0 - 2023-10-14 diff --git a/apps/api/src/services/symbol-profile/symbol-profile.service.ts b/apps/api/src/services/symbol-profile/symbol-profile.service.ts index 99244c352..b861ccf8f 100644 --- a/apps/api/src/services/symbol-profile/symbol-profile.service.ts +++ b/apps/api/src/services/symbol-profile/symbol-profile.service.ts @@ -52,20 +52,12 @@ export class SymbolProfileService { SymbolProfileOverrides: true }, where: { - AND: [ - { - dataSource: { - in: aUniqueAssets.map(({ dataSource }) => { - return dataSource; - }) - }, - symbol: { - in: aUniqueAssets.map(({ symbol }) => { - return symbol; - }) - } - } - ] + OR: aUniqueAssets.map(({ dataSource, symbol }) => { + return { + dataSource, + symbol + }; + }) } }) .then((symbolProfiles) => this.getSymbols(symbolProfiles)); From 653c9c62a89fa7cca0166edc469befe73178746e Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Tue, 17 Oct 2023 20:42:32 +0200 Subject: [PATCH 06/29] Sort imports (#2490) --- .../user-account-access/user-account-access.module.ts | 2 +- .../create-or-update-account-dialog.module.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/client/src/app/components/user-account-access/user-account-access.module.ts b/apps/client/src/app/components/user-account-access/user-account-access.module.ts index 0388dd244..fb3346ae0 100644 --- a/apps/client/src/app/components/user-account-access/user-account-access.module.ts +++ b/apps/client/src/app/components/user-account-access/user-account-access.module.ts @@ -1,5 +1,6 @@ import { CommonModule } from '@angular/common'; import { NgModule } from '@angular/core'; +import { MatButtonModule } from '@angular/material/button'; import { MatDialogModule } from '@angular/material/dialog'; import { RouterModule } from '@angular/router'; import { GfPortfolioAccessTableModule } from '@ghostfolio/client/components/access-table/access-table.module'; @@ -7,7 +8,6 @@ import { GfPremiumIndicatorModule } from '@ghostfolio/ui/premium-indicator'; import { GfCreateOrUpdateAccessDialogModule } from './create-or-update-access-dialog/create-or-update-access-dialog.module'; import { UserAccountAccessComponent } from './user-account-access.component'; -import { MatButtonModule } from '@angular/material/button'; @NgModule({ declarations: [UserAccountAccessComponent], diff --git a/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.module.ts b/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.module.ts index 0f8b8ecb8..22ec5e1f8 100644 --- a/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.module.ts +++ b/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.module.ts @@ -1,13 +1,13 @@ import { CommonModule } from '@angular/common'; import { NgModule } from '@angular/core'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { MatAutocompleteModule } from '@angular/material/autocomplete'; import { MatButtonModule } from '@angular/material/button'; import { MatCheckboxModule } from '@angular/material/checkbox'; import { MatDialogModule } from '@angular/material/dialog'; import { MatFormFieldModule } from '@angular/material/form-field'; import { MatInputModule } from '@angular/material/input'; import { MatSelectModule } from '@angular/material/select'; -import { MatAutocompleteModule } from '@angular/material/autocomplete'; import { GfSymbolIconModule } from '@ghostfolio/client/components/symbol-icon/symbol-icon.module'; import { CreateOrUpdateAccountDialog } from './create-or-update-account-dialog.component'; From 84db54babdc2bd2a42ab620aaa91f5bb3eeb307a Mon Sep 17 00:00:00 2001 From: RaviTejaVattem <43704759+RaviTejaVattem@users.noreply.github.com> Date: Tue, 17 Oct 2023 19:49:54 +0100 Subject: [PATCH 07/29] Change checkboxes to slide toggles on user settings page (#2497) * Change checkboxes to slide toggles on user settings page * Update changelog --- CHANGELOG.md | 1 + .../user-account-settings.component.ts | 10 +++++----- .../user-account-settings.html | 20 +++++++++++-------- .../user-account-settings.module.ts | 4 ++-- apps/client/src/styles.scss | 9 +++++++++ 5 files changed, 29 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 33f52cbcc..72f8eca9a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Changed the checkboxes to slide toggles in the user settings of the user account page - Extended the `copy-assets` `Nx` target to copy the locales to the server’s assets - Upgraded `@simplewebauthn/browser` and `@simplewebauthn/server` from version `5.2.1` to `8.3` diff --git a/apps/client/src/app/components/user-account-settings/user-account-settings.component.ts b/apps/client/src/app/components/user-account-settings/user-account-settings.component.ts index 6fb8d5c15..3fb3592e0 100644 --- a/apps/client/src/app/components/user-account-settings/user-account-settings.component.ts +++ b/apps/client/src/app/components/user-account-settings/user-account-settings.component.ts @@ -5,7 +5,7 @@ import { OnDestroy, OnInit } from '@angular/core'; -import { MatCheckboxChange } from '@angular/material/checkbox'; +import { MatSlideToggleChange } from '@angular/material/slide-toggle'; import { DataService } from '@ghostfolio/client/services/data.service'; import { STAY_SIGNED_IN, @@ -117,7 +117,7 @@ export class UserAccountSettingsComponent implements OnDestroy, OnInit { }); } - public onExperimentalFeaturesChange(aEvent: MatCheckboxChange) { + public onExperimentalFeaturesChange(aEvent: MatSlideToggleChange) { this.dataService .putUserSetting({ isExperimentalFeatures: aEvent.checked }) .pipe(takeUntil(this.unsubscribeSubject)) @@ -155,7 +155,7 @@ export class UserAccountSettingsComponent implements OnDestroy, OnInit { }); } - public onRestrictedViewChange(aEvent: MatCheckboxChange) { + public onRestrictedViewChange(aEvent: MatSlideToggleChange) { this.dataService .putUserSetting({ isRestrictedView: aEvent.checked }) .pipe(takeUntil(this.unsubscribeSubject)) @@ -173,7 +173,7 @@ export class UserAccountSettingsComponent implements OnDestroy, OnInit { }); } - public onSignInWithFingerprintChange(aEvent: MatCheckboxChange) { + public onSignInWithFingerprintChange(aEvent: MatSlideToggleChange) { if (aEvent.checked) { this.registerDevice(); } else { @@ -189,7 +189,7 @@ export class UserAccountSettingsComponent implements OnDestroy, OnInit { } } - public onViewModeChange(aEvent: MatCheckboxChange) { + public onViewModeChange(aEvent: MatSlideToggleChange) { this.dataService .putUserSetting({ viewMode: aEvent.checked === true ? 'ZEN' : 'DEFAULT' }) .pipe(takeUntil(this.unsubscribeSubject)) diff --git a/apps/client/src/app/components/user-account-settings/user-account-settings.html b/apps/client/src/app/components/user-account-settings/user-account-settings.html index 66829d55e..87762d449 100644 --- a/apps/client/src/app/components/user-account-settings/user-account-settings.html +++ b/apps/client/src/app/components/user-account-settings/user-account-settings.html @@ -11,12 +11,13 @@
- + >
@@ -139,12 +140,13 @@
- + >
@@ -153,12 +155,13 @@
Sign in with fingerprint
- + >
- + >
diff --git a/apps/client/src/app/components/user-account-settings/user-account-settings.module.ts b/apps/client/src/app/components/user-account-settings/user-account-settings.module.ts index 24e57ff20..7a40cf641 100644 --- a/apps/client/src/app/components/user-account-settings/user-account-settings.module.ts +++ b/apps/client/src/app/components/user-account-settings/user-account-settings.module.ts @@ -3,9 +3,9 @@ import { NgModule } from '@angular/core'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { MatButtonModule } from '@angular/material/button'; import { MatCardModule } from '@angular/material/card'; -import { MatCheckboxModule } from '@angular/material/checkbox'; import { MatFormFieldModule } from '@angular/material/form-field'; import { MatSelectModule } from '@angular/material/select'; +import { MatSlideToggleModule } from '@angular/material/slide-toggle'; import { RouterModule } from '@angular/router'; import { GfValueModule } from '@ghostfolio/ui/value'; @@ -20,9 +20,9 @@ import { UserAccountSettingsComponent } from './user-account-settings.component' GfValueModule, MatButtonModule, MatCardModule, - MatCheckboxModule, MatFormFieldModule, MatSelectModule, + MatSlideToggleModule, ReactiveFormsModule, RouterModule ] diff --git a/apps/client/src/styles.scss b/apps/client/src/styles.scss index 36099a249..175194cac 100644 --- a/apps/client/src/styles.scss +++ b/apps/client/src/styles.scss @@ -462,6 +462,15 @@ ngx-skeleton-loader { } } +/** + * Fix for https://github.com/angular/components/issues/26818 + */ +.mat-mdc-slide-toggle { + .mdc-switch__track { + background-color: rgba(var(--palette-primary-500), 1); + } +} + .mat-stepper-vertical, .mat-stepper-horizontal { background: transparent !important; From ea65dc5034eeb88605824646e0045506fde45288 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Tue, 17 Oct 2023 20:52:02 +0200 Subject: [PATCH 08/29] Release 2.12.0 (#2505) --- CHANGELOG.md | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 72f8eca9a..e8b280ac2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 2.12.0 - 2023-10-17 ### Added diff --git a/package.json b/package.json index 5bc51418d..3b5247252 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ghostfolio", - "version": "2.11.0", + "version": "2.12.0", "homepage": "https://ghostfol.io", "license": "AGPL-3.0", "repository": "https://github.com/ghostfolio/ghostfolio", From 016634a77ff6e7b45c026aa79ce6482c0c390dad Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Wed, 18 Oct 2023 17:35:07 +0200 Subject: [PATCH 09/29] Feature/setup i18n page (#2508) * Setup i18n page * Add meta description --- apps/client/src/app/app-routing.module.ts | 5 + .../pages/i18n/i18n-page-routing.module.ts | 19 ++ .../src/app/pages/i18n/i18n-page.component.ts | 21 ++ apps/client/src/app/pages/i18n/i18n-page.html | 10 + .../src/app/pages/i18n/i18n-page.module.ts | 12 + apps/client/src/app/pages/i18n/i18n-page.scss | 3 + apps/client/src/locales/messages.de.xlf | 258 ++++++++++------- apps/client/src/locales/messages.es.xlf | 260 +++++++++++------- apps/client/src/locales/messages.fr.xlf | 260 +++++++++++------- apps/client/src/locales/messages.it.xlf | 260 +++++++++++------- apps/client/src/locales/messages.nl.xlf | 260 +++++++++++------- apps/client/src/locales/messages.pt.xlf | 260 +++++++++++------- apps/client/src/locales/messages.tr.xlf | 260 +++++++++++------- apps/client/src/locales/messages.xlf | 249 ++++++++++------- 14 files changed, 1325 insertions(+), 812 deletions(-) create mode 100644 apps/client/src/app/pages/i18n/i18n-page-routing.module.ts create mode 100644 apps/client/src/app/pages/i18n/i18n-page.component.ts create mode 100644 apps/client/src/app/pages/i18n/i18n-page.html create mode 100644 apps/client/src/app/pages/i18n/i18n-page.module.ts create mode 100644 apps/client/src/app/pages/i18n/i18n-page.scss diff --git a/apps/client/src/app/app-routing.module.ts b/apps/client/src/app/app-routing.module.ts index f82bad864..26080e884 100644 --- a/apps/client/src/app/app-routing.module.ts +++ b/apps/client/src/app/app-routing.module.ts @@ -73,6 +73,11 @@ const routes: Routes = [ loadChildren: () => import('./pages/home/home-page.module').then((m) => m.HomePageModule) }, + { + path: 'i18n', + loadChildren: () => + import('./pages/i18n/i18n-page.module').then((m) => m.I18nPageModule) + }, { path: paths.markets, loadChildren: () => diff --git a/apps/client/src/app/pages/i18n/i18n-page-routing.module.ts b/apps/client/src/app/pages/i18n/i18n-page-routing.module.ts new file mode 100644 index 000000000..9965121ca --- /dev/null +++ b/apps/client/src/app/pages/i18n/i18n-page-routing.module.ts @@ -0,0 +1,19 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; +import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; + +import { I18nPageComponent } from './i18n-page.component'; + +const routes: Routes = [ + { + canActivate: [AuthGuard], + component: I18nPageComponent, + path: '' + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class I18nPageRoutingModule {} diff --git a/apps/client/src/app/pages/i18n/i18n-page.component.ts b/apps/client/src/app/pages/i18n/i18n-page.component.ts new file mode 100644 index 000000000..46837fa57 --- /dev/null +++ b/apps/client/src/app/pages/i18n/i18n-page.component.ts @@ -0,0 +1,21 @@ +import { Component, OnInit } from '@angular/core'; +import { Subject } from 'rxjs'; + +@Component({ + host: { class: 'page' }, + selector: 'gf-i18n-page', + styleUrls: ['./i18n-page.scss'], + templateUrl: './i18n-page.html' +}) +export class I18nPageComponent implements OnInit { + private unsubscribeSubject = new Subject(); + + public constructor() {} + + public ngOnInit() {} + + public ngOnDestroy() { + this.unsubscribeSubject.next(); + this.unsubscribeSubject.complete(); + } +} diff --git a/apps/client/src/app/pages/i18n/i18n-page.html b/apps/client/src/app/pages/i18n/i18n-page.html new file mode 100644 index 000000000..1ace8e297 --- /dev/null +++ b/apps/client/src/app/pages/i18n/i18n-page.html @@ -0,0 +1,10 @@ +
+
+
    +
  • + Ghostfolio is a personal finance dashboard to keep track of your assets + like stocks, ETFs or cryptocurrencies across multiple platforms. +
  • +
+
+
diff --git a/apps/client/src/app/pages/i18n/i18n-page.module.ts b/apps/client/src/app/pages/i18n/i18n-page.module.ts new file mode 100644 index 000000000..5b5580ebf --- /dev/null +++ b/apps/client/src/app/pages/i18n/i18n-page.module.ts @@ -0,0 +1,12 @@ +import { CommonModule } from '@angular/common'; +import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; + +import { I18nPageRoutingModule } from './i18n-page-routing.module'; +import { I18nPageComponent } from './i18n-page.component'; + +@NgModule({ + declarations: [I18nPageComponent], + imports: [CommonModule, I18nPageRoutingModule], + schemas: [CUSTOM_ELEMENTS_SCHEMA] +}) +export class I18nPageModule {} diff --git a/apps/client/src/app/pages/i18n/i18n-page.scss b/apps/client/src/app/pages/i18n/i18n-page.scss new file mode 100644 index 000000000..5d4e87f30 --- /dev/null +++ b/apps/client/src/app/pages/i18n/i18n-page.scss @@ -0,0 +1,3 @@ +:host { + display: block; +} diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index e4e1223ea..21c260c5d 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -30,7 +30,7 @@ Empfänger apps/client/src/app/components/access-table/access-table.component.html - 22 + 10 @@ -38,7 +38,7 @@ Typ apps/client/src/app/components/access-table/access-table.component.html - 29 + 17 apps/client/src/app/components/admin-jobs/admin-jobs.html @@ -62,7 +62,7 @@ Details apps/client/src/app/components/access-table/access-table.component.html - 39 + 27 @@ -70,7 +70,7 @@ Widerrufen apps/client/src/app/components/access-table/access-table.component.html - 66 + 54 @@ -78,7 +78,7 @@ Möchtest du diese Zugangsberechtigung wirklich widerrufen? apps/client/src/app/components/access-table/access-table.component.ts - 50 + 49 @@ -98,7 +98,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 81 + 111 apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -282,7 +282,7 @@ Jobs löschen apps/client/src/app/components/admin-jobs/admin-jobs.html - 140 + 135 @@ -290,7 +290,7 @@ Symbol apps/client/src/app/components/admin-jobs/admin-jobs.html - 50 + 45 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -298,7 +298,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 57 + 87 + + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 34 @@ -306,7 +310,7 @@ Datenquelle apps/client/src/app/components/admin-jobs/admin-jobs.html - 59 + 54 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -322,7 +326,7 @@ Versuche apps/client/src/app/components/admin-jobs/admin-jobs.html - 68 + 63 @@ -330,7 +334,7 @@ Erstellt apps/client/src/app/components/admin-jobs/admin-jobs.html - 77 + 72 @@ -338,7 +342,7 @@ Abgeschlossen apps/client/src/app/components/admin-jobs/admin-jobs.html - 86 + 81 @@ -346,23 +350,23 @@ Status apps/client/src/app/components/admin-jobs/admin-jobs.html - 95 + 90 - - Asset Profile - Anlageprofil + + Asset Profiles + Anlageprofile - apps/client/src/app/components/admin-jobs/admin-jobs.html - 37 + libs/ui/src/lib/assistant/assistant.html + 67 - - Historical Market Data + + Historical Market Data Historische Marktdaten apps/client/src/app/components/admin-jobs/admin-jobs.html - 42 + 37,39 @@ -370,7 +374,7 @@ Daten anzeigen apps/client/src/app/components/admin-jobs/admin-jobs.html - 155 + 150 @@ -378,7 +382,7 @@ Stacktrace anzeigen apps/client/src/app/components/admin-jobs/admin-jobs.html - 162 + 157 @@ -386,7 +390,7 @@ Job löschen apps/client/src/app/components/admin-jobs/admin-jobs.html - 165 + 160 @@ -434,11 +438,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 195 + 225 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 18 + 40 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -454,7 +458,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 95 + 97 apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html @@ -478,11 +482,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 202 + 232 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 25 + 47 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -498,7 +502,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 102 + 104 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -514,7 +518,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 72 + 102 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -536,6 +540,10 @@ apps/client/src/app/components/admin-market-data/admin-market-data.html 78 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 58 + Please add a currency: @@ -710,7 +718,7 @@ apps/client/src/app/components/header/header.component.html - 189 + 192 @@ -754,7 +762,7 @@ apps/client/src/app/components/header/header.component.html - 203 + 206 @@ -766,7 +774,7 @@ apps/client/src/app/components/header/header.component.html - 213 + 216 @@ -786,7 +794,7 @@ apps/client/src/app/components/header/header.component.html - 221 + 224 apps/client/src/app/pages/accounts/accounts-page.html @@ -802,7 +810,7 @@ apps/client/src/app/components/header/header.component.html - 237 + 240 @@ -818,7 +826,7 @@ apps/client/src/app/components/header/header.component.html - 248 + 251 apps/client/src/app/pages/resources/resources-page.html @@ -838,11 +846,11 @@ apps/client/src/app/components/header/header.component.html - 260 + 263 apps/client/src/app/components/header/header.component.html - 329 + 332 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html @@ -974,7 +982,7 @@ apps/client/src/app/components/header/header.component.html - 316 + 319 @@ -982,7 +990,7 @@ Ich apps/client/src/app/components/header/header.component.html - 170 + 173 @@ -990,7 +998,7 @@ Mein Ghostfolio apps/client/src/app/components/header/header.component.html - 228 + 231 @@ -998,7 +1006,7 @@ Über Ghostfolio apps/client/src/app/components/header/header.component.html - 268 + 271 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -1014,7 +1022,7 @@ apps/client/src/app/components/header/header.component.html - 303 + 306 apps/client/src/app/pages/features/features-page.html @@ -1030,7 +1038,7 @@ apps/client/src/app/components/header/header.component.html - 345 + 348 apps/client/src/app/components/home-market/home-market.html @@ -1166,7 +1174,7 @@ Einloggen apps/client/src/app/components/header/header.component.html - 358 + 361 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1356,7 +1364,7 @@ Sektoren apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 125 + 155 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1372,7 +1380,7 @@ Länder apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 135 + 165 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1700,7 +1708,7 @@ Möchtest du diese Anmeldemethode wirklich löschen? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 184 + 181 @@ -1772,7 +1780,7 @@ Basiswährung apps/client/src/app/components/user-account-settings/user-account-settings.html - 26 + 27 @@ -1780,7 +1788,7 @@ Lokalität apps/client/src/app/components/user-account-settings/user-account-settings.html - 90 + 91 @@ -1788,7 +1796,7 @@ Datums- und Zahlenformat apps/client/src/app/components/user-account-settings/user-account-settings.html - 92 + 93 @@ -1796,7 +1804,7 @@ Zen Modus apps/client/src/app/components/user-account-settings/user-account-settings.html - 136 + 137 apps/client/src/app/pages/features/features-page.html @@ -1808,7 +1816,7 @@ Einloggen mit Fingerabdruck apps/client/src/app/components/user-account-settings/user-account-settings.html - 153 + 155 @@ -1816,7 +1824,7 @@ Benutzer ID apps/client/src/app/components/user-account-settings/user-account-settings.html - 184 + 188 @@ -1884,7 +1892,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 62 + 92 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -1928,7 +1936,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 44 + 46 @@ -1936,7 +1944,7 @@ Konto ID apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 89 + 91 @@ -2252,7 +2260,7 @@ Name, Symbol oder ISIN apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 10 + 25 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2312,11 +2320,11 @@ Kommentar apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 182 + 212 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 72 + 74 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2332,7 +2340,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 86 + 116 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2572,7 +2580,7 @@ Änderung vom Allzeithoch libs/ui/src/lib/benchmark/benchmark.component.html - 12 + 31 @@ -2580,7 +2588,7 @@ vom AZH libs/ui/src/lib/benchmark/benchmark.component.html - 14 + 33 @@ -2604,7 +2612,7 @@ Sprache apps/client/src/app/components/user-account-settings/user-account-settings.html - 47 + 48 @@ -2612,7 +2620,7 @@ Registrieren apps/client/src/app/components/header/header.component.html - 370 + 373 @@ -2700,7 +2708,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 95 + 125 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2716,7 +2724,7 @@ Sektor apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 110 + 140 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2728,7 +2736,7 @@ Land apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 119 + 149 apps/client/src/app/components/admin-users/admin-users.html @@ -2872,7 +2880,7 @@ Filtern nach... apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 269 + 279 @@ -2904,7 +2912,7 @@ Alias apps/client/src/app/components/access-table/access-table.component.html - 15 + 3 apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html @@ -2924,7 +2932,7 @@ Experimentelle Funktionen apps/client/src/app/components/user-account-settings/user-account-settings.html - 169 + 172 @@ -2964,7 +2972,7 @@ Automatisch apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 35 + 31 @@ -2972,7 +2980,7 @@ Aussehen apps/client/src/app/components/user-account-settings/user-account-settings.html - 113 + 114 @@ -2980,7 +2988,7 @@ Automatisch apps/client/src/app/components/user-account-settings/user-account-settings.html - 125 + 126 @@ -2988,7 +2996,7 @@ Hell apps/client/src/app/components/user-account-settings/user-account-settings.html - 126 + 127 @@ -2996,7 +3004,7 @@ Dunkel apps/client/src/app/components/user-account-settings/user-account-settings.html - 127 + 128 @@ -3260,27 +3268,27 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 61 + 62 apps/client/src/app/components/user-account-settings/user-account-settings.html - 65 + 66 apps/client/src/app/components/user-account-settings/user-account-settings.html - 69 + 70 apps/client/src/app/components/user-account-settings/user-account-settings.html - 73 + 74 apps/client/src/app/components/user-account-settings/user-account-settings.html - 77 + 78 apps/client/src/app/components/user-account-settings/user-account-settings.html - 81 + 82 apps/client/src/app/pages/features/features-page.html @@ -3308,7 +3316,7 @@ Symbol Zuordnung apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 160 + 190 @@ -3358,6 +3366,10 @@ Import Importieren + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 80 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html 150 @@ -3516,7 +3528,7 @@ Unbeschwertes Erlebnis für turbulente Zeiten apps/client/src/app/components/user-account-settings/user-account-settings.html - 137,139 + 138,140 @@ -3524,7 +3536,7 @@ Vorschau auf kommende Funktionalität apps/client/src/app/components/user-account-settings/user-account-settings.html - 170,172 + 173,175 @@ -4372,7 +4384,7 @@ Scraper Konfiguration apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 171 + 201 @@ -7672,7 +7684,7 @@ Biometrische Authentifizierung apps/client/src/app/components/user-account-settings/user-account-settings.html - 152 + 154 @@ -7756,7 +7768,7 @@ Daten exportieren apps/client/src/app/components/user-account-settings/user-account-settings.html - 191 + 195 @@ -10159,14 +10171,6 @@ 7 - - Add Access - Zugang hinzufügen - - apps/client/src/app/components/access-table/access-table.component.html - 8,10 - - Choose or drop a file here Wählen Sie eine Datei aus oder ziehen Sie sie hierhin @@ -10316,7 +10320,7 @@ Benchmark apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 154 + 184 @@ -10396,7 +10400,7 @@ Finde Position... libs/ui/src/lib/assistant/assistant.component.ts - 87 + 89 @@ -10404,7 +10408,59 @@ Keine Einträge vorhanden... libs/ui/src/lib/assistant/assistant.html - 62 + 63 + + + libs/ui/src/lib/assistant/assistant.html + 84 + + + + Asset Profile + Anlageprofil + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 31,33 + + + + Do you really want to delete this asset profile? + Möchtest du dieses Anlageprofil wirklich löschen? + + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 182 + + + + Search + Suche + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 16 + + + + Add Manually + Manuell hinzufügen + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 19 + + + + Ghostfolio is a personal finance dashboard to keep track of your assets like stocks, ETFs or cryptocurrencies across multiple platforms. + Mit dem Finanz-Dashboard Ghostfolio können Sie Ihr Vermögen in Form von Aktien, ETFs oder Kryptowährungen verteilt über mehrere Finanzinstitute überwachen. + + apps/client/src/app/pages/i18n/i18n-page.html + 4,7 + + + + Last All Time High + Letztes Allzeithoch + + libs/ui/src/lib/benchmark/benchmark.component.html + 15 diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index f9c69808f..935b6605d 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -31,7 +31,7 @@ Beneficiario apps/client/src/app/components/access-table/access-table.component.html - 22 + 10 @@ -39,7 +39,7 @@ Tipo apps/client/src/app/components/access-table/access-table.component.html - 29 + 17 apps/client/src/app/components/admin-jobs/admin-jobs.html @@ -63,7 +63,7 @@ Detalles apps/client/src/app/components/access-table/access-table.component.html - 39 + 27 @@ -71,7 +71,7 @@ Revoca apps/client/src/app/components/access-table/access-table.component.html - 66 + 54 @@ -79,7 +79,7 @@ ¿Quieres revocar el acceso concedido? apps/client/src/app/components/access-table/access-table.component.ts - 50 + 49 @@ -99,7 +99,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 81 + 111 apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -283,7 +283,7 @@ Elimina los trabajos apps/client/src/app/components/admin-jobs/admin-jobs.html - 140 + 135 @@ -291,7 +291,7 @@ Símbolo apps/client/src/app/components/admin-jobs/admin-jobs.html - 50 + 45 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -299,7 +299,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 57 + 87 + + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 34 @@ -307,7 +311,7 @@ Fuente de datos apps/client/src/app/components/admin-jobs/admin-jobs.html - 59 + 54 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -323,7 +327,7 @@ Intentos apps/client/src/app/components/admin-jobs/admin-jobs.html - 68 + 63 @@ -331,7 +335,7 @@ Creado apps/client/src/app/components/admin-jobs/admin-jobs.html - 77 + 72 @@ -339,7 +343,7 @@ Finalizado apps/client/src/app/components/admin-jobs/admin-jobs.html - 86 + 81 @@ -347,23 +351,23 @@ Estado apps/client/src/app/components/admin-jobs/admin-jobs.html - 95 + 90 - - Asset Profile - Perfil del activo + + Asset Profiles + Perfil del activo - apps/client/src/app/components/admin-jobs/admin-jobs.html - 37 + libs/ui/src/lib/assistant/assistant.html + 67 - - Historical Market Data - Datos históricos del mercado + + Historical Market Data + Datos históricos del mercado apps/client/src/app/components/admin-jobs/admin-jobs.html - 42 + 37,39 @@ -371,7 +375,7 @@ Visualiza los datos apps/client/src/app/components/admin-jobs/admin-jobs.html - 155 + 150 @@ -379,7 +383,7 @@ Visualiza Stacktrace apps/client/src/app/components/admin-jobs/admin-jobs.html - 162 + 157 @@ -387,7 +391,7 @@ Elimina el trabajo apps/client/src/app/components/admin-jobs/admin-jobs.html - 165 + 160 @@ -435,11 +439,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 195 + 225 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 18 + 40 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -455,7 +459,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 95 + 97 apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html @@ -479,11 +483,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 202 + 232 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 25 + 47 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -499,7 +503,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 102 + 104 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -515,7 +519,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 72 + 102 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -537,6 +541,10 @@ apps/client/src/app/components/admin-market-data/admin-market-data.html 78 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 58 + Please add a currency: @@ -711,7 +719,7 @@ apps/client/src/app/components/header/header.component.html - 189 + 192 @@ -755,7 +763,7 @@ apps/client/src/app/components/header/header.component.html - 203 + 206 @@ -767,7 +775,7 @@ apps/client/src/app/components/header/header.component.html - 213 + 216 @@ -787,7 +795,7 @@ apps/client/src/app/components/header/header.component.html - 221 + 224 apps/client/src/app/pages/accounts/accounts-page.html @@ -803,7 +811,7 @@ apps/client/src/app/components/header/header.component.html - 237 + 240 @@ -819,7 +827,7 @@ apps/client/src/app/components/header/header.component.html - 248 + 251 apps/client/src/app/pages/resources/resources-page.html @@ -839,11 +847,11 @@ apps/client/src/app/components/header/header.component.html - 260 + 263 apps/client/src/app/components/header/header.component.html - 329 + 332 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html @@ -975,7 +983,7 @@ apps/client/src/app/components/header/header.component.html - 316 + 319 @@ -983,7 +991,7 @@ apps/client/src/app/components/header/header.component.html - 170 + 173 @@ -991,7 +999,7 @@ Mi Ghostfolio apps/client/src/app/components/header/header.component.html - 228 + 231 @@ -999,7 +1007,7 @@ Sobre Ghostfolio apps/client/src/app/components/header/header.component.html - 268 + 271 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -1015,7 +1023,7 @@ apps/client/src/app/components/header/header.component.html - 303 + 306 apps/client/src/app/pages/features/features-page.html @@ -1031,7 +1039,7 @@ apps/client/src/app/components/header/header.component.html - 345 + 348 apps/client/src/app/components/home-market/home-market.html @@ -1167,7 +1175,7 @@ Iniciar sesión apps/client/src/app/components/header/header.component.html - 358 + 361 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1354,7 +1362,7 @@ Sectores apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 125 + 155 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1370,7 +1378,7 @@ Países apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 135 + 165 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1698,7 +1706,7 @@ ¿Estás seguro de eliminar este método de acceso? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 184 + 181 @@ -1770,7 +1778,7 @@ Divisa base apps/client/src/app/components/user-account-settings/user-account-settings.html - 26 + 27 @@ -1778,7 +1786,7 @@ Ubicación apps/client/src/app/components/user-account-settings/user-account-settings.html - 90 + 91 @@ -1786,7 +1794,7 @@ Formato de fecha y número apps/client/src/app/components/user-account-settings/user-account-settings.html - 92 + 93 @@ -1794,7 +1802,7 @@ Modo Zen apps/client/src/app/components/user-account-settings/user-account-settings.html - 136 + 137 apps/client/src/app/pages/features/features-page.html @@ -1806,7 +1814,7 @@ Accede con huella digital apps/client/src/app/components/user-account-settings/user-account-settings.html - 153 + 155 @@ -1814,7 +1822,7 @@ ID usuario apps/client/src/app/components/user-account-settings/user-account-settings.html - 184 + 188 @@ -1882,7 +1890,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 62 + 92 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -1926,7 +1934,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 44 + 46 @@ -1934,7 +1942,7 @@ ID cuenta apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 89 + 91 @@ -2250,7 +2258,7 @@ Nombre, símbolo o ISIN apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 10 + 25 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2310,11 +2318,11 @@ Nota apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 182 + 212 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 72 + 74 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2330,7 +2338,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 86 + 116 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2570,7 +2578,7 @@ Variación respecto al máximo histórico (ATH) libs/ui/src/lib/benchmark/benchmark.component.html - 12 + 31 @@ -2578,7 +2586,7 @@ desde el máximo histórico (ATH) libs/ui/src/lib/benchmark/benchmark.component.html - 14 + 33 @@ -2602,7 +2610,7 @@ Idioma apps/client/src/app/components/user-account-settings/user-account-settings.html - 47 + 48 @@ -2610,7 +2618,7 @@ Comenzar apps/client/src/app/components/header/header.component.html - 370 + 373 @@ -2678,7 +2686,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 95 + 125 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2734,7 +2742,7 @@ Sector apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 110 + 140 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2746,7 +2754,7 @@ País apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 119 + 149 apps/client/src/app/components/admin-users/admin-users.html @@ -2886,7 +2894,7 @@ Filtrar por... apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 269 + 279 @@ -2910,7 +2918,7 @@ Alias apps/client/src/app/components/access-table/access-table.component.html - 15 + 3 apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html @@ -2922,7 +2930,7 @@ Funcionalidades experimentales apps/client/src/app/components/user-account-settings/user-account-settings.html - 169 + 172 @@ -2962,7 +2970,7 @@ Automático apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 35 + 31 @@ -2970,7 +2978,7 @@ Apariencia apps/client/src/app/components/user-account-settings/user-account-settings.html - 113 + 114 @@ -2978,7 +2986,7 @@ Automático apps/client/src/app/components/user-account-settings/user-account-settings.html - 125 + 126 @@ -2986,7 +2994,7 @@ Claro apps/client/src/app/components/user-account-settings/user-account-settings.html - 126 + 127 @@ -2994,7 +3002,7 @@ Oscuro apps/client/src/app/components/user-account-settings/user-account-settings.html - 127 + 128 @@ -3258,27 +3266,27 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 61 + 62 apps/client/src/app/components/user-account-settings/user-account-settings.html - 65 + 66 apps/client/src/app/components/user-account-settings/user-account-settings.html - 69 + 70 apps/client/src/app/components/user-account-settings/user-account-settings.html - 73 + 74 apps/client/src/app/components/user-account-settings/user-account-settings.html - 77 + 78 apps/client/src/app/components/user-account-settings/user-account-settings.html - 81 + 82 apps/client/src/app/pages/features/features-page.html @@ -3306,7 +3314,7 @@ Mapeo de símbolos apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 160 + 190 @@ -3356,6 +3364,10 @@ Import Import + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 80 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html 150 @@ -3514,7 +3526,7 @@ Distraction-free experience for turbulent times apps/client/src/app/components/user-account-settings/user-account-settings.html - 137,139 + 138,140 @@ -3522,7 +3534,7 @@ Sneak peek at upcoming functionality apps/client/src/app/components/user-account-settings/user-account-settings.html - 170,172 + 173,175 @@ -4370,7 +4382,7 @@ Scraper Configuration apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 171 + 201 @@ -7670,7 +7682,7 @@ Biometric Authentication apps/client/src/app/components/user-account-settings/user-account-settings.html - 152 + 154 @@ -7754,7 +7766,7 @@ Export Data apps/client/src/app/components/user-account-settings/user-account-settings.html - 191 + 195 @@ -10157,14 +10169,6 @@ 7 - - Add Access - Add Access - - apps/client/src/app/components/access-table/access-table.component.html - 8,10 - - Choose or drop a file here Choose or drop a file here @@ -10314,7 +10318,7 @@ Benchmark apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 154 + 184 @@ -10394,7 +10398,7 @@ Find holding... libs/ui/src/lib/assistant/assistant.component.ts - 87 + 89 @@ -10402,7 +10406,59 @@ No entries... libs/ui/src/lib/assistant/assistant.html - 62 + 63 + + + libs/ui/src/lib/assistant/assistant.html + 84 + + + + Asset Profile + Asset Profile + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 31,33 + + + + Do you really want to delete this asset profile? + Do you really want to delete this asset profile? + + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 182 + + + + Search + Search + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 16 + + + + Add Manually + Add Manually + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 19 + + + + Ghostfolio is a personal finance dashboard to keep track of your assets like stocks, ETFs or cryptocurrencies across multiple platforms. + Ghostfolio es un dashboard de finanzas personales para hacer un seguimiento de tus activos como acciones, ETFs o criptodivisas a través de múltiples plataformas. + + apps/client/src/app/pages/i18n/i18n-page.html + 4,7 + + + + Last All Time High + Last All Time High + + libs/ui/src/lib/benchmark/benchmark.component.html + 15 diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index 68994b48e..be8a8b10b 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -14,7 +14,7 @@ Alias apps/client/src/app/components/access-table/access-table.component.html - 15 + 3 apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html @@ -26,7 +26,7 @@ Bénéficiaire apps/client/src/app/components/access-table/access-table.component.html - 22 + 10 @@ -34,7 +34,7 @@ Type apps/client/src/app/components/access-table/access-table.component.html - 29 + 17 apps/client/src/app/components/admin-jobs/admin-jobs.html @@ -58,7 +58,7 @@ Détails apps/client/src/app/components/access-table/access-table.component.html - 39 + 27 @@ -66,7 +66,7 @@ Révoquer apps/client/src/app/components/access-table/access-table.component.html - 66 + 54 @@ -74,7 +74,7 @@ Voulez-vous vraiment révoquer cet accès ? apps/client/src/app/components/access-table/access-table.component.ts - 50 + 49 @@ -90,7 +90,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 44 + 46 @@ -110,7 +110,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 81 + 111 apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -190,7 +190,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 62 + 92 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -334,7 +334,7 @@ Symbole apps/client/src/app/components/admin-jobs/admin-jobs.html - 50 + 45 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -342,7 +342,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 57 + 87 + + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 34 @@ -350,7 +354,7 @@ Source Données apps/client/src/app/components/admin-jobs/admin-jobs.html - 59 + 54 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -366,7 +370,7 @@ Tentatives apps/client/src/app/components/admin-jobs/admin-jobs.html - 68 + 63 @@ -374,7 +378,7 @@ Créé apps/client/src/app/components/admin-jobs/admin-jobs.html - 77 + 72 @@ -382,7 +386,7 @@ Terminé apps/client/src/app/components/admin-jobs/admin-jobs.html - 86 + 81 @@ -390,7 +394,7 @@ Statut apps/client/src/app/components/admin-jobs/admin-jobs.html - 95 + 90 @@ -398,23 +402,23 @@ Supprimer Tâches apps/client/src/app/components/admin-jobs/admin-jobs.html - 140 + 135 - - Asset Profile - Profil d'Actifs + + Asset Profiles + Profil d'Actifs - apps/client/src/app/components/admin-jobs/admin-jobs.html - 37 + libs/ui/src/lib/assistant/assistant.html + 67 - - Historical Market Data - Données de Marché Historiques + + Historical Market Data + Données de Marché Historiques apps/client/src/app/components/admin-jobs/admin-jobs.html - 42 + 37,39 @@ -422,7 +426,7 @@ Voir Données apps/client/src/app/components/admin-jobs/admin-jobs.html - 155 + 150 @@ -430,7 +434,7 @@ Voir la Stacktrace apps/client/src/app/components/admin-jobs/admin-jobs.html - 162 + 157 @@ -438,7 +442,7 @@ Supprimer Tâche apps/client/src/app/components/admin-jobs/admin-jobs.html - 165 + 160 @@ -486,11 +490,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 195 + 225 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 18 + 40 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -506,7 +510,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 95 + 97 apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html @@ -530,11 +534,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 202 + 232 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 25 + 47 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -550,7 +554,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 102 + 104 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -562,7 +566,7 @@ Filtrer par... apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 269 + 279 @@ -574,7 +578,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 86 + 116 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -594,7 +598,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 95 + 125 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -614,7 +618,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 72 + 102 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -636,6 +640,10 @@ apps/client/src/app/components/admin-market-data/admin-market-data.html 78 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 58 + Sectors Count @@ -694,7 +702,7 @@ Secteur apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 110 + 140 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -706,7 +714,7 @@ Pays apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 119 + 149 apps/client/src/app/components/admin-users/admin-users.html @@ -722,7 +730,7 @@ Secteurs apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 125 + 155 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -738,7 +746,7 @@ Pays apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 135 + 165 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -750,7 +758,7 @@ Équivalence de Symboles apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 160 + 190 @@ -758,11 +766,11 @@ Note apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 182 + 212 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 72 + 74 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -946,7 +954,7 @@ apps/client/src/app/components/header/header.component.html - 189 + 192 @@ -974,7 +982,7 @@ apps/client/src/app/components/header/header.component.html - 221 + 224 apps/client/src/app/pages/accounts/accounts-page.html @@ -1058,7 +1066,7 @@ apps/client/src/app/components/header/header.component.html - 203 + 206 @@ -1070,7 +1078,7 @@ apps/client/src/app/components/header/header.component.html - 213 + 216 @@ -1082,7 +1090,7 @@ apps/client/src/app/components/header/header.component.html - 237 + 240 @@ -1098,7 +1106,7 @@ apps/client/src/app/components/header/header.component.html - 248 + 251 apps/client/src/app/pages/resources/resources-page.html @@ -1118,11 +1126,11 @@ apps/client/src/app/components/header/header.component.html - 260 + 263 apps/client/src/app/components/header/header.component.html - 329 + 332 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html @@ -1254,7 +1262,7 @@ apps/client/src/app/components/header/header.component.html - 316 + 319 @@ -1262,7 +1270,7 @@ Moi apps/client/src/app/components/header/header.component.html - 170 + 173 @@ -1270,7 +1278,7 @@ Mon Ghostfolio apps/client/src/app/components/header/header.component.html - 228 + 231 @@ -1278,7 +1286,7 @@ À propos de Ghostfolio apps/client/src/app/components/header/header.component.html - 268 + 271 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -1294,7 +1302,7 @@ apps/client/src/app/components/header/header.component.html - 303 + 306 apps/client/src/app/pages/features/features-page.html @@ -1310,7 +1318,7 @@ apps/client/src/app/components/header/header.component.html - 345 + 348 apps/client/src/app/components/home-market/home-market.html @@ -1326,7 +1334,7 @@ Se connecter apps/client/src/app/components/header/header.component.html - 358 + 361 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1338,7 +1346,7 @@ Démarrer apps/client/src/app/components/header/header.component.html - 370 + 373 @@ -1925,7 +1933,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 35 + 31 @@ -1965,7 +1973,7 @@ Voulez-vous vraiment supprimer cette méthode de connexion ? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 184 + 181 @@ -2037,7 +2045,7 @@ Devise de Base apps/client/src/app/components/user-account-settings/user-account-settings.html - 26 + 27 @@ -2045,7 +2053,7 @@ Langue apps/client/src/app/components/user-account-settings/user-account-settings.html - 47 + 48 @@ -2057,27 +2065,27 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 61 + 62 apps/client/src/app/components/user-account-settings/user-account-settings.html - 65 + 66 apps/client/src/app/components/user-account-settings/user-account-settings.html - 69 + 70 apps/client/src/app/components/user-account-settings/user-account-settings.html - 73 + 74 apps/client/src/app/components/user-account-settings/user-account-settings.html - 77 + 78 apps/client/src/app/components/user-account-settings/user-account-settings.html - 81 + 82 apps/client/src/app/pages/features/features-page.html @@ -2089,7 +2097,7 @@ Paramètres régionaux apps/client/src/app/components/user-account-settings/user-account-settings.html - 90 + 91 @@ -2097,7 +2105,7 @@ Format de date et d'heure apps/client/src/app/components/user-account-settings/user-account-settings.html - 92 + 93 @@ -2105,7 +2113,7 @@ Apparence apps/client/src/app/components/user-account-settings/user-account-settings.html - 113 + 114 @@ -2113,7 +2121,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.html - 125 + 126 @@ -2121,7 +2129,7 @@ Clair apps/client/src/app/components/user-account-settings/user-account-settings.html - 126 + 127 @@ -2129,7 +2137,7 @@ Sombre apps/client/src/app/components/user-account-settings/user-account-settings.html - 127 + 128 @@ -2137,7 +2145,7 @@ Mode Zen apps/client/src/app/components/user-account-settings/user-account-settings.html - 136 + 137 apps/client/src/app/pages/features/features-page.html @@ -2149,7 +2157,7 @@ Se connecter avec empreinte apps/client/src/app/components/user-account-settings/user-account-settings.html - 153 + 155 @@ -2157,7 +2165,7 @@ Fonctionnalités expérimentales apps/client/src/app/components/user-account-settings/user-account-settings.html - 169 + 172 @@ -2165,7 +2173,7 @@ ID d'utilisateur apps/client/src/app/components/user-account-settings/user-account-settings.html - 184 + 188 @@ -2229,7 +2237,7 @@ ID du compte apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 89 + 91 @@ -2485,7 +2493,7 @@ Nom, symbole, ou ISIN apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 10 + 25 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2571,6 +2579,10 @@ Import Importer + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 80 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html 150 @@ -3125,7 +3137,7 @@ Différence avec le Record Historique libs/ui/src/lib/benchmark/benchmark.component.html - 12 + 31 @@ -3133,7 +3145,7 @@ par rapport au record historique libs/ui/src/lib/benchmark/benchmark.component.html - 14 + 33 @@ -3513,7 +3525,7 @@ Expérience sans distraction pour les périodes tumultueuses apps/client/src/app/components/user-account-settings/user-account-settings.html - 137,139 + 138,140 @@ -3521,7 +3533,7 @@ Avant-première de fonctionnalités futures apps/client/src/app/components/user-account-settings/user-account-settings.html - 170,172 + 173,175 @@ -4369,7 +4381,7 @@ Scraper Configuration apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 171 + 201 @@ -7669,7 +7681,7 @@ Biometric Authentication apps/client/src/app/components/user-account-settings/user-account-settings.html - 152 + 154 @@ -7753,7 +7765,7 @@ Export Data apps/client/src/app/components/user-account-settings/user-account-settings.html - 191 + 195 @@ -10156,14 +10168,6 @@ 7 - - Add Access - Add Access - - apps/client/src/app/components/access-table/access-table.component.html - 8,10 - - Choose or drop a file here Choose or drop a file here @@ -10313,7 +10317,7 @@ Benchmark apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 154 + 184 @@ -10393,7 +10397,7 @@ Find holding... libs/ui/src/lib/assistant/assistant.component.ts - 87 + 89 @@ -10401,7 +10405,59 @@ No entries... libs/ui/src/lib/assistant/assistant.html - 62 + 63 + + + libs/ui/src/lib/assistant/assistant.html + 84 + + + + Asset Profile + Asset Profile + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 31,33 + + + + Do you really want to delete this asset profile? + Do you really want to delete this asset profile? + + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 182 + + + + Search + Search + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 16 + + + + Add Manually + Add Manually + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 19 + + + + Ghostfolio is a personal finance dashboard to keep track of your assets like stocks, ETFs or cryptocurrencies across multiple platforms. + Ghostfolio est un dashboard de finances personnelles qui permet de suivre vos actifs comme les actions, les ETF ou les crypto-monnaies sur plusieurs plateformes. + + apps/client/src/app/pages/i18n/i18n-page.html + 4,7 + + + + Last All Time High + Last All Time High + + libs/ui/src/lib/benchmark/benchmark.component.html + 15 diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index 248d3f9ec..1712694d3 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -31,7 +31,7 @@ Beneficiario apps/client/src/app/components/access-table/access-table.component.html - 22 + 10 @@ -39,7 +39,7 @@ Tipo apps/client/src/app/components/access-table/access-table.component.html - 29 + 17 apps/client/src/app/components/admin-jobs/admin-jobs.html @@ -63,7 +63,7 @@ Dettagli apps/client/src/app/components/access-table/access-table.component.html - 39 + 27 @@ -71,7 +71,7 @@ Revoca apps/client/src/app/components/access-table/access-table.component.html - 66 + 54 @@ -79,7 +79,7 @@ Vuoi davvero revocare l'accesso concesso? apps/client/src/app/components/access-table/access-table.component.ts - 50 + 49 @@ -99,7 +99,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 81 + 111 apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -283,7 +283,7 @@ Elimina i lavori apps/client/src/app/components/admin-jobs/admin-jobs.html - 140 + 135 @@ -291,7 +291,7 @@ Simbolo apps/client/src/app/components/admin-jobs/admin-jobs.html - 50 + 45 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -299,7 +299,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 57 + 87 + + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 34 @@ -307,7 +311,7 @@ Sorgente dei dati apps/client/src/app/components/admin-jobs/admin-jobs.html - 59 + 54 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -323,7 +327,7 @@ Tentativi apps/client/src/app/components/admin-jobs/admin-jobs.html - 68 + 63 @@ -331,7 +335,7 @@ Creato apps/client/src/app/components/admin-jobs/admin-jobs.html - 77 + 72 @@ -339,7 +343,7 @@ Finito apps/client/src/app/components/admin-jobs/admin-jobs.html - 86 + 81 @@ -347,23 +351,23 @@ Stato apps/client/src/app/components/admin-jobs/admin-jobs.html - 95 + 90 - - Asset Profile - Profilo dell'asset + + Asset Profiles + Profilo dell'asset - apps/client/src/app/components/admin-jobs/admin-jobs.html - 37 + libs/ui/src/lib/assistant/assistant.html + 67 - - Historical Market Data - Dati storici del mercato + + Historical Market Data + Dati storici del mercato apps/client/src/app/components/admin-jobs/admin-jobs.html - 42 + 37,39 @@ -371,7 +375,7 @@ Visualizza i dati apps/client/src/app/components/admin-jobs/admin-jobs.html - 155 + 150 @@ -379,7 +383,7 @@ Visualizza Stacktrace apps/client/src/app/components/admin-jobs/admin-jobs.html - 162 + 157 @@ -387,7 +391,7 @@ Elimina il lavoro apps/client/src/app/components/admin-jobs/admin-jobs.html - 165 + 160 @@ -435,11 +439,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 195 + 225 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 18 + 40 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -455,7 +459,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 95 + 97 apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html @@ -479,11 +483,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 202 + 232 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 25 + 47 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -499,7 +503,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 102 + 104 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -515,7 +519,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 72 + 102 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -537,6 +541,10 @@ apps/client/src/app/components/admin-market-data/admin-market-data.html 78 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 58 + Please add a currency: @@ -711,7 +719,7 @@ apps/client/src/app/components/header/header.component.html - 189 + 192 @@ -755,7 +763,7 @@ apps/client/src/app/components/header/header.component.html - 203 + 206 @@ -767,7 +775,7 @@ apps/client/src/app/components/header/header.component.html - 213 + 216 @@ -787,7 +795,7 @@ apps/client/src/app/components/header/header.component.html - 221 + 224 apps/client/src/app/pages/accounts/accounts-page.html @@ -803,7 +811,7 @@ apps/client/src/app/components/header/header.component.html - 237 + 240 @@ -819,7 +827,7 @@ apps/client/src/app/components/header/header.component.html - 248 + 251 apps/client/src/app/pages/resources/resources-page.html @@ -839,11 +847,11 @@ apps/client/src/app/components/header/header.component.html - 260 + 263 apps/client/src/app/components/header/header.component.html - 329 + 332 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html @@ -975,7 +983,7 @@ apps/client/src/app/components/header/header.component.html - 316 + 319 @@ -983,7 +991,7 @@ Io apps/client/src/app/components/header/header.component.html - 170 + 173 @@ -991,7 +999,7 @@ Il mio Ghostfolio apps/client/src/app/components/header/header.component.html - 228 + 231 @@ -999,7 +1007,7 @@ Informazioni su Ghostfolio apps/client/src/app/components/header/header.component.html - 268 + 271 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -1015,7 +1023,7 @@ apps/client/src/app/components/header/header.component.html - 303 + 306 apps/client/src/app/pages/features/features-page.html @@ -1031,7 +1039,7 @@ apps/client/src/app/components/header/header.component.html - 345 + 348 apps/client/src/app/components/home-market/home-market.html @@ -1167,7 +1175,7 @@ Accedi apps/client/src/app/components/header/header.component.html - 358 + 361 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1354,7 +1362,7 @@ Settori apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 125 + 155 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1370,7 +1378,7 @@ Paesi apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 135 + 165 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1698,7 +1706,7 @@ Vuoi davvero rimuovere questo metodo di accesso? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 184 + 181 @@ -1770,7 +1778,7 @@ Valuta base apps/client/src/app/components/user-account-settings/user-account-settings.html - 26 + 27 @@ -1778,7 +1786,7 @@ Locale apps/client/src/app/components/user-account-settings/user-account-settings.html - 90 + 91 @@ -1786,7 +1794,7 @@ Formato data e numero apps/client/src/app/components/user-account-settings/user-account-settings.html - 92 + 93 @@ -1794,7 +1802,7 @@ Modalità Zen apps/client/src/app/components/user-account-settings/user-account-settings.html - 136 + 137 apps/client/src/app/pages/features/features-page.html @@ -1806,7 +1814,7 @@ Accesso con impronta digitale apps/client/src/app/components/user-account-settings/user-account-settings.html - 153 + 155 @@ -1814,7 +1822,7 @@ ID utente apps/client/src/app/components/user-account-settings/user-account-settings.html - 184 + 188 @@ -1882,7 +1890,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 62 + 92 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -1926,7 +1934,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 44 + 46 @@ -1934,7 +1942,7 @@ ID account apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 89 + 91 @@ -2250,7 +2258,7 @@ Nome, simbolo o ISIN apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 10 + 25 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2310,11 +2318,11 @@ Nota apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 182 + 212 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 72 + 74 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2330,7 +2338,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 86 + 116 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2570,7 +2578,7 @@ Variazione rispetto al massimo storico (ATH) libs/ui/src/lib/benchmark/benchmark.component.html - 12 + 31 @@ -2578,7 +2586,7 @@ dal massimo storico (ATH) libs/ui/src/lib/benchmark/benchmark.component.html - 14 + 33 @@ -2602,7 +2610,7 @@ Lingua apps/client/src/app/components/user-account-settings/user-account-settings.html - 47 + 48 @@ -2610,7 +2618,7 @@ Inizia apps/client/src/app/components/header/header.component.html - 370 + 373 @@ -2678,7 +2686,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 95 + 125 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2734,7 +2742,7 @@ Settore apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 110 + 140 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2746,7 +2754,7 @@ Paese apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 119 + 149 apps/client/src/app/components/admin-users/admin-users.html @@ -2886,7 +2894,7 @@ Filtra per... apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 269 + 279 @@ -2910,7 +2918,7 @@ Alias apps/client/src/app/components/access-table/access-table.component.html - 15 + 3 apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html @@ -2922,7 +2930,7 @@ Funzionalità sperimentali apps/client/src/app/components/user-account-settings/user-account-settings.html - 169 + 172 @@ -2962,7 +2970,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 35 + 31 @@ -2970,7 +2978,7 @@ Aspetto apps/client/src/app/components/user-account-settings/user-account-settings.html - 113 + 114 @@ -2978,7 +2986,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.html - 125 + 126 @@ -2986,7 +2994,7 @@ Chiaro apps/client/src/app/components/user-account-settings/user-account-settings.html - 126 + 127 @@ -2994,7 +3002,7 @@ Scuro apps/client/src/app/components/user-account-settings/user-account-settings.html - 127 + 128 @@ -3258,27 +3266,27 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 61 + 62 apps/client/src/app/components/user-account-settings/user-account-settings.html - 65 + 66 apps/client/src/app/components/user-account-settings/user-account-settings.html - 69 + 70 apps/client/src/app/components/user-account-settings/user-account-settings.html - 73 + 74 apps/client/src/app/components/user-account-settings/user-account-settings.html - 77 + 78 apps/client/src/app/components/user-account-settings/user-account-settings.html - 81 + 82 apps/client/src/app/pages/features/features-page.html @@ -3306,7 +3314,7 @@ Mappatura dei simboli apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 160 + 190 @@ -3356,6 +3364,10 @@ Import Importa + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 80 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html 150 @@ -3514,7 +3526,7 @@ Esperienza priva di distrazioni per i periodi più turbolenti apps/client/src/app/components/user-account-settings/user-account-settings.html - 137,139 + 138,140 @@ -3522,7 +3534,7 @@ Un'anteprima delle funzionalità in arrivo apps/client/src/app/components/user-account-settings/user-account-settings.html - 170,172 + 173,175 @@ -4370,7 +4382,7 @@ Configurazione dello scraper apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 171 + 201 @@ -7670,7 +7682,7 @@ Autenticazione biometrica apps/client/src/app/components/user-account-settings/user-account-settings.html - 152 + 154 @@ -7754,7 +7766,7 @@ Esporta dati apps/client/src/app/components/user-account-settings/user-account-settings.html - 191 + 195 @@ -10157,14 +10169,6 @@ 7 - - Add Access - Add Access - - apps/client/src/app/components/access-table/access-table.component.html - 8,10 - - Choose or drop a file here Choose or drop a file here @@ -10314,7 +10318,7 @@ Benchmark apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 154 + 184 @@ -10394,7 +10398,7 @@ Find holding... libs/ui/src/lib/assistant/assistant.component.ts - 87 + 89 @@ -10402,7 +10406,59 @@ No entries... libs/ui/src/lib/assistant/assistant.html - 62 + 63 + + + libs/ui/src/lib/assistant/assistant.html + 84 + + + + Asset Profile + Asset Profile + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 31,33 + + + + Do you really want to delete this asset profile? + Do you really want to delete this asset profile? + + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 182 + + + + Search + Search + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 16 + + + + Add Manually + Add Manually + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 19 + + + + Ghostfolio is a personal finance dashboard to keep track of your assets like stocks, ETFs or cryptocurrencies across multiple platforms. + Ghostfolio è un dashboard di finanza personale per tenere traccia delle vostre attività come azioni, ETF o criptovalute su più piattaforme. + + apps/client/src/app/pages/i18n/i18n-page.html + 4,7 + + + + Last All Time High + Last All Time High + + libs/ui/src/lib/benchmark/benchmark.component.html + 15 diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index 649f07f15..f424ee349 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -30,7 +30,7 @@ Ontvanger apps/client/src/app/components/access-table/access-table.component.html - 22 + 10 @@ -38,7 +38,7 @@ Type apps/client/src/app/components/access-table/access-table.component.html - 29 + 17 apps/client/src/app/components/admin-jobs/admin-jobs.html @@ -62,7 +62,7 @@ Details apps/client/src/app/components/access-table/access-table.component.html - 39 + 27 @@ -70,7 +70,7 @@ Intrekken apps/client/src/app/components/access-table/access-table.component.html - 66 + 54 @@ -78,7 +78,7 @@ Wil je deze verleende toegang echt intrekken? apps/client/src/app/components/access-table/access-table.component.ts - 50 + 49 @@ -98,7 +98,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 81 + 111 apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -282,7 +282,7 @@ Taken verwijderen apps/client/src/app/components/admin-jobs/admin-jobs.html - 140 + 135 @@ -290,7 +290,7 @@ Symbool apps/client/src/app/components/admin-jobs/admin-jobs.html - 50 + 45 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -298,7 +298,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 57 + 87 + + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 34 @@ -306,7 +310,7 @@ Gegevensbron apps/client/src/app/components/admin-jobs/admin-jobs.html - 59 + 54 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -322,7 +326,7 @@ Pogingen apps/client/src/app/components/admin-jobs/admin-jobs.html - 68 + 63 @@ -330,7 +334,7 @@ Aangemaakt apps/client/src/app/components/admin-jobs/admin-jobs.html - 77 + 72 @@ -338,7 +342,7 @@ Voltooid apps/client/src/app/components/admin-jobs/admin-jobs.html - 86 + 81 @@ -346,23 +350,23 @@ Status apps/client/src/app/components/admin-jobs/admin-jobs.html - 95 + 90 - - Asset Profile - Asset Profiel + + Asset Profiles + Asset Profiel - apps/client/src/app/components/admin-jobs/admin-jobs.html - 37 + libs/ui/src/lib/assistant/assistant.html + 67 - - Historical Market Data - Historische marktgegevens + + Historical Market Data + Historische marktgegevens apps/client/src/app/components/admin-jobs/admin-jobs.html - 42 + 37,39 @@ -370,7 +374,7 @@ Bekijk gegevens apps/client/src/app/components/admin-jobs/admin-jobs.html - 155 + 150 @@ -378,7 +382,7 @@ Bekijk Stacktrace apps/client/src/app/components/admin-jobs/admin-jobs.html - 162 + 157 @@ -386,7 +390,7 @@ Taak verwijderen apps/client/src/app/components/admin-jobs/admin-jobs.html - 165 + 160 @@ -434,11 +438,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 195 + 225 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 18 + 40 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -454,7 +458,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 95 + 97 apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html @@ -478,11 +482,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 202 + 232 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 25 + 47 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -498,7 +502,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 102 + 104 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -514,7 +518,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 72 + 102 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -536,6 +540,10 @@ apps/client/src/app/components/admin-market-data/admin-market-data.html 78 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 58 + Please add a currency: @@ -710,7 +718,7 @@ apps/client/src/app/components/header/header.component.html - 189 + 192 @@ -754,7 +762,7 @@ apps/client/src/app/components/header/header.component.html - 203 + 206 @@ -766,7 +774,7 @@ apps/client/src/app/components/header/header.component.html - 213 + 216 @@ -786,7 +794,7 @@ apps/client/src/app/components/header/header.component.html - 221 + 224 apps/client/src/app/pages/accounts/accounts-page.html @@ -802,7 +810,7 @@ apps/client/src/app/components/header/header.component.html - 237 + 240 @@ -818,7 +826,7 @@ apps/client/src/app/components/header/header.component.html - 248 + 251 apps/client/src/app/pages/resources/resources-page.html @@ -838,11 +846,11 @@ apps/client/src/app/components/header/header.component.html - 260 + 263 apps/client/src/app/components/header/header.component.html - 329 + 332 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html @@ -974,7 +982,7 @@ apps/client/src/app/components/header/header.component.html - 316 + 319 @@ -982,7 +990,7 @@ Ik apps/client/src/app/components/header/header.component.html - 170 + 173 @@ -990,7 +998,7 @@ Mijn Ghostfolio apps/client/src/app/components/header/header.component.html - 228 + 231 @@ -998,7 +1006,7 @@ Over Ghostfolio apps/client/src/app/components/header/header.component.html - 268 + 271 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -1014,7 +1022,7 @@ apps/client/src/app/components/header/header.component.html - 303 + 306 apps/client/src/app/pages/features/features-page.html @@ -1030,7 +1038,7 @@ apps/client/src/app/components/header/header.component.html - 345 + 348 apps/client/src/app/components/home-market/home-market.html @@ -1166,7 +1174,7 @@ Aanmelden apps/client/src/app/components/header/header.component.html - 358 + 361 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1353,7 +1361,7 @@ Sectoren apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 125 + 155 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1369,7 +1377,7 @@ Landen apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 135 + 165 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1697,7 +1705,7 @@ Wil je deze aanmeldingsmethode echt verwijderen? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 184 + 181 @@ -1769,7 +1777,7 @@ Basisvaluta apps/client/src/app/components/user-account-settings/user-account-settings.html - 26 + 27 @@ -1777,7 +1785,7 @@ Locatie apps/client/src/app/components/user-account-settings/user-account-settings.html - 90 + 91 @@ -1785,7 +1793,7 @@ Datum- en getalnotatie apps/client/src/app/components/user-account-settings/user-account-settings.html - 92 + 93 @@ -1793,7 +1801,7 @@ Zen-modus apps/client/src/app/components/user-account-settings/user-account-settings.html - 136 + 137 apps/client/src/app/pages/features/features-page.html @@ -1805,7 +1813,7 @@ Aanmelden met vingerafdruk apps/client/src/app/components/user-account-settings/user-account-settings.html - 153 + 155 @@ -1813,7 +1821,7 @@ Gebruikers-ID apps/client/src/app/components/user-account-settings/user-account-settings.html - 184 + 188 @@ -1881,7 +1889,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 62 + 92 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -1925,7 +1933,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 44 + 46 @@ -1933,7 +1941,7 @@ Rekening-ID apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 89 + 91 @@ -2249,7 +2257,7 @@ Naam, symbool of ISIN apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 10 + 25 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2309,11 +2317,11 @@ Opmerking apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 182 + 212 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 72 + 74 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2329,7 +2337,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 86 + 116 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2569,7 +2577,7 @@ Verandering van All Time High libs/ui/src/lib/benchmark/benchmark.component.html - 12 + 31 @@ -2577,7 +2585,7 @@ van ATH libs/ui/src/lib/benchmark/benchmark.component.html - 14 + 33 @@ -2601,7 +2609,7 @@ Taal apps/client/src/app/components/user-account-settings/user-account-settings.html - 47 + 48 @@ -2609,7 +2617,7 @@ Aan de slag apps/client/src/app/components/header/header.component.html - 370 + 373 @@ -2677,7 +2685,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 95 + 125 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2733,7 +2741,7 @@ Sector apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 110 + 140 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2745,7 +2753,7 @@ Land apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 119 + 149 apps/client/src/app/components/admin-users/admin-users.html @@ -2885,7 +2893,7 @@ Filter op... apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 269 + 279 @@ -2909,7 +2917,7 @@ Alias apps/client/src/app/components/access-table/access-table.component.html - 15 + 3 apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html @@ -2921,7 +2929,7 @@ Experimentele functies apps/client/src/app/components/user-account-settings/user-account-settings.html - 169 + 172 @@ -2961,7 +2969,7 @@ Automatisch apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 35 + 31 @@ -2969,7 +2977,7 @@ Weergave apps/client/src/app/components/user-account-settings/user-account-settings.html - 113 + 114 @@ -2977,7 +2985,7 @@ Automatisch apps/client/src/app/components/user-account-settings/user-account-settings.html - 125 + 126 @@ -2985,7 +2993,7 @@ Licht apps/client/src/app/components/user-account-settings/user-account-settings.html - 126 + 127 @@ -2993,7 +3001,7 @@ Donker apps/client/src/app/components/user-account-settings/user-account-settings.html - 127 + 128 @@ -3257,27 +3265,27 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 61 + 62 apps/client/src/app/components/user-account-settings/user-account-settings.html - 65 + 66 apps/client/src/app/components/user-account-settings/user-account-settings.html - 69 + 70 apps/client/src/app/components/user-account-settings/user-account-settings.html - 73 + 74 apps/client/src/app/components/user-account-settings/user-account-settings.html - 77 + 78 apps/client/src/app/components/user-account-settings/user-account-settings.html - 81 + 82 apps/client/src/app/pages/features/features-page.html @@ -3305,7 +3313,7 @@ Symbool toewijzen apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 160 + 190 @@ -3355,6 +3363,10 @@ Import Importeren + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 80 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html 150 @@ -3513,7 +3525,7 @@ Afleidingsvrije ervaring voor roerige tijden apps/client/src/app/components/user-account-settings/user-account-settings.html - 137,139 + 138,140 @@ -3521,7 +3533,7 @@ Voorproefje van nieuwe functionaliteit apps/client/src/app/components/user-account-settings/user-account-settings.html - 170,172 + 173,175 @@ -4369,7 +4381,7 @@ Scraper instellingen apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 171 + 201 @@ -7669,7 +7681,7 @@ Biometrische authenticatie apps/client/src/app/components/user-account-settings/user-account-settings.html - 152 + 154 @@ -7753,7 +7765,7 @@ Exporteer Data apps/client/src/app/components/user-account-settings/user-account-settings.html - 191 + 195 @@ -10156,14 +10168,6 @@ 7 - - Add Access - Add Access - - apps/client/src/app/components/access-table/access-table.component.html - 8,10 - - Choose or drop a file here Choose or drop a file here @@ -10313,7 +10317,7 @@ Benchmark apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 154 + 184 @@ -10393,7 +10397,7 @@ Find holding... libs/ui/src/lib/assistant/assistant.component.ts - 87 + 89 @@ -10401,7 +10405,59 @@ No entries... libs/ui/src/lib/assistant/assistant.html - 62 + 63 + + + libs/ui/src/lib/assistant/assistant.html + 84 + + + + Asset Profile + Asset Profile + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 31,33 + + + + Do you really want to delete this asset profile? + Do you really want to delete this asset profile? + + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 182 + + + + Search + Search + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 16 + + + + Add Manually + Add Manually + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 19 + + + + Ghostfolio is a personal finance dashboard to keep track of your assets like stocks, ETFs or cryptocurrencies across multiple platforms. + Ghostfolio is een persoonlijk financieel dashboard om uw activa zoals aandelen, ETF’s of cryptocurrencies over meerdere platforms bij te houden. + + apps/client/src/app/pages/i18n/i18n-page.html + 4,7 + + + + Last All Time High + Last All Time High + + libs/ui/src/lib/benchmark/benchmark.component.html + 15 diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index f5050eab8..15db8b5c7 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -14,7 +14,7 @@ Alias apps/client/src/app/components/access-table/access-table.component.html - 15 + 3 apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html @@ -26,7 +26,7 @@ Beneficiário (a) apps/client/src/app/components/access-table/access-table.component.html - 22 + 10 @@ -34,7 +34,7 @@ Tipo apps/client/src/app/components/access-table/access-table.component.html - 29 + 17 apps/client/src/app/components/admin-jobs/admin-jobs.html @@ -58,7 +58,7 @@ Detalhes apps/client/src/app/components/access-table/access-table.component.html - 39 + 27 @@ -66,7 +66,7 @@ Revogar apps/client/src/app/components/access-table/access-table.component.html - 66 + 54 @@ -74,7 +74,7 @@ Pretende realmente revogar este acesso concedido? apps/client/src/app/components/access-table/access-table.component.ts - 50 + 49 @@ -90,7 +90,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 44 + 46 @@ -110,7 +110,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 81 + 111 apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -190,7 +190,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 62 + 92 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -334,7 +334,7 @@ Símbolo apps/client/src/app/components/admin-jobs/admin-jobs.html - 50 + 45 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -342,7 +342,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 57 + 87 + + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 34 @@ -350,7 +354,7 @@ Fonte de dados apps/client/src/app/components/admin-jobs/admin-jobs.html - 59 + 54 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -366,7 +370,7 @@ Tentativas apps/client/src/app/components/admin-jobs/admin-jobs.html - 68 + 63 @@ -374,7 +378,7 @@ Criado apps/client/src/app/components/admin-jobs/admin-jobs.html - 77 + 72 @@ -382,7 +386,7 @@ Terminado apps/client/src/app/components/admin-jobs/admin-jobs.html - 86 + 81 @@ -390,7 +394,7 @@ Estado apps/client/src/app/components/admin-jobs/admin-jobs.html - 95 + 90 @@ -398,23 +402,23 @@ Eliminar Tarefas apps/client/src/app/components/admin-jobs/admin-jobs.html - 140 + 135 - - Asset Profile - Perfil de Ativos + + Asset Profiles + Perfil de Ativos - apps/client/src/app/components/admin-jobs/admin-jobs.html - 37 + libs/ui/src/lib/assistant/assistant.html + 67 - - Historical Market Data - Histórico de Dados de Mercado + + Historical Market Data + Histórico de Dados de Mercado apps/client/src/app/components/admin-jobs/admin-jobs.html - 42 + 37,39 @@ -422,7 +426,7 @@ Visualizar dados apps/client/src/app/components/admin-jobs/admin-jobs.html - 155 + 150 @@ -430,7 +434,7 @@ Ver Stacktrace apps/client/src/app/components/admin-jobs/admin-jobs.html - 162 + 157 @@ -438,7 +442,7 @@ Apagar Tarefa apps/client/src/app/components/admin-jobs/admin-jobs.html - 165 + 160 @@ -486,11 +490,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 195 + 225 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 18 + 40 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -506,7 +510,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 95 + 97 apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html @@ -530,11 +534,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 202 + 232 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 25 + 47 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -550,7 +554,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 102 + 104 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -562,7 +566,7 @@ Filtrar por... apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 269 + 279 @@ -574,7 +578,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 86 + 116 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -594,7 +598,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 95 + 125 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -614,7 +618,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 72 + 102 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -636,6 +640,10 @@ apps/client/src/app/components/admin-market-data/admin-market-data.html 78 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 58 + Countries Count @@ -826,7 +834,7 @@ apps/client/src/app/components/header/header.component.html - 189 + 192 @@ -854,7 +862,7 @@ apps/client/src/app/components/header/header.component.html - 221 + 224 apps/client/src/app/pages/accounts/accounts-page.html @@ -938,7 +946,7 @@ apps/client/src/app/components/header/header.component.html - 203 + 206 @@ -950,7 +958,7 @@ apps/client/src/app/components/header/header.component.html - 213 + 216 @@ -962,7 +970,7 @@ apps/client/src/app/components/header/header.component.html - 237 + 240 @@ -978,7 +986,7 @@ apps/client/src/app/components/header/header.component.html - 248 + 251 apps/client/src/app/pages/resources/resources-page.html @@ -998,11 +1006,11 @@ apps/client/src/app/components/header/header.component.html - 260 + 263 apps/client/src/app/components/header/header.component.html - 329 + 332 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html @@ -1134,7 +1142,7 @@ apps/client/src/app/components/header/header.component.html - 316 + 319 @@ -1142,7 +1150,7 @@ Eu apps/client/src/app/components/header/header.component.html - 170 + 173 @@ -1150,7 +1158,7 @@ O meu Ghostfolio apps/client/src/app/components/header/header.component.html - 228 + 231 @@ -1158,7 +1166,7 @@ Sobre o Ghostfolio apps/client/src/app/components/header/header.component.html - 268 + 271 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -1174,7 +1182,7 @@ apps/client/src/app/components/header/header.component.html - 303 + 306 apps/client/src/app/pages/features/features-page.html @@ -1190,7 +1198,7 @@ apps/client/src/app/components/header/header.component.html - 345 + 348 apps/client/src/app/components/home-market/home-market.html @@ -1206,7 +1214,7 @@ Iniciar sessão apps/client/src/app/components/header/header.component.html - 358 + 361 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1218,7 +1226,7 @@ Começar apps/client/src/app/components/header/header.component.html - 370 + 373 @@ -1653,7 +1661,7 @@ Setor apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 110 + 140 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1665,7 +1673,7 @@ País apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 119 + 149 apps/client/src/app/components/admin-users/admin-users.html @@ -1681,7 +1689,7 @@ Setores apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 125 + 155 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1697,7 +1705,7 @@ Países apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 135 + 165 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1909,7 +1917,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 35 + 31 @@ -1949,7 +1957,7 @@ Deseja realmente remover este método de início de sessão? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 184 + 181 @@ -2021,7 +2029,7 @@ Moeda Base apps/client/src/app/components/user-account-settings/user-account-settings.html - 26 + 27 @@ -2029,7 +2037,7 @@ Língua apps/client/src/app/components/user-account-settings/user-account-settings.html - 47 + 48 @@ -2049,7 +2057,7 @@ Localidade apps/client/src/app/components/user-account-settings/user-account-settings.html - 90 + 91 @@ -2057,7 +2065,7 @@ Formato de números e datas apps/client/src/app/components/user-account-settings/user-account-settings.html - 92 + 93 @@ -2065,7 +2073,7 @@ Modo Zen apps/client/src/app/components/user-account-settings/user-account-settings.html - 136 + 137 apps/client/src/app/pages/features/features-page.html @@ -2077,7 +2085,7 @@ Aparência apps/client/src/app/components/user-account-settings/user-account-settings.html - 113 + 114 @@ -2085,7 +2093,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.html - 125 + 126 @@ -2093,7 +2101,7 @@ Claro apps/client/src/app/components/user-account-settings/user-account-settings.html - 126 + 127 @@ -2101,7 +2109,7 @@ Escuro apps/client/src/app/components/user-account-settings/user-account-settings.html - 127 + 128 @@ -2109,7 +2117,7 @@ Iniciar sessão com impressão digital apps/client/src/app/components/user-account-settings/user-account-settings.html - 153 + 155 @@ -2117,7 +2125,7 @@ Funcionalidades Experimentais apps/client/src/app/components/user-account-settings/user-account-settings.html - 169 + 172 @@ -2125,7 +2133,7 @@ ID do Utilizador apps/client/src/app/components/user-account-settings/user-account-settings.html - 184 + 188 @@ -2189,7 +2197,7 @@ ID da Conta apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 89 + 91 @@ -2405,7 +2413,7 @@ Nome, símbolo or ISIN apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 10 + 25 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2449,11 +2457,11 @@ Nota apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 182 + 212 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 72 + 74 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -3009,7 +3017,7 @@ Diferença desde o Máximo Histórico libs/ui/src/lib/benchmark/benchmark.component.html - 12 + 31 @@ -3017,7 +3025,7 @@ a partir do ATH (All Time High) libs/ui/src/lib/benchmark/benchmark.component.html - 14 + 33 @@ -3293,7 +3301,7 @@ Mapeamento de Símbolo apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 160 + 190 @@ -3313,27 +3321,27 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 61 + 62 apps/client/src/app/components/user-account-settings/user-account-settings.html - 65 + 66 apps/client/src/app/components/user-account-settings/user-account-settings.html - 69 + 70 apps/client/src/app/components/user-account-settings/user-account-settings.html - 73 + 74 apps/client/src/app/components/user-account-settings/user-account-settings.html - 77 + 78 apps/client/src/app/components/user-account-settings/user-account-settings.html - 81 + 82 apps/client/src/app/pages/features/features-page.html @@ -3375,6 +3383,10 @@ Import Importar + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 80 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html 150 @@ -3513,7 +3525,7 @@ Experiência sem distrações para tempos turbulentos apps/client/src/app/components/user-account-settings/user-account-settings.html - 137,139 + 138,140 @@ -3521,7 +3533,7 @@ Acesso antecipado a funcionalidades futuras apps/client/src/app/components/user-account-settings/user-account-settings.html - 170,172 + 173,175 @@ -4369,7 +4381,7 @@ Scraper Configuration apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 171 + 201 @@ -7669,7 +7681,7 @@ Biometric Authentication apps/client/src/app/components/user-account-settings/user-account-settings.html - 152 + 154 @@ -7753,7 +7765,7 @@ Export Data apps/client/src/app/components/user-account-settings/user-account-settings.html - 191 + 195 @@ -10156,14 +10168,6 @@ 7 - - Add Access - Add Access - - apps/client/src/app/components/access-table/access-table.component.html - 8,10 - - Choose or drop a file here Choose or drop a file here @@ -10313,7 +10317,7 @@ Benchmark apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 154 + 184 @@ -10393,7 +10397,7 @@ Find holding... libs/ui/src/lib/assistant/assistant.component.ts - 87 + 89 @@ -10401,7 +10405,59 @@ No entries... libs/ui/src/lib/assistant/assistant.html - 62 + 63 + + + libs/ui/src/lib/assistant/assistant.html + 84 + + + + Asset Profile + Asset Profile + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 31,33 + + + + Do you really want to delete this asset profile? + Do you really want to delete this asset profile? + + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 182 + + + + Search + Search + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 16 + + + + Add Manually + Add Manually + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 19 + + + + Ghostfolio is a personal finance dashboard to keep track of your assets like stocks, ETFs or cryptocurrencies across multiple platforms. + Ghostfolio é um dashboard de finanças pessoais para acompanhar os seus activos como acções, ETFs ou criptomoedas em múltiplas plataformas. + + apps/client/src/app/pages/i18n/i18n-page.html + 4,7 + + + + Last All Time High + Last All Time High + + libs/ui/src/lib/benchmark/benchmark.component.html + 15 diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index 6c9b733c5..e0ca1f05f 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -722,7 +722,7 @@ apps/client/src/app/components/header/header.component.html - 345 + 348 apps/client/src/app/components/home-market/home-market.html @@ -746,7 +746,7 @@ apps/client/src/app/components/header/header.component.html - 248 + 251 apps/client/src/app/pages/resources/resources-page.html @@ -766,7 +766,7 @@ apps/client/src/app/components/header/header.component.html - 316 + 319 @@ -870,7 +870,7 @@ apps/client/src/app/components/header/header.component.html - 303 + 306 apps/client/src/app/pages/features/features-page.html @@ -910,11 +910,11 @@ apps/client/src/app/components/header/header.component.html - 260 + 263 apps/client/src/app/components/header/header.component.html - 329 + 332 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html @@ -1054,27 +1054,27 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 61 + 62 apps/client/src/app/components/user-account-settings/user-account-settings.html - 65 + 66 apps/client/src/app/components/user-account-settings/user-account-settings.html - 69 + 70 apps/client/src/app/components/user-account-settings/user-account-settings.html - 73 + 74 apps/client/src/app/components/user-account-settings/user-account-settings.html - 77 + 78 apps/client/src/app/components/user-account-settings/user-account-settings.html - 81 + 82 apps/client/src/app/pages/features/features-page.html @@ -1094,7 +1094,7 @@ Takma Ad apps/client/src/app/components/access-table/access-table.component.html - 15 + 3 apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html @@ -1106,7 +1106,7 @@ Hibe Alan / Alıcı apps/client/src/app/components/access-table/access-table.component.html - 22 + 10 @@ -1114,7 +1114,7 @@ Tip apps/client/src/app/components/access-table/access-table.component.html - 29 + 17 apps/client/src/app/components/admin-jobs/admin-jobs.html @@ -1138,7 +1138,7 @@ Ayrıntılar apps/client/src/app/components/access-table/access-table.component.html - 39 + 27 @@ -1146,7 +1146,7 @@ Geri Al apps/client/src/app/components/access-table/access-table.component.html - 66 + 54 @@ -1154,7 +1154,7 @@ Bu erişim iznini geri almayı gerçekten istiyor musunuz? apps/client/src/app/components/access-table/access-table.component.ts - 50 + 49 @@ -1194,7 +1194,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 44 + 46 @@ -1214,7 +1214,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 81 + 111 apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -1294,7 +1294,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 62 + 92 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -1422,7 +1422,7 @@ Sembol apps/client/src/app/components/admin-jobs/admin-jobs.html - 50 + 45 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -1430,7 +1430,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 57 + 87 + + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 34 @@ -1438,7 +1442,7 @@ Veri Kaynağı apps/client/src/app/components/admin-jobs/admin-jobs.html - 59 + 54 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -1454,7 +1458,7 @@ Deneme apps/client/src/app/components/admin-jobs/admin-jobs.html - 68 + 63 @@ -1462,7 +1466,7 @@ Oluşturuldu apps/client/src/app/components/admin-jobs/admin-jobs.html - 77 + 72 @@ -1470,7 +1474,7 @@ Tamamlandı apps/client/src/app/components/admin-jobs/admin-jobs.html - 86 + 81 @@ -1478,7 +1482,7 @@ Durum apps/client/src/app/components/admin-jobs/admin-jobs.html - 95 + 90 @@ -1486,23 +1490,23 @@ İşleri Sil apps/client/src/app/components/admin-jobs/admin-jobs.html - 140 + 135 - - Asset Profile - Varlık Profili + + Asset Profiles + Varlık Profili - apps/client/src/app/components/admin-jobs/admin-jobs.html - 37 + libs/ui/src/lib/assistant/assistant.html + 67 - - Historical Market Data - Tarihsel Piyasa Verisi + + Historical Market Data + Tarihsel Piyasa Verisi apps/client/src/app/components/admin-jobs/admin-jobs.html - 42 + 37,39 @@ -1510,7 +1514,7 @@ Veri Gör apps/client/src/app/components/admin-jobs/admin-jobs.html - 155 + 150 @@ -1518,7 +1522,7 @@ Hata İzini Görüntüle apps/client/src/app/components/admin-jobs/admin-jobs.html - 162 + 157 @@ -1526,7 +1530,7 @@ İşleri Sil apps/client/src/app/components/admin-jobs/admin-jobs.html - 165 + 160 @@ -1574,11 +1578,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 195 + 225 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 18 + 40 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -1594,7 +1598,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 95 + 97 apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html @@ -1618,11 +1622,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 202 + 232 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 25 + 47 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -1638,7 +1642,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 102 + 104 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -1674,7 +1678,7 @@ Filtrele... apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 269 + 279 @@ -1686,7 +1690,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 86 + 116 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1706,7 +1710,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 95 + 125 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1726,7 +1730,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 72 + 102 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -1748,6 +1752,10 @@ apps/client/src/app/components/admin-market-data/admin-market-data.html 78 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 58 + Sectors Count @@ -1814,7 +1822,7 @@ Sektör apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 110 + 140 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1826,7 +1834,7 @@ Ülke apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 119 + 149 apps/client/src/app/components/admin-users/admin-users.html @@ -1842,7 +1850,7 @@ Sektörler apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 125 + 155 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1858,7 +1866,7 @@ Ülkeler apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 135 + 165 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1870,7 +1878,7 @@ Sembol Eşleştirme apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 160 + 190 @@ -1878,7 +1886,7 @@ Veri Toplayıcı Yapılandırması apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 171 + 201 @@ -1886,11 +1894,11 @@ Not apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 182 + 212 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 72 + 74 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -1910,7 +1918,7 @@ Ad, sembol ya da ISIN apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 10 + 25 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2114,7 +2122,7 @@ apps/client/src/app/components/header/header.component.html - 221 + 224 apps/client/src/app/pages/accounts/accounts-page.html @@ -2170,7 +2178,7 @@ apps/client/src/app/components/header/header.component.html - 189 + 192 @@ -2282,7 +2290,7 @@ apps/client/src/app/components/header/header.component.html - 203 + 206 @@ -2294,7 +2302,7 @@ apps/client/src/app/components/header/header.component.html - 213 + 216 @@ -2306,7 +2314,7 @@ apps/client/src/app/components/header/header.component.html - 237 + 240 @@ -2314,7 +2322,7 @@ Ben apps/client/src/app/components/header/header.component.html - 170 + 173 @@ -2322,7 +2330,7 @@ Ghostfolio'm apps/client/src/app/components/header/header.component.html - 228 + 231 @@ -2330,7 +2338,7 @@ Ghostfolio Hakkında apps/client/src/app/components/header/header.component.html - 268 + 271 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -2342,7 +2350,7 @@ Giriş apps/client/src/app/components/header/header.component.html - 358 + 361 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -2354,7 +2362,7 @@ Haydi Başlayalım apps/client/src/app/components/header/header.component.html - 370 + 373 @@ -3237,7 +3245,7 @@ Account ID apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 89 + 91 @@ -3457,7 +3465,7 @@ Zen Mode apps/client/src/app/components/user-account-settings/user-account-settings.html - 136 + 137 apps/client/src/app/pages/features/features-page.html @@ -4167,6 +4175,10 @@ Import Import + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 80 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html 150 @@ -9261,7 +9273,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 35 + 31 @@ -9301,7 +9313,7 @@ Do you really want to remove this sign in method? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 184 + 181 @@ -9385,7 +9397,7 @@ Base Currency apps/client/src/app/components/user-account-settings/user-account-settings.html - 26 + 27 @@ -9393,7 +9405,7 @@ Language apps/client/src/app/components/user-account-settings/user-account-settings.html - 47 + 48 @@ -9401,7 +9413,7 @@ Locale apps/client/src/app/components/user-account-settings/user-account-settings.html - 90 + 91 @@ -9409,7 +9421,7 @@ Date and number format apps/client/src/app/components/user-account-settings/user-account-settings.html - 92 + 93 @@ -9417,7 +9429,7 @@ Appearance apps/client/src/app/components/user-account-settings/user-account-settings.html - 113 + 114 @@ -9425,7 +9437,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.html - 125 + 126 @@ -9433,7 +9445,7 @@ Light apps/client/src/app/components/user-account-settings/user-account-settings.html - 126 + 127 @@ -9441,7 +9453,7 @@ Dark apps/client/src/app/components/user-account-settings/user-account-settings.html - 127 + 128 @@ -9449,7 +9461,7 @@ Distraction-free experience for turbulent times apps/client/src/app/components/user-account-settings/user-account-settings.html - 137,139 + 138,140 @@ -9457,7 +9469,7 @@ Biometric Authentication apps/client/src/app/components/user-account-settings/user-account-settings.html - 152 + 154 @@ -9465,7 +9477,7 @@ Sign in with fingerprint apps/client/src/app/components/user-account-settings/user-account-settings.html - 153 + 155 @@ -9473,7 +9485,7 @@ Experimental Features apps/client/src/app/components/user-account-settings/user-account-settings.html - 169 + 172 @@ -9481,7 +9493,7 @@ Sneak peek at upcoming functionality apps/client/src/app/components/user-account-settings/user-account-settings.html - 170,172 + 173,175 @@ -9489,7 +9501,7 @@ User ID apps/client/src/app/components/user-account-settings/user-account-settings.html - 184 + 188 @@ -9497,7 +9509,7 @@ Export Data apps/client/src/app/components/user-account-settings/user-account-settings.html - 191 + 195 @@ -9641,7 +9653,7 @@ Change from All Time High libs/ui/src/lib/benchmark/benchmark.component.html - 12 + 31 @@ -9649,7 +9661,7 @@ from ATH libs/ui/src/lib/benchmark/benchmark.component.html - 14 + 33 @@ -10128,14 +10140,6 @@ 17 - - Add Access - Add Access - - apps/client/src/app/components/access-table/access-table.component.html - 8,10 - - Interest Interest @@ -10313,7 +10317,7 @@ Benchmark apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 154 + 184 @@ -10393,7 +10397,7 @@ Find holding... libs/ui/src/lib/assistant/assistant.component.ts - 87 + 89 @@ -10401,7 +10405,59 @@ No entries... libs/ui/src/lib/assistant/assistant.html - 62 + 63 + + + libs/ui/src/lib/assistant/assistant.html + 84 + + + + Asset Profile + Asset Profile + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 31,33 + + + + Do you really want to delete this asset profile? + Do you really want to delete this asset profile? + + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 182 + + + + Search + Search + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 16 + + + + Add Manually + Add Manually + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 19 + + + + Ghostfolio is a personal finance dashboard to keep track of your assets like stocks, ETFs or cryptocurrencies across multiple platforms. + Ghostfolio, hisse senetleri, ETF’ler veya kripto para birimleri gibi varlıklarınızı birden fazla platformda takip etmenizi sağlayan bir kişisel finans panosudur. + + apps/client/src/app/pages/i18n/i18n-page.html + 4,7 + + + + Last All Time High + Last All Time High + + libs/ui/src/lib/benchmark/benchmark.component.html + 15 diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index 512ad60e2..1edb3b26a 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -712,7 +712,7 @@ apps/client/src/app/components/header/header.component.html - 345 + 348 apps/client/src/app/components/home-market/home-market.html @@ -735,7 +735,7 @@ apps/client/src/app/components/header/header.component.html - 248 + 251 apps/client/src/app/pages/resources/resources-page.html @@ -754,7 +754,7 @@ apps/client/src/app/components/header/header.component.html - 316 + 319 @@ -855,7 +855,7 @@ apps/client/src/app/components/header/header.component.html - 303 + 306 apps/client/src/app/pages/features/features-page.html @@ -892,11 +892,11 @@ apps/client/src/app/components/header/header.component.html - 260 + 263 apps/client/src/app/components/header/header.component.html - 329 + 332 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html @@ -1034,27 +1034,27 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 61 + 62 apps/client/src/app/components/user-account-settings/user-account-settings.html - 65 + 66 apps/client/src/app/components/user-account-settings/user-account-settings.html - 69 + 70 apps/client/src/app/components/user-account-settings/user-account-settings.html - 73 + 74 apps/client/src/app/components/user-account-settings/user-account-settings.html - 77 + 78 apps/client/src/app/components/user-account-settings/user-account-settings.html - 81 + 82 apps/client/src/app/pages/features/features-page.html @@ -1072,7 +1072,7 @@ Alias apps/client/src/app/components/access-table/access-table.component.html - 15 + 3 apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html @@ -1083,14 +1083,14 @@ Grantee apps/client/src/app/components/access-table/access-table.component.html - 22 + 10 Type apps/client/src/app/components/access-table/access-table.component.html - 29 + 17 apps/client/src/app/components/admin-jobs/admin-jobs.html @@ -1113,21 +1113,21 @@ Details apps/client/src/app/components/access-table/access-table.component.html - 39 + 27 Revoke apps/client/src/app/components/access-table/access-table.component.html - 66 + 54 Do you really want to revoke this granted access? apps/client/src/app/components/access-table/access-table.component.ts - 50 + 49 @@ -1164,7 +1164,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 44 + 46 @@ -1183,7 +1183,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 81 + 111 apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -1260,7 +1260,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 62 + 92 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -1383,7 +1383,7 @@ Symbol apps/client/src/app/components/admin-jobs/admin-jobs.html - 50 + 45 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -1391,14 +1391,18 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 57 + 87 + + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 34 Data Source apps/client/src/app/components/admin-jobs/admin-jobs.html - 59 + 54 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -1413,70 +1417,70 @@ Attempts apps/client/src/app/components/admin-jobs/admin-jobs.html - 68 + 63 Created apps/client/src/app/components/admin-jobs/admin-jobs.html - 77 + 72 Finished apps/client/src/app/components/admin-jobs/admin-jobs.html - 86 + 81 Status apps/client/src/app/components/admin-jobs/admin-jobs.html - 95 + 90 Delete Jobs apps/client/src/app/components/admin-jobs/admin-jobs.html - 140 + 135 - - Asset Profile + + Asset Profiles - apps/client/src/app/components/admin-jobs/admin-jobs.html - 37 + libs/ui/src/lib/assistant/assistant.html + 67 - - Historical Market Data + + Historical Market Data apps/client/src/app/components/admin-jobs/admin-jobs.html - 42 + 37,39 View Data apps/client/src/app/components/admin-jobs/admin-jobs.html - 155 + 150 View Stacktrace apps/client/src/app/components/admin-jobs/admin-jobs.html - 162 + 157 Delete Job apps/client/src/app/components/admin-jobs/admin-jobs.html - 165 + 160 @@ -1520,11 +1524,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 195 + 225 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 18 + 40 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -1540,7 +1544,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 95 + 97 apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html @@ -1563,11 +1567,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 202 + 232 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 25 + 47 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -1583,7 +1587,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 102 + 104 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -1615,7 +1619,7 @@ Filter by... apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 269 + 279 @@ -1626,7 +1630,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 86 + 116 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1645,7 +1649,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 95 + 125 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1664,7 +1668,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 72 + 102 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -1684,6 +1688,10 @@ apps/client/src/app/components/admin-market-data/admin-market-data.html 78 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 58 + Sectors Count @@ -1742,7 +1750,7 @@ Sector apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 110 + 140 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1753,7 +1761,7 @@ Country apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 119 + 149 apps/client/src/app/components/admin-users/admin-users.html @@ -1768,7 +1776,7 @@ Sectors apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 125 + 155 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1783,7 +1791,7 @@ Countries apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 135 + 165 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1794,25 +1802,25 @@ Symbol Mapping apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 160 + 190 Scraper Configuration apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 171 + 201 Note apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 182 + 212 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 72 + 74 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -1830,7 +1838,7 @@ Name, symbol or ISIN apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 10 + 25 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2012,7 +2020,7 @@ apps/client/src/app/components/header/header.component.html - 221 + 224 apps/client/src/app/pages/accounts/accounts-page.html @@ -2062,7 +2070,7 @@ apps/client/src/app/components/header/header.component.html - 189 + 192 @@ -2162,7 +2170,7 @@ apps/client/src/app/components/header/header.component.html - 203 + 206 @@ -2173,7 +2181,7 @@ apps/client/src/app/components/header/header.component.html - 213 + 216 @@ -2184,28 +2192,28 @@ apps/client/src/app/components/header/header.component.html - 237 + 240 Me apps/client/src/app/components/header/header.component.html - 170 + 173 My Ghostfolio apps/client/src/app/components/header/header.component.html - 228 + 231 About Ghostfolio apps/client/src/app/components/header/header.component.html - 268 + 271 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -2216,7 +2224,7 @@ Sign in apps/client/src/app/components/header/header.component.html - 358 + 361 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -2227,7 +2235,7 @@ Get started apps/client/src/app/components/header/header.component.html - 370 + 373 @@ -3022,7 +3030,7 @@ Account ID apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 89 + 91 @@ -3219,7 +3227,7 @@ Zen Mode apps/client/src/app/components/user-account-settings/user-account-settings.html - 136 + 137 apps/client/src/app/pages/features/features-page.html @@ -3883,6 +3891,10 @@ Import + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 80 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html 150 @@ -8872,7 +8884,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 35 + 31 @@ -8907,7 +8919,7 @@ Do you really want to remove this sign in method? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 184 + 181 @@ -8970,105 +8982,105 @@ Base Currency apps/client/src/app/components/user-account-settings/user-account-settings.html - 26 + 27 Language apps/client/src/app/components/user-account-settings/user-account-settings.html - 47 + 48 Locale apps/client/src/app/components/user-account-settings/user-account-settings.html - 90 + 91 Date and number format apps/client/src/app/components/user-account-settings/user-account-settings.html - 92 + 93 Appearance apps/client/src/app/components/user-account-settings/user-account-settings.html - 113 + 114 Auto apps/client/src/app/components/user-account-settings/user-account-settings.html - 125 + 126 Light apps/client/src/app/components/user-account-settings/user-account-settings.html - 126 + 127 Dark apps/client/src/app/components/user-account-settings/user-account-settings.html - 127 + 128 Distraction-free experience for turbulent times apps/client/src/app/components/user-account-settings/user-account-settings.html - 137,139 + 138,140 Biometric Authentication apps/client/src/app/components/user-account-settings/user-account-settings.html - 152 + 154 Sign in with fingerprint apps/client/src/app/components/user-account-settings/user-account-settings.html - 153 + 155 Experimental Features apps/client/src/app/components/user-account-settings/user-account-settings.html - 169 + 172 Sneak peek at upcoming functionality apps/client/src/app/components/user-account-settings/user-account-settings.html - 170,172 + 173,175 User ID apps/client/src/app/components/user-account-settings/user-account-settings.html - 184 + 188 Export Data apps/client/src/app/components/user-account-settings/user-account-settings.html - 191 + 195 @@ -9196,14 +9208,14 @@ Change from All Time High libs/ui/src/lib/benchmark/benchmark.component.html - 12 + 31 from ATH libs/ui/src/lib/benchmark/benchmark.component.html - 14 + 33 @@ -9624,13 +9636,6 @@ 85 - - Add Access - - apps/client/src/app/components/access-table/access-table.component.html - 8,10 - - You are using the Live Demo. @@ -9744,7 +9749,7 @@ Benchmark apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 154 + 184 @@ -9769,7 +9774,7 @@ Find holding... libs/ui/src/lib/assistant/assistant.component.ts - 87 + 89 @@ -9826,7 +9831,11 @@ No entries... libs/ui/src/lib/assistant/assistant.html - 62 + 63 + + + libs/ui/src/lib/assistant/assistant.html + 84 @@ -9836,6 +9845,48 @@ 11 + + Asset Profile + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 31,33 + + + + Last All Time High + + libs/ui/src/lib/benchmark/benchmark.component.html + 15 + + + + Add Manually + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 19 + + + + Do you really want to delete this asset profile? + + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 182 + + + + Search + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 16 + + + + Ghostfolio is a personal finance dashboard to keep track of your assets like stocks, ETFs or cryptocurrencies across multiple platforms. + + apps/client/src/app/pages/i18n/i18n-page.html + 4,7 + + From 73ac4b41975e12f91a860205d4d13cdec424549e Mon Sep 17 00:00:00 2001 From: Basim Mohammed <107759928+Basimohd@users.noreply.github.com> Date: Thu, 19 Oct 2023 19:21:31 +0530 Subject: [PATCH 10/29] Add chart to account detail dialog (#2502) * Add chart to account detail dialog * Update changelog --------- Co-authored-by: Thomas <4159106+dtslvr@users.noreply.github.com> --- CHANGELOG.md | 6 +++ .../account-detail-dialog.component.scss | 4 ++ .../account-detail-dialog.component.ts | 50 +++++++++++++++++-- .../account-detail-dialog.html | 11 ++++ .../account-detail-dialog.module.ts | 2 + 5 files changed, 69 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e8b280ac2..b1f881dc5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### Added + +- Added a chart to the account detail dialog + ## 2.12.0 - 2023-10-17 ### Added diff --git a/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.scss b/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.scss index b63df0134..8831fb01d 100644 --- a/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.scss +++ b/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.scss @@ -3,5 +3,9 @@ .mat-mdc-dialog-content { max-height: unset; + + .chart-container { + aspect-ratio: 16 / 9; + } } } diff --git a/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts b/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts index 3a4746b6b..756df74cf 100644 --- a/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts +++ b/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts @@ -8,11 +8,11 @@ import { } from '@angular/core'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; import { DataService } from '@ghostfolio/client/services/data.service'; +import { ImpersonationStorageService } from '@ghostfolio/client/services/impersonation-storage.service'; import { UserService } from '@ghostfolio/client/services/user/user.service'; import { downloadAsFile } from '@ghostfolio/common/helper'; -import { User } from '@ghostfolio/common/interfaces'; +import { HistoricalDataItem, User } from '@ghostfolio/common/interfaces'; import { OrderWithAccount } from '@ghostfolio/common/types'; -import { translate } from '@ghostfolio/ui/i18n'; import Big from 'big.js'; import { format, parseISO } from 'date-fns'; import { isNumber } from 'lodash'; @@ -32,6 +32,9 @@ export class AccountDetailDialog implements OnDestroy, OnInit { public balance: number; public currency: string; public equity: number; + public hasImpersonationId: boolean; + public historicalDataItems: HistoricalDataItem[]; + public isLoadingChart: boolean; public name: string; public orders: OrderWithAccount[]; public platformName: string; @@ -46,6 +49,7 @@ export class AccountDetailDialog implements OnDestroy, OnInit { @Inject(MAT_DIALOG_DATA) public data: AccountDetailDialogParams, private dataService: DataService, public dialogRef: MatDialogRef, + private impersonationStorageService: ImpersonationStorageService, private userService: UserService ) { this.userService.stateChanged @@ -59,7 +63,9 @@ export class AccountDetailDialog implements OnDestroy, OnInit { }); } - public ngOnInit(): void { + public ngOnInit() { + this.isLoadingChart = true; + this.dataService .fetchAccount(this.data.accountId) .pipe(takeUntil(this.unsubscribeSubject)) @@ -101,9 +107,45 @@ export class AccountDetailDialog implements OnDestroy, OnInit { this.changeDetectorRef.markForCheck(); }); + + this.dataService + .fetchPortfolioPerformance({ + filters: [ + { + id: this.data.accountId, + type: 'ACCOUNT' + } + ], + range: 'max' + }) + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe(({ chart }) => { + this.historicalDataItems = chart.map( + ({ date, value, valueInPercentage }) => { + return { + date, + value: + this.hasImpersonationId || this.user.settings.isRestrictedView + ? valueInPercentage + : value + }; + } + ); + + this.isLoadingChart = false; + + this.changeDetectorRef.markForCheck(); + }); + + this.impersonationStorageService + .onChangeHasImpersonation() + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe((impersonationId) => { + this.hasImpersonationId = !!impersonationId; + }); } - public onClose(): void { + public onClose() { this.dialogRef.close(); } diff --git a/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html b/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html index 46a5ee7b0..02d1c917e 100644 --- a/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html +++ b/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html @@ -20,6 +20,17 @@
+
+ +
+
Date: Thu, 19 Oct 2023 20:28:01 +0530 Subject: [PATCH 11/29] Migrated users table in Admin Control to mat-table (#2469) * Migrated users table in Admin Control to mat-table * Update changelog --- CHANGELOG.md | 4 + .../admin-users/admin-users.component.ts | 30 +- .../components/admin-users/admin-users.html | 344 +++++++++++------- .../admin-users/admin-users.module.ts | 4 +- 4 files changed, 255 insertions(+), 127 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b1f881dc5..caf00d539 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Added a chart to the account detail dialog +### Changed + +- Changed the users table in the admin control panel to an `@angular/material` data table + ## 2.12.0 - 2023-10-17 ### Added diff --git a/apps/client/src/app/components/admin-users/admin-users.component.ts b/apps/client/src/app/components/admin-users/admin-users.component.ts index 48783c91b..7cccfe2f7 100644 --- a/apps/client/src/app/components/admin-users/admin-users.component.ts +++ b/apps/client/src/app/components/admin-users/admin-users.component.ts @@ -1,4 +1,5 @@ import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; +import { MatTableDataSource } from '@angular/material/table'; import { AdminService } from '@ghostfolio/client/services/admin.service'; import { DataService } from '@ghostfolio/client/services/data.service'; import { ImpersonationStorageService } from '@ghostfolio/client/services/impersonation-storage.service'; @@ -20,13 +21,15 @@ import { takeUntil } from 'rxjs/operators'; templateUrl: './admin-users.html' }) export class AdminUsersComponent implements OnDestroy, OnInit { + public dataSource: MatTableDataSource = + new MatTableDataSource(); public defaultDateFormat: string; + public displayedColumns: string[] = []; public getEmojiFlag = getEmojiFlag; public hasPermissionForSubscription: boolean; public hasPermissionToImpersonateAllUsers: boolean; public info: InfoItem; public user: User; - public users: AdminData['users']; private unsubscribeSubject = new Subject(); @@ -44,6 +47,29 @@ export class AdminUsersComponent implements OnDestroy, OnInit { permissions.enableSubscription ); + if (this.hasPermissionForSubscription) { + this.displayedColumns = [ + 'index', + 'user', + 'country', + 'registration', + 'accounts', + 'activities', + 'engagementPerDay', + 'lastRequest', + 'actions' + ]; + } else { + this.displayedColumns = [ + 'index', + 'user', + 'registration', + 'accounts', + 'activities', + 'actions' + ]; + } + this.userService.stateChanged .pipe(takeUntil(this.unsubscribeSubject)) .subscribe((state) => { @@ -118,7 +144,7 @@ export class AdminUsersComponent implements OnDestroy, OnInit { .fetchAdminData() .pipe(takeUntil(this.unsubscribeSubject)) .subscribe(({ users }) => { - this.users = users; + this.dataSource = new MatTableDataSource(users); this.changeDetectorRef.markForCheck(); }); diff --git a/apps/client/src/app/components/admin-users/admin-users.html b/apps/client/src/app/components/admin-users/admin-users.html index 71166a6e1..b6e296b95 100644 --- a/apps/client/src/app/components/admin-users/admin-users.html +++ b/apps/client/src/app/components/admin-users/admin-users.html @@ -2,136 +2,232 @@
- - - - - - - - - - - - - - - - - - - + + + + + + - - - - + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + +
#User - Country - - Registration - - Accounts - - Activities - - Engagement per Day - - Last Request -
{{ i + 1 }} -
- {{ userItem.id }} - {{ (userItem.id | slice:0:5) + '...' }} - -
-
- {{ getEmojiFlag(userItem.country) }} + + + # + + {{ i + 1 }} + + User + +
+ {{ element.id }} + {{ (element.id | slice:0:5) + '...' }} -
- {{ formatDistanceToNow(userItem.createdAt) }} - - - - - + + + Country + + {{ getEmojiFlag(element.country) }} - - + + + + + Registration + + {{ formatDistanceToNow(element.createdAt) }} + + Accounts + + + + Activities + + + + Engagement per Day + + + + Last Request + + {{ formatDistanceToNow(element.lastActivity) }} + + + + + + - - - - -
diff --git a/apps/client/src/app/components/admin-users/admin-users.module.ts b/apps/client/src/app/components/admin-users/admin-users.module.ts index 8c381b205..689b39787 100644 --- a/apps/client/src/app/components/admin-users/admin-users.module.ts +++ b/apps/client/src/app/components/admin-users/admin-users.module.ts @@ -2,6 +2,7 @@ import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { MatMenuModule } from '@angular/material/menu'; +import { MatTableModule } from '@angular/material/table'; import { GfPremiumIndicatorModule } from '@ghostfolio/ui/premium-indicator'; import { GfValueModule } from '@ghostfolio/ui/value'; @@ -15,7 +16,8 @@ import { AdminUsersComponent } from './admin-users.component'; GfPremiumIndicatorModule, GfValueModule, MatButtonModule, - MatMenuModule + MatMenuModule, + MatTableModule ], schemas: [CUSTOM_ELEMENTS_SCHEMA] }) From 29028a81f5dab592a6af571af14940744fb60a50 Mon Sep 17 00:00:00 2001 From: Aldrin <53973174+Dhoni77@users.noreply.github.com> Date: Thu, 19 Oct 2023 20:43:40 +0530 Subject: [PATCH 12/29] Add i18n service to query XML files (#2503) * Add i18n service to query XML files * Update changelog --------- Co-authored-by: Thomas <4159106+dtslvr@users.noreply.github.com> --- CHANGELOG.md | 1 + .../middlewares/html-template.middleware.ts | 19 ++---- apps/api/src/services/i18n/i18n.service.ts | 67 +++++++++++++++++++ 3 files changed, 75 insertions(+), 12 deletions(-) create mode 100644 apps/api/src/services/i18n/i18n.service.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index caf00d539..e3c00bdc2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Added a chart to the account detail dialog +- Added an `i18n` service to query `messages.*.xlf` files on the server ### Changed diff --git a/apps/api/src/middlewares/html-template.middleware.ts b/apps/api/src/middlewares/html-template.middleware.ts index 9d44bdbe0..f0358eca6 100644 --- a/apps/api/src/middlewares/html-template.middleware.ts +++ b/apps/api/src/middlewares/html-template.middleware.ts @@ -2,6 +2,7 @@ import * as fs from 'fs'; import { join } from 'path'; import { environment } from '@ghostfolio/api/environments/environment'; +import { I18nService } from '@ghostfolio/api/services/i18n/i18n.service'; import { DEFAULT_LANGUAGE_CODE, DEFAULT_ROOT_URL, @@ -11,20 +12,11 @@ import { DATE_FORMAT, interpolate } from '@ghostfolio/common/helper'; import { format } from 'date-fns'; import { NextFunction, Request, Response } from 'express'; -const descriptions = { - de: 'Mit dem Finanz-Dashboard Ghostfolio können Sie Ihr Vermögen in Form von Aktien, ETFs oder Kryptowährungen verteilt über mehrere Finanzinstitute überwachen.', - en: 'Ghostfolio is a personal finance dashboard to keep track of your assets like stocks, ETFs or cryptocurrencies across multiple platforms.', - es: 'Ghostfolio es un dashboard de finanzas personales para hacer un seguimiento de tus activos como acciones, ETFs o criptodivisas a través de múltiples plataformas.', - fr: 'Ghostfolio est un dashboard de finances personnelles qui permet de suivre vos actifs comme les actions, les ETF ou les crypto-monnaies sur plusieurs plateformes.', - it: 'Ghostfolio è un dashboard di finanza personale per tenere traccia delle vostre attività come azioni, ETF o criptovalute su più piattaforme.', - nl: 'Ghostfolio is een persoonlijk financieel dashboard om uw activa zoals aandelen, ETF’s of cryptocurrencies over meerdere platforms bij te houden.', - pt: 'Ghostfolio é um dashboard de finanças pessoais para acompanhar os seus activos como acções, ETFs ou criptomoedas em múltiplas plataformas.', - tr: 'Ghostfolio, hisse senetleri, ETF’ler veya kripto para birimleri gibi varlıklarınızı birden fazla platformda takip etmenizi sağlayan bir kişisel finans panosudur.' -}; - const title = 'Ghostfolio – Open Source Wealth Management Software'; const titleShort = 'Ghostfolio'; +const i18nService = new I18nService(); + let indexHtmlMap: { [languageCode: string]: string } = {}; try { @@ -130,7 +122,10 @@ export const HtmlTemplateMiddleware = async ( languageCode, path, rootUrl, - description: descriptions[languageCode], + description: i18nService.getTranslation({ + languageCode, + id: 'metaDescription' + }), featureGraphicPath: locales[path]?.featureGraphicPath ?? 'assets/cover.png', title: locales[path]?.title ?? title diff --git a/apps/api/src/services/i18n/i18n.service.ts b/apps/api/src/services/i18n/i18n.service.ts new file mode 100644 index 000000000..35c7b638d --- /dev/null +++ b/apps/api/src/services/i18n/i18n.service.ts @@ -0,0 +1,67 @@ +import { readFileSync, readdirSync } from 'fs'; +import { join } from 'path'; + +import { DEFAULT_LANGUAGE_CODE } from '@ghostfolio/common/config'; +import { Logger } from '@nestjs/common'; +import * as cheerio from 'cheerio'; + +export class I18nService { + private localesPath = join(__dirname, 'assets', 'locales'); + private translations: { [locale: string]: cheerio.CheerioAPI } = {}; + + public constructor() { + this.loadFiles(); + } + + public getTranslation({ + id, + languageCode + }: { + id: string; + languageCode: string; + }): string { + const $ = this.translations[languageCode]; + + if (!$) { + Logger.warn(`Translation not found for locale '${languageCode}'`); + } + + const translatedText = $( + `trans-unit[id="${id}"] > ${ + languageCode === DEFAULT_LANGUAGE_CODE ? 'source' : 'target' + }` + ).text(); + + if (!translatedText) { + Logger.warn( + `Translation not found for id '${id}' in locale '${languageCode}'` + ); + } + + return translatedText; + } + + private loadFiles() { + try { + const files = readdirSync(this.localesPath, 'utf-8'); + + for (const file of files) { + const xmlData = readFileSync(join(this.localesPath, file), 'utf8'); + this.translations[this.parseLanguageCode(file)] = + this.parseXml(xmlData); + } + } catch (error) { + Logger.error(error, 'I18nService'); + } + } + + private parseLanguageCode(aFileName: string) { + const match = aFileName.match(/\.([a-zA-Z]+)\.xlf$/); + + return match ? match[1] : DEFAULT_LANGUAGE_CODE; + } + + private parseXml(xmlData: string): cheerio.CheerioAPI { + return cheerio.load(xmlData, { xmlMode: true }); + } +} From f66edf8de04bcda892ab83b9b458e1d5256853d4 Mon Sep 17 00:00:00 2001 From: Basim Mohammed <107759928+Basimohd@users.noreply.github.com> Date: Fri, 20 Oct 2023 11:48:34 +0530 Subject: [PATCH 13/29] Add membership card component (#2507) * Add membership card component * Update changelog --------- Co-authored-by: Thomas <4159106+dtslvr@users.noreply.github.com> --- CHANGELOG.md | 1 + .../user-account-membership.html | 18 ++++--------- .../user-account-membership.module.ts | 2 ++ libs/ui/src/lib/logo/logo.component.html | 6 ++++- libs/ui/src/lib/logo/logo.component.ts | 1 + libs/ui/src/lib/membership-card/index.ts | 1 + .../membership-card.component.html | 25 +++++++++++++++++++ .../membership-card.component.scss | 24 ++++++++++++++++++ .../membership-card.component.ts | 14 +++++++++++ .../membership-card/membership-card.module.ts | 14 +++++++++++ 10 files changed, 92 insertions(+), 14 deletions(-) create mode 100644 libs/ui/src/lib/membership-card/index.ts create mode 100644 libs/ui/src/lib/membership-card/membership-card.component.html create mode 100644 libs/ui/src/lib/membership-card/membership-card.component.scss create mode 100644 libs/ui/src/lib/membership-card/membership-card.component.ts create mode 100644 libs/ui/src/lib/membership-card/membership-card.module.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index e3c00bdc2..2c7cf1b21 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Changed the users table in the admin control panel to an `@angular/material` data table +- Improved the styling of the membership status ## 2.12.0 - 2023-10-17 diff --git a/apps/client/src/app/components/user-account-membership/user-account-membership.html b/apps/client/src/app/components/user-account-membership/user-account-membership.html index 1681e3e16..191c63184 100644 --- a/apps/client/src/app/components/user-account-membership/user-account-membership.html +++ b/apps/client/src/app/components/user-account-membership/user-account-membership.html @@ -2,21 +2,13 @@

Membership

+
- -
- Valid until {{ - user?.subscription?.expiresAt | date: defaultDateFormat }} -
+ > {{ label ?? 'Ghostfolio' }} diff --git a/libs/ui/src/lib/logo/logo.component.ts b/libs/ui/src/lib/logo/logo.component.ts index ecb3885dc..648e771dd 100644 --- a/libs/ui/src/lib/logo/logo.component.ts +++ b/libs/ui/src/lib/logo/logo.component.ts @@ -13,6 +13,7 @@ import { }) export class LogoComponent { @HostBinding('class') @Input() size: 'large' | 'medium' = 'medium'; + @Input() color: string; @Input() label: string; @Input() showLabel = true; diff --git a/libs/ui/src/lib/membership-card/index.ts b/libs/ui/src/lib/membership-card/index.ts new file mode 100644 index 000000000..eccd8c4fd --- /dev/null +++ b/libs/ui/src/lib/membership-card/index.ts @@ -0,0 +1 @@ +export * from './membership-card.module'; diff --git a/libs/ui/src/lib/membership-card/membership-card.component.html b/libs/ui/src/lib/membership-card/membership-card.component.html new file mode 100644 index 000000000..048a6b79a --- /dev/null +++ b/libs/ui/src/lib/membership-card/membership-card.component.html @@ -0,0 +1,25 @@ + +
+ +
+
+
+
Membership
+
{{ name }}
+
+
+
Valid until
+
+ {{ expiresAt }} +
+
+
+
diff --git a/libs/ui/src/lib/membership-card/membership-card.component.scss b/libs/ui/src/lib/membership-card/membership-card.component.scss new file mode 100644 index 000000000..e9a83a67b --- /dev/null +++ b/libs/ui/src/lib/membership-card/membership-card.component.scss @@ -0,0 +1,24 @@ +:host { + display: block; + max-width: 25rem; + + .card-item { + aspect-ratio: 1.586; + background-color: #343a40 !important; + border-radius: 1rem; + box-shadow: 0 1px 6px rgba(0, 0, 0, 0.3); + + &.premium { + background-color: #1d2124 !important; + } + + .card-item-heading { + font-size: 13px; + } + + .card-item-name { + color: rgba(var(--light-primary-text)); + font-size: 18px; + } + } +} diff --git a/libs/ui/src/lib/membership-card/membership-card.component.ts b/libs/ui/src/lib/membership-card/membership-card.component.ts new file mode 100644 index 000000000..0ae760aba --- /dev/null +++ b/libs/ui/src/lib/membership-card/membership-card.component.ts @@ -0,0 +1,14 @@ +import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; + +@Component({ + changeDetection: ChangeDetectionStrategy.OnPush, + selector: 'gf-membership-card', + styleUrls: ['./membership-card.component.scss'], + templateUrl: './membership-card.component.html' +}) +export class MembershipCardComponent { + @Input() public expiresAt: string; + @Input() public name: string; + + public routerLinkPricing = ['/' + $localize`pricing`]; +} diff --git a/libs/ui/src/lib/membership-card/membership-card.module.ts b/libs/ui/src/lib/membership-card/membership-card.module.ts new file mode 100644 index 000000000..4f51cc756 --- /dev/null +++ b/libs/ui/src/lib/membership-card/membership-card.module.ts @@ -0,0 +1,14 @@ +import { CommonModule } from '@angular/common'; +import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; +import { RouterModule } from '@angular/router'; +import { GfLogoModule } from '@ghostfolio/ui/logo'; + +import { MembershipCardComponent } from './membership-card.component'; + +@NgModule({ + declarations: [MembershipCardComponent], + exports: [MembershipCardComponent], + imports: [CommonModule, GfLogoModule, RouterModule], + schemas: [CUSTOM_ELEMENTS_SCHEMA] +}) +export class GfMembershipCardModule {} From e7956943babea4ebbac47c356611accd3808f356 Mon Sep 17 00:00:00 2001 From: Arshad Jamal Date: Fri, 20 Oct 2023 11:51:23 +0530 Subject: [PATCH 14/29] Make holdings request only once (#2453) * Make holdings request only once * Update changelog --- CHANGELOG.md | 4 ++++ .../app/components/home-holdings/home-holdings.component.ts | 2 -- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2c7cf1b21..643df3522 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Changed the users table in the admin control panel to an `@angular/material` data table - Improved the styling of the membership status +### Fixed + +- Fixed an issue where holdings were requested twice from the server + ## 2.12.0 - 2023-10-17 ### Added diff --git a/apps/client/src/app/components/home-holdings/home-holdings.component.ts b/apps/client/src/app/components/home-holdings/home-holdings.component.ts index a83e71e88..bae022133 100644 --- a/apps/client/src/app/components/home-holdings/home-holdings.component.ts +++ b/apps/client/src/app/components/home-holdings/home-holdings.component.ts @@ -81,8 +81,6 @@ export class HomeHoldingsComponent implements OnDestroy, OnInit { .subscribe((impersonationId) => { this.hasImpersonationId = !!impersonationId; }); - - this.update(); } public onChangeDateRange(dateRange: DateRange) { From 60b2115e3b0dad5dc2f22465f3b6bda88dbb4996 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Fri, 20 Oct 2023 08:24:49 +0200 Subject: [PATCH 15/29] Release 2.13.0 (#2514) --- CHANGELOG.md | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 643df3522..169995508 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 2.13.0 - 2023-10-20 ### Added diff --git a/package.json b/package.json index 3b5247252..f09c428d3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ghostfolio", - "version": "2.12.0", + "version": "2.13.0", "homepage": "https://ghostfol.io", "license": "AGPL-3.0", "repository": "https://github.com/ghostfolio/ghostfolio", From 750c6276138389334f26e083fe48158c9b7df3ab Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Fri, 20 Oct 2023 17:37:55 +0200 Subject: [PATCH 16/29] Feature/allow to edit market data of today (#2515) * Allow to edit today's market data * Update changelog --- CHANGELOG.md | 6 ++++++ .../admin-market-data-detail.component.html | 6 +++++- .../admin-market-data-detail.component.scss | 1 - .../admin-market-data-detail.component.ts | 10 +++------- 4 files changed, 14 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 169995508..69ea038f7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### Changed + +- Allowed to edit today’s historical market data in the asset profile details dialog of the admin control panel + ## 2.13.0 - 2023-10-20 ### Added diff --git a/apps/client/src/app/components/admin-market-data-detail/admin-market-data-detail.component.html b/apps/client/src/app/components/admin-market-data-detail/admin-market-data-detail.component.html index d6f67faa3..c6e972f45 100644 --- a/apps/client/src/app/components/admin-market-data-detail/admin-market-data-detail.component.html +++ b/apps/client/src/app/components/admin-market-data-detail/admin-market-data-detail.component.html @@ -9,7 +9,11 @@ [showYAxis]="true" [symbol]="symbol" > -
+
{{ itemByMonth.key }}
{ + this.historicalDataItems = this.marketData.map(({ date, marketPrice }) => { return { - date: format(marketDataItem.date, DATE_FORMAT), - value: marketDataItem.marketPrice + date: format(date, DATE_FORMAT), + value: marketPrice }; }); @@ -157,10 +157,6 @@ export class AdminMarketDataDetailComponent implements OnChanges, OnInit { const date = parseISO(`${yearMonth}-${day}`); const marketPrice = this.marketDataByMonth[yearMonth]?.[day]?.marketPrice; - if (isSameDay(date, new Date())) { - return; - } - const dialogRef = this.dialog.open(MarketDataDetailDialog, { data: { date, From 6a19eab425a3e38a6faec427840658bfa0660cdc Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Fri, 20 Oct 2023 22:05:27 +0200 Subject: [PATCH 17/29] Feature/improve membership card (#2517) * Improve style * Add animated border --- .../user-account-membership.html | 68 ++++++++++--------- libs/ui/src/lib/logo/logo.component.html | 6 +- libs/ui/src/lib/logo/logo.component.scss | 8 +-- libs/ui/src/lib/logo/logo.component.ts | 1 - .../membership-card.component.html | 44 ++++++------ .../membership-card.component.scss | 66 ++++++++++++++---- 6 files changed, 115 insertions(+), 78 deletions(-) diff --git a/apps/client/src/app/components/user-account-membership/user-account-membership.html b/apps/client/src/app/components/user-account-membership/user-account-membership.html index 191c63184..4031ce9a0 100644 --- a/apps/client/src/app/components/user-account-membership/user-account-membership.html +++ b/apps/client/src/app/components/user-account-membership/user-account-membership.html @@ -2,40 +2,42 @@

Membership

- -
-
-
- - -
- {{ baseCurrency }} {{ price }} {{ baseCurrency }} {{ price - coupon - }} - {{ baseCurrency }} {{ price }} per year -
-
+
+ +
+ + +
+ {{ baseCurrency }} {{ price }} {{ baseCurrency }} {{ price - coupon + }} + {{ baseCurrency }} {{ price }} per year +
+
+
Try Premium @@ -46,7 +48,7 @@ > + > {{ label ?? 'Ghostfolio' }} diff --git a/libs/ui/src/lib/logo/logo.component.scss b/libs/ui/src/lib/logo/logo.component.scss index 27fb1b311..c1ab3776a 100644 --- a/libs/ui/src/lib/logo/logo.component.scss +++ b/libs/ui/src/lib/logo/logo.component.scss @@ -4,18 +4,12 @@ } .logo { - background-color: rgba(var(--dark-primary-text)); + background-color: currentColor; margin-top: -2px; mask: url('/assets/ghost.svg') no-repeat center; } } -:host-context(.is-dark-theme) { - .logo { - background-color: rgba(var(--light-primary-text)); - } -} - :host-context(.large) { .label { font-size: 3rem; diff --git a/libs/ui/src/lib/logo/logo.component.ts b/libs/ui/src/lib/logo/logo.component.ts index 648e771dd..ecb3885dc 100644 --- a/libs/ui/src/lib/logo/logo.component.ts +++ b/libs/ui/src/lib/logo/logo.component.ts @@ -13,7 +13,6 @@ import { }) export class LogoComponent { @HostBinding('class') @Input() size: 'large' | 'medium' = 'medium'; - @Input() color: string; @Input() label: string; @Input() showLabel = true; diff --git a/libs/ui/src/lib/membership-card/membership-card.component.html b/libs/ui/src/lib/membership-card/membership-card.component.html index 048a6b79a..d069274ca 100644 --- a/libs/ui/src/lib/membership-card/membership-card.component.html +++ b/libs/ui/src/lib/membership-card/membership-card.component.html @@ -1,25 +1,29 @@ - -
- -
-
-
-
Membership
-
{{ name }}
+
+
+
-
diff --git a/libs/ui/src/lib/membership-card/membership-card.component.scss b/libs/ui/src/lib/membership-card/membership-card.component.scss index e9a83a67b..a7cbce91a 100644 --- a/libs/ui/src/lib/membership-card/membership-card.component.scss +++ b/libs/ui/src/lib/membership-card/membership-card.component.scss @@ -1,24 +1,66 @@ :host { + --borderRadius: 1rem; + --borderWidth: 2px; + display: block; max-width: 25rem; + padding-top: calc(1 * var(--borderWidth)); + width: 100%; - .card-item { - aspect-ratio: 1.586; - background-color: #343a40 !important; - border-radius: 1rem; - box-shadow: 0 1px 6px rgba(0, 0, 0, 0.3); + .card-container { + border-radius: var(--borderRadius); + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.15); - &.premium { - background-color: #1d2124 !important; - } + &:after { + animation: animatedborder 7s ease alternate infinite; + background: linear-gradient(60deg, #5073b8, #1098ad, #07b39b, #6fba82); + background-size: 300% 300%; + border-radius: var(--borderRadius); + content: ''; + height: calc(100% + var(--borderWidth) * 2); + left: calc(-1 * var(--borderWidth)); + top: calc(-1 * var(--borderWidth)); + position: absolute; + width: calc(100% + var(--borderWidth) * 2); + z-index: -1; - .card-item-heading { - font-size: 13px; + @keyframes animatedborder { + 0% { + background-position: 0% 50%; + } + 50% { + background-position: 100% 50%; + } + 100% { + background-position: 0% 50%; + } + } } - .card-item-name { + .card-item { + aspect-ratio: 1.586; + background-color: #1d2124; + border-radius: calc(var(--borderRadius) - var(--borderWidth)); color: rgba(var(--light-primary-text)); - font-size: 18px; + + .heading { + font-size: 13px; + } + + .value { + font-size: 18px; + } + } + + &:not(.premium) { + &:after { + opacity: 0; + } + + .card-item { + background-color: #ffffff; + color: rgba(var(--dark-primary-text)); + } } } } From ac0ad48a65ad50d5d427eea38fc767187d0175bb Mon Sep 17 00:00:00 2001 From: Don L Date: Fri, 20 Oct 2023 13:07:57 -0700 Subject: [PATCH 18/29] Display invalid activity in csv import (#2460) * Display invalid activity in csv import * Update changelog --- CHANGELOG.md | 1 + .../import-activities-dialog.component.ts | 4 +++- test/import/invalid-multi-line.csv | 5 +++++ 3 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 test/import/invalid-multi-line.csv diff --git a/CHANGELOG.md b/CHANGELOG.md index 69ea038f7..c909a68b4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Improved the error message in the activities import for `csv` files - Allowed to edit today’s historical market data in the asset profile details dialog of the admin control panel ## 2.13.0 - 2023-10-20 diff --git a/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts b/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts index d11cafdb9..1427af92f 100644 --- a/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts +++ b/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -267,6 +267,8 @@ export class ImportActivitiesDialog implements OnDestroy { return; } else if (file.name.endsWith('.csv')) { + const content = fileContent.split('\n').slice(1); + try { const data = await this.importActivitiesService.importCsv({ fileContent, @@ -277,7 +279,7 @@ export class ImportActivitiesDialog implements OnDestroy { } catch (error) { console.error(error); this.handleImportError({ - activities: error?.activities ?? [], + activities: error?.activities ?? content, error: { error: { message: error?.error?.message ?? [error?.message] } } diff --git a/test/import/invalid-multi-line.csv b/test/import/invalid-multi-line.csv new file mode 100644 index 000000000..ed9da3378 --- /dev/null +++ b/test/import/invalid-multi-line.csv @@ -0,0 +1,5 @@ +Date,Code,Currency,Price,Quantity,Action,Fee,Note +16-09-2021,MSFT,USD,298.580,5,buy,19.00,My first order 🤓 +17/11/2021,MSFT,USD,0.62,5,dividend,0.00 +01.01.2022,Penthouse Apartment,USD,500000.0,1,,0.00 +20500606,MSFT,USD,0.00,0,buy,0.00 From 1666486940c12aaec4e7ef301c9fac3c7f72f89f Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Fri, 20 Oct 2023 22:36:03 +0200 Subject: [PATCH 19/29] Bugfix/trim text in i18n service (#2520) * Trim text * Update changelog --- CHANGELOG.md | 4 ++++ apps/api/src/services/i18n/i18n.service.ts | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c909a68b4..4c0c70bb6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Improved the error message in the activities import for `csv` files - Allowed to edit today’s historical market data in the asset profile details dialog of the admin control panel +### Fixed + +- Trimmed text in `i18n` service to query `messages.*.xlf` files on the server + ## 2.13.0 - 2023-10-20 ### Added diff --git a/apps/api/src/services/i18n/i18n.service.ts b/apps/api/src/services/i18n/i18n.service.ts index 35c7b638d..39dab2d06 100644 --- a/apps/api/src/services/i18n/i18n.service.ts +++ b/apps/api/src/services/i18n/i18n.service.ts @@ -38,7 +38,7 @@ export class I18nService { ); } - return translatedText; + return translatedText.trim(); } private loadFiles() { From a59f9fa037f514505a6c77b5e65b29b66e66bbd1 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 21 Oct 2023 09:41:07 +0200 Subject: [PATCH 20/29] Feature/remove version from client (#2522) * Remove version * Update changelog --- CHANGELOG.md | 1 + apps/client/src/app/app.component.html | 1 - apps/client/src/app/app.component.ts | 2 -- .../app/components/admin-overview/admin-overview.component.ts | 1 - .../app/pages/about/overview/about-overview-page.component.ts | 2 -- .../src/app/pages/about/overview/about-overview-page.html | 3 --- apps/client/src/environments/environment.prod.ts | 3 +-- apps/client/src/environments/environment.ts | 3 +-- 8 files changed, 3 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4c0c70bb6..27f5aaedc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Improved the error message in the activities import for `csv` files +- Removed the application version from the client - Allowed to edit today’s historical market data in the asset profile details dialog of the admin control panel ### Fixed diff --git a/apps/client/src/app/app.component.html b/apps/client/src/app/app.component.html index a52261969..e792598a7 100644 --- a/apps/client/src/app/app.component.html +++ b/apps/client/src/app/app.component.html @@ -165,7 +165,6 @@
© 2021 - {{ currentYear }} Ghostfolio - {{ version }}
diff --git a/apps/client/src/app/app.component.ts b/apps/client/src/app/app.component.ts index d1d9529ce..2317279b1 100644 --- a/apps/client/src/app/app.component.ts +++ b/apps/client/src/app/app.component.ts @@ -17,7 +17,6 @@ import { DeviceDetectorService } from 'ngx-device-detector'; import { Subject } from 'rxjs'; import { filter, takeUntil } from 'rxjs/operators'; -import { environment } from '../environments/environment'; import { DataService } from './services/data.service'; import { TokenStorageService } from './services/token-storage.service'; import { UserService } from './services/user/user.service'; @@ -60,7 +59,6 @@ export class AppComponent implements OnDestroy, OnInit { public routerLinkResources = ['/' + $localize`resources`]; public showFooter = false; public user: User; - public version = environment.version; private unsubscribeSubject = new Subject(); diff --git a/apps/client/src/app/components/admin-overview/admin-overview.component.ts b/apps/client/src/app/components/admin-overview/admin-overview.component.ts index b1e91dfc9..97573cdbe 100644 --- a/apps/client/src/app/components/admin-overview/admin-overview.component.ts +++ b/apps/client/src/app/components/admin-overview/admin-overview.component.ts @@ -1,6 +1,5 @@ import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; import { MatCheckboxChange } from '@angular/material/checkbox'; -import { environment } from '@ghostfolio/client/../environments/environment'; import { AdminService } from '@ghostfolio/client/services/admin.service'; import { CacheService } from '@ghostfolio/client/services/cache.service'; import { DataService } from '@ghostfolio/client/services/data.service'; diff --git a/apps/client/src/app/pages/about/overview/about-overview-page.component.ts b/apps/client/src/app/pages/about/overview/about-overview-page.component.ts index 471874dc2..4c15f73b0 100644 --- a/apps/client/src/app/pages/about/overview/about-overview-page.component.ts +++ b/apps/client/src/app/pages/about/overview/about-overview-page.component.ts @@ -1,5 +1,4 @@ import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; -import { environment } from '@ghostfolio/client/../environments/environment'; import { DataService } from '@ghostfolio/client/services/data.service'; import { UserService } from '@ghostfolio/client/services/user/user.service'; import { User } from '@ghostfolio/common/interfaces'; @@ -20,7 +19,6 @@ export class AboutOverviewPageComponent implements OnDestroy, OnInit { public routerLinkFaq = ['/' + $localize`faq`]; public routerLinkFeatures = ['/' + $localize`features`]; public user: User; - public version = environment.version; private unsubscribeSubject = new Subject(); diff --git a/apps/client/src/app/pages/about/overview/about-overview-page.html b/apps/client/src/app/pages/about/overview/about-overview-page.html index a9bada763..4dc9fbf78 100644 --- a/apps/client/src/app/pages/about/overview/about-overview-page.html +++ b/apps/client/src/app/pages/about/overview/about-overview-page.html @@ -35,9 +35,6 @@ title="Contributors to Ghostfolio" >contributors. - - This instance is running Ghostfolio {{ version }}. - Check the system status at Date: Sat, 21 Oct 2023 10:25:05 +0200 Subject: [PATCH 21/29] Feature/change fees interest and search to general availability (#2525) * Change features to general availability * Fees on account level * Interest on account level * Search for a holding * Update changelog * Add documentation for experimental features --- CHANGELOG.md | 3 +++ DEVELOPMENT.md | 12 ++++++++++++ apps/api/src/app/user/user.service.ts | 8 ++++---- .../create-or-update-activity-dialog.html | 10 ++-------- 4 files changed, 21 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 27f5aaedc..e32a20c45 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Moved the fees on account level feature from experimental to general availability +- Moved the interest on account level feature from experimental to general availability +- Moved the search for a holding from experimental to general availability - Improved the error message in the activities import for `csv` files - Removed the application version from the client - Allowed to edit today’s historical market data in the asset profile details dialog of the admin control panel diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index a950e5672..ea581c8cf 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -1,5 +1,17 @@ # Ghostfolio Development Guide +## Experimental Features + +New functionality can be enabled using a feature flag switch from the user settings. + +### Backend + +Remove permission in `UserService` using `without()` + +### Frontend + +Use `*ngIf="user?.settings?.isExperimentalFeatures"` in HTML template + ## Git ### Rebase diff --git a/apps/api/src/app/user/user.service.ts b/apps/api/src/app/user/user.service.ts index a176c43f3..91490528e 100644 --- a/apps/api/src/app/user/user.service.ts +++ b/apps/api/src/app/user/user.service.ts @@ -164,10 +164,10 @@ export class UserService { let currentPermissions = getPermissions(user.role); if (!(user.Settings.settings as UserSettings).isExperimentalFeatures) { - currentPermissions = without( - currentPermissions, - permissions.accessAssistant - ); + // currentPermissions = without( + // currentPermissions, + // permissions.xyz + // ); } if (this.configurationService.get('ENABLE_FEATURE_SUBSCRIPTION')) { diff --git a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html index 4e600b110..c28f87d93 100644 --- a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html +++ b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -21,10 +21,7 @@ >Stocks, ETFs, bonds, cryptocurrencies, commodities - + {{ typesTranslationMap['FEE'] }} One-time fee, annual account feesDistribution of corporate earnings - + {{ typesTranslationMap['INTEREST'] }} Revenue for lending out money Date: Sat, 21 Oct 2023 18:12:50 +0200 Subject: [PATCH 22/29] Feature/setup open figi (#2526) * Setup OpenFIGI * Update changelog --- CHANGELOG.md | 5 ++ apps/api/src/app/import/import.service.ts | 9 ++ .../configuration/configuration.service.ts | 1 + .../data-gathering/data-gathering.service.ts | 9 ++ .../data-enhancer/data-enhancer.module.ts | 10 ++- .../openfigi/openfigi.service.ts | 85 +++++++++++++++++++ .../interfaces/environment.interface.ts | 1 + libs/common/src/lib/helper.ts | 9 ++ .../migration.sql | 5 ++ prisma/schema.prisma | 3 + 10 files changed, 136 insertions(+), 1 deletion(-) create mode 100644 apps/api/src/services/data-provider/data-enhancer/openfigi/openfigi.service.ts create mode 100644 prisma/migrations/20231021094346_added_figi_figi_composite_and_figi_share_class_to_symbol_profile/migration.sql diff --git a/CHANGELOG.md b/CHANGELOG.md index e32a20c45..0fe6d0aa1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +### Added + +- Added the _OpenFIGI_ data enhancer for _Financial Instrument Global Identifier_ (FIGI) +- Added `figi`, `figiComposite` and `figiShareClass` to the asset profile model + ### Changed - Moved the fees on account level feature from experimental to general availability diff --git a/apps/api/src/app/import/import.service.ts b/apps/api/src/app/import/import.service.ts index 83d062b83..8fd35f8dd 100644 --- a/apps/api/src/app/import/import.service.ts +++ b/apps/api/src/app/import/import.service.ts @@ -280,6 +280,9 @@ export class ImportService { createdAt, currency, dataSource, + figi, + figiComposite, + figiShareClass, id, isin, name, @@ -350,6 +353,9 @@ export class ImportService { createdAt, currency, dataSource, + figi, + figiComposite, + figiShareClass, id, isin, name, @@ -509,6 +515,9 @@ export class ImportService { comment: null, countries: null, createdAt: undefined, + figi: null, + figiComposite: null, + figiShareClass: null, id: undefined, isin: null, name: null, diff --git a/apps/api/src/services/configuration/configuration.service.ts b/apps/api/src/services/configuration/configuration.service.ts index 40a04f5a0..b355d5a20 100644 --- a/apps/api/src/services/configuration/configuration.service.ts +++ b/apps/api/src/services/configuration/configuration.service.ts @@ -38,6 +38,7 @@ export class ConfigurationService { JWT_SECRET_KEY: str({}), MAX_ACTIVITIES_TO_IMPORT: num({ default: Number.MAX_SAFE_INTEGER }), MAX_ITEM_IN_CACHE: num({ default: 9999 }), + OPEN_FIGI_API_KEY: str({ default: '' }), PORT: port({ default: 3333 }), RAPID_API_API_KEY: str({ default: '' }), REDIS_HOST: str({ default: 'localhost' }), diff --git a/apps/api/src/services/data-gathering/data-gathering.service.ts b/apps/api/src/services/data-gathering/data-gathering.service.ts index 34645b9ea..78531b745 100644 --- a/apps/api/src/services/data-gathering/data-gathering.service.ts +++ b/apps/api/src/services/data-gathering/data-gathering.service.ts @@ -164,6 +164,9 @@ export class DataGatheringService { countries, currency, dataSource, + figi, + figiComposite, + figiShareClass, isin, name, sectors, @@ -178,6 +181,9 @@ export class DataGatheringService { countries, currency, dataSource, + figi, + figiComposite, + figiShareClass, isin, name, sectors, @@ -189,6 +195,9 @@ export class DataGatheringService { assetSubClass, countries, currency, + figi, + figiComposite, + figiShareClass, isin, name, sectors, diff --git a/apps/api/src/services/data-provider/data-enhancer/data-enhancer.module.ts b/apps/api/src/services/data-provider/data-enhancer/data-enhancer.module.ts index 069309508..23d64ac86 100644 --- a/apps/api/src/services/data-provider/data-enhancer/data-enhancer.module.ts +++ b/apps/api/src/services/data-provider/data-enhancer/data-enhancer.module.ts @@ -1,5 +1,6 @@ import { ConfigurationModule } from '@ghostfolio/api/services/configuration/configuration.module'; import { CryptocurrencyModule } from '@ghostfolio/api/services/cryptocurrency/cryptocurrency.module'; +import { OpenFigiDataEnhancerService } from '@ghostfolio/api/services/data-provider/data-enhancer/openfigi/openfigi.service'; import { TrackinsightDataEnhancerService } from '@ghostfolio/api/services/data-provider/data-enhancer/trackinsight/trackinsight.service'; import { YahooFinanceDataEnhancerService } from '@ghostfolio/api/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service'; import { Module } from '@nestjs/common'; @@ -9,6 +10,7 @@ import { DataEnhancerService } from './data-enhancer.service'; @Module({ exports: [ DataEnhancerService, + OpenFigiDataEnhancerService, TrackinsightDataEnhancerService, YahooFinanceDataEnhancerService, 'DataEnhancers' @@ -16,15 +18,21 @@ import { DataEnhancerService } from './data-enhancer.service'; imports: [ConfigurationModule, CryptocurrencyModule], providers: [ DataEnhancerService, + OpenFigiDataEnhancerService, TrackinsightDataEnhancerService, YahooFinanceDataEnhancerService, { inject: [ + OpenFigiDataEnhancerService, TrackinsightDataEnhancerService, YahooFinanceDataEnhancerService ], provide: 'DataEnhancers', - useFactory: (trackinsight, yahooFinance) => [trackinsight, yahooFinance] + useFactory: (openfigi, trackinsight, yahooFinance) => [ + openfigi, + trackinsight, + yahooFinance + ] } ] }) diff --git a/apps/api/src/services/data-provider/data-enhancer/openfigi/openfigi.service.ts b/apps/api/src/services/data-provider/data-enhancer/openfigi/openfigi.service.ts new file mode 100644 index 000000000..363cbb167 --- /dev/null +++ b/apps/api/src/services/data-provider/data-enhancer/openfigi/openfigi.service.ts @@ -0,0 +1,85 @@ +import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; +import { DataEnhancerInterface } from '@ghostfolio/api/services/data-provider/interfaces/data-enhancer.interface'; +import { DEFAULT_REQUEST_TIMEOUT } from '@ghostfolio/common/config'; +import { parseSymbol } from '@ghostfolio/common/helper'; +import { Injectable } from '@nestjs/common'; +import { SymbolProfile } from '@prisma/client'; +import got, { Headers } from 'got'; + +@Injectable() +export class OpenFigiDataEnhancerService implements DataEnhancerInterface { + private static baseUrl = 'https://api.openfigi.com'; + + public constructor( + private readonly configurationService: ConfigurationService + ) {} + + public async enhance({ + response, + symbol + }: { + response: Partial; + symbol: string; + }): Promise> { + if ( + !( + response.assetClass === 'EQUITY' && + (response.assetSubClass === 'ETF' || response.assetSubClass === 'STOCK') + ) + ) { + return response; + } + + const headers: Headers = {}; + const { exchange, ticker } = parseSymbol({ + symbol, + dataSource: response.dataSource + }); + + if (this.configurationService.get('OPEN_FIGI_API_KEY')) { + headers['X-OPENFIGI-APIKEY'] = + this.configurationService.get('OPEN_FIGI_API_KEY'); + } + + let abortController = new AbortController(); + + setTimeout(() => { + abortController.abort(); + }, DEFAULT_REQUEST_TIMEOUT); + + const mappings = await got + .post(`${OpenFigiDataEnhancerService.baseUrl}/v3/mapping`, { + headers, + json: [{ exchCode: exchange, idType: 'TICKER', idValue: ticker }], + // @ts-ignore + signal: abortController.signal + }) + .json(); + + if (mappings?.length === 1 && mappings[0].data?.length === 1) { + const { compositeFIGI, figi, shareClassFIGI } = mappings[0].data[0]; + + if (figi) { + response.figi = figi; + } + + if (compositeFIGI) { + response.figiComposite = compositeFIGI; + } + + if (shareClassFIGI) { + response.figiShareClass = shareClassFIGI; + } + } + + return response; + } + + public getName() { + return 'OPENFIGI'; + } + + public getTestSymbol() { + return undefined; + } +} diff --git a/apps/api/src/services/interfaces/environment.interface.ts b/apps/api/src/services/interfaces/environment.interface.ts index b437668ab..9b10a3205 100644 --- a/apps/api/src/services/interfaces/environment.interface.ts +++ b/apps/api/src/services/interfaces/environment.interface.ts @@ -26,6 +26,7 @@ export interface Environment extends CleanedEnvAccessors { JWT_SECRET_KEY: string; MAX_ACTIVITIES_TO_IMPORT: number; MAX_ITEM_IN_CACHE: number; + OPEN_FIGI_API_KEY: string; PORT: number; RAPID_API_API_KEY: string; REDIS_HOST: string; diff --git a/libs/common/src/lib/helper.ts b/libs/common/src/lib/helper.ts index 03fc250b8..3a3ee6e11 100644 --- a/libs/common/src/lib/helper.ts +++ b/libs/common/src/lib/helper.ts @@ -322,6 +322,15 @@ export function parseDate(date: string): Date | null { return parseISO(date); } +export function parseSymbol({ dataSource, symbol }: UniqueAsset) { + const [ticker, exchange] = symbol.split('.'); + + return { + ticker, + exchange: exchange ?? (dataSource === 'YAHOO' ? 'US' : undefined) + }; +} + export function prettifySymbol(aSymbol: string): string { return aSymbol?.replace(ghostfolioScraperApiSymbolPrefix, ''); } diff --git a/prisma/migrations/20231021094346_added_figi_figi_composite_and_figi_share_class_to_symbol_profile/migration.sql b/prisma/migrations/20231021094346_added_figi_figi_composite_and_figi_share_class_to_symbol_profile/migration.sql new file mode 100644 index 000000000..eb8abbe5a --- /dev/null +++ b/prisma/migrations/20231021094346_added_figi_figi_composite_and_figi_share_class_to_symbol_profile/migration.sql @@ -0,0 +1,5 @@ +-- AlterTable +ALTER TABLE "SymbolProfile" +ADD COLUMN "figi" TEXT, +ADD COLUMN "figiComposite" TEXT, +ADD COLUMN "figiShareClass" TEXT; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index a4d4e028e..015431e6c 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -132,6 +132,9 @@ model SymbolProfile { createdAt DateTime @default(now()) currency String dataSource DataSource + figi String? + figiComposite String? + figiShareClass String? id String @id @default(uuid()) isin String? name String? From cb166dcc78d492b45ba880044728eefdd4f045f1 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 21 Oct 2023 18:43:33 +0200 Subject: [PATCH 23/29] Redirect to membership page (#2527) --- apps/api/src/app/subscription/subscription.controller.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/api/src/app/subscription/subscription.controller.ts b/apps/api/src/app/subscription/subscription.controller.ts index e063a8636..299f32fe0 100644 --- a/apps/api/src/app/subscription/subscription.controller.ts +++ b/apps/api/src/app/subscription/subscription.controller.ts @@ -104,7 +104,7 @@ export class SubscriptionController { response.redirect( `${this.configurationService.get( 'ROOT_URL' - )}/${DEFAULT_LANGUAGE_CODE}/account` + )}/${DEFAULT_LANGUAGE_CODE}/account/membership` ); } From 5822e4d1865a4d94902f2fbbf792e8c090fe976a Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 21 Oct 2023 19:34:44 +0200 Subject: [PATCH 24/29] Bugfix/fix style of active page in header navigation (#2528) * Fix style of active page * Update changelog --- CHANGELOG.md | 1 + apps/client/src/styles.scss | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0fe6d0aa1..9de813d09 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed +- Fixed the style of the active page in the header navigation - Trimmed text in `i18n` service to query `messages.*.xlf` files on the server ## 2.13.0 - 2023-10-20 diff --git a/apps/client/src/styles.scss b/apps/client/src/styles.scss index 175194cac..7085effc5 100644 --- a/apps/client/src/styles.scss +++ b/apps/client/src/styles.scss @@ -446,6 +446,12 @@ ngx-skeleton-loader { .mat-mdc-menu-panel { .mat-mdc-menu-item { + &.font-weight-bold { + .mat-mdc-menu-item-text { + --mat-menu-item-label-text-weight: 700; + } + } + .mdc-list-item__primary-text { align-items: center; display: flex; From 281d33f82595aeb5a86de66a098c536ae7a0c9c2 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 21 Oct 2023 20:05:20 +0200 Subject: [PATCH 25/29] Feature/update oss friends 20231021 (#2529) * Update OSS friends * Improve style of sub title --- .../about/oss-friends/oss-friends-page.html | 2 +- apps/client/src/assets/oss-friends.json | 42 ++++++++++++++----- 2 files changed, 32 insertions(+), 12 deletions(-) diff --git a/apps/client/src/app/pages/about/oss-friends/oss-friends-page.html b/apps/client/src/app/pages/about/oss-friends/oss-friends-page.html index 0248a8b46..fab653145 100644 --- a/apps/client/src/app/pages/about/oss-friends/oss-friends-page.html +++ b/apps/client/src/app/pages/about/oss-friends/oss-friends-page.html @@ -1,7 +1,7 @@
-

+

Our OSS Friends diff --git a/apps/client/src/assets/oss-friends.json b/apps/client/src/assets/oss-friends.json index d7d8e1506..43d8141ac 100644 --- a/apps/client/src/assets/oss-friends.json +++ b/apps/client/src/assets/oss-friends.json @@ -1,5 +1,5 @@ { - "createdAt": "2023-10-05T00:00:00.000Z", + "createdAt": "2023-10-21T00:00:00.000Z", "data": [ { "name": "BoxyHQ", @@ -21,11 +21,21 @@ "description": "The Open-Source DocuSign Alternative. We aim to earn your trust by enabling you to self-host the platform and examine its inner workings.", "href": "https://documenso.com" }, + { + "name": "dyrector.io", + "description": "dyrector.io is an open-source continuous delivery & deployment platform with version management.", + "href": "https://dyrector.io" + }, { "name": "Erxes", "description": "The Open-Source HubSpot Alternative. A single XOS enables to create unique and life-changing experiences that work for all types of business.", "href": "https://erxes.io" }, + { + "name": "Firecamp", + "description": "vscode for apis, open-source postman/insomnia alternative", + "href": "https://firecamp.io" + }, { "name": "Formbricks", "description": "Survey granular user segments at any point in the user journey. Gather up to 6x more insights with targeted micro-surveys. All open-source.", @@ -46,6 +56,11 @@ "description": "Open-source authentication and user management for the passkey era. Integrated in minutes, for web and mobile apps.", "href": "https://www.hanko.io" }, + { + "name": "Hook0", + "description": "Open-Source Webhooks-as-a-service (WaaS) that makes it easy for developers to send webhooks.", + "href": "https://www.hook0.com/" + }, { "name": "HTMX", "description": "HTMX is a dependency-free JavaScript library that allows you to access AJAX, CSS Transitions, WebSockets, and Server Sent Events directly in HTML.", @@ -86,11 +101,21 @@ "description": "Open-source solution to deploy, scale, and operate your multiplayer game.", "href": "https://rivet.gg" }, + { + "name": "Shelf.nu", + "description": "Open Source Asset and Equipment tracking software that lets you create QR asset labels, manage and overview your assets across locations.", + "href": "https://www.shelf.nu/" + }, { "name": "Sniffnet", "description": "Sniffnet is a network monitoring tool to help you easily keep track of your Internet traffic.", "href": "https://www.sniffnet.net" }, + { + "name": "Spark.NET", + "description": "The .NET Web Framework for Makers. Build production ready, full-stack web applications fast without sweating the small stuff.", + "href": "https://spark-framework.net" + }, { "name": "Tolgee", "description": "Software localization from A to Z made really easy.", @@ -101,16 +126,16 @@ "description": "Create long-running Jobs directly in your codebase with features like API integrations, webhooks, scheduling and delays.", "href": "https://trigger.dev" }, - { - "name": "Typebot", - "description": "Typebot gives you powerful blocks to create unique chat experiences. Embed them anywhere on your apps and start collecting results like magic.", - "href": "https://typebot.io" - }, { "name": "Twenty", "description": "A modern CRM offering the flexibility of open-source, advanced features and sleek design.", "href": "https://twenty.com" }, + { + "name": "Typebot", + "description": "Typebot gives you powerful blocks to create unique chat experiences. Embed them anywhere on your apps and start collecting results like magic.", + "href": "https://typebot.io" + }, { "name": "Webiny", "description": "Open-source enterprise-grade serverless CMS. Own your data. Scale effortlessly. Customize everything.", @@ -120,11 +145,6 @@ "name": "Webstudio", "description": "Webstudio is an open source alternative to Webflow", "href": "https://webstudio.is" - }, - { - "name": "Spark.NET", - "description": "The .NET Web Framework for Makers. Build production ready, full-stack web applications fast without sweating the small stuff.", - "href": "https://spark-framework.net" } ], "source": "https://formbricks.com/api/oss-friends" From c4e8e378844fcf6a562c53f7d90623deb8bf4b5d Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 21 Oct 2023 20:07:40 +0200 Subject: [PATCH 26/29] Release 2.14.0 (#2530) --- CHANGELOG.md | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9de813d09..64f8439a4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 2.14.0 - 2023-10-21 ### Added diff --git a/package.json b/package.json index f09c428d3..7a5eb4b55 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ghostfolio", - "version": "2.13.0", + "version": "2.14.0", "homepage": "https://ghostfol.io", "license": "AGPL-3.0", "repository": "https://github.com/ghostfolio/ghostfolio", From 96b5dcfaf8318dcec951f9282e967dcf97b71e5e Mon Sep 17 00:00:00 2001 From: Aldrin <53973174+Dhoni77@users.noreply.github.com> Date: Tue, 24 Oct 2023 00:00:05 +0530 Subject: [PATCH 27/29] Create reusable currency selector component using mat-autocomplete (#2487) * Create reusable currency selector component using mat-autocomplete * Update changelog --- CHANGELOG.md | 6 + ...eate-or-update-account-dialog.component.ts | 10 +- .../create-or-update-account-dialog.html | 11 +- .../create-or-update-account-dialog.module.ts | 4 +- .../src/lib/interfaces/currency.interface.ts | 4 + .../currency-selector.component.html | 21 +++ .../currency-selector.component.scss | 3 + .../currency-selector.component.ts | 167 ++++++++++++++++++ .../currency-selector.module.ts | 23 +++ .../abstract-mat-form-field.ts | 0 .../symbol-autocomplete.component.ts | 5 +- 11 files changed, 240 insertions(+), 14 deletions(-) create mode 100644 libs/common/src/lib/interfaces/currency.interface.ts create mode 100644 libs/ui/src/lib/currency-selector/currency-selector.component.html create mode 100644 libs/ui/src/lib/currency-selector/currency-selector.component.scss create mode 100644 libs/ui/src/lib/currency-selector/currency-selector.component.ts create mode 100644 libs/ui/src/lib/currency-selector/currency-selector.module.ts rename libs/ui/src/lib/{symbol-autocomplete => shared}/abstract-mat-form-field.ts (100%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 64f8439a4..a1166d132 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### Changed + +- Changed the currency selector in the create or update account dialog to `@angular/material/autocomplete` + ## 2.14.0 - 2023-10-21 ### Added diff --git a/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.component.ts b/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.component.ts index e2c63f191..9e153d173 100644 --- a/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.component.ts +++ b/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.component.ts @@ -15,6 +15,7 @@ import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; import { CreateAccountDto } from '@ghostfolio/api/app/account/create-account.dto'; import { UpdateAccountDto } from '@ghostfolio/api/app/account/update-account.dto'; import { DataService } from '@ghostfolio/client/services/data.service'; +import { Currency } from '@ghostfolio/common/interfaces/currency.interface'; import { Platform } from '@prisma/client'; import { Observable, Subject } from 'rxjs'; import { map, startWith } from 'rxjs/operators'; @@ -30,7 +31,7 @@ import { CreateOrUpdateAccountDialogParams } from './interfaces/interfaces'; }) export class CreateOrUpdateAccountDialog implements OnDestroy { public accountForm: FormGroup; - public currencies: string[] = []; + public currencies: Currency[] = []; public filteredPlatforms: Observable; public platforms: Platform[]; @@ -46,7 +47,10 @@ export class CreateOrUpdateAccountDialog implements OnDestroy { public ngOnInit() { const { currencies, platforms } = this.dataService.fetchInfo(); - this.currencies = currencies; + this.currencies = currencies.map((currency) => ({ + label: currency, + value: currency + })); this.platforms = platforms; this.accountForm = this.formBuilder.group({ @@ -101,7 +105,7 @@ export class CreateOrUpdateAccountDialog implements OnDestroy { const account: CreateAccountDto | UpdateAccountDto = { balance: this.accountForm.controls['balance'].value, comment: this.accountForm.controls['comment'].value, - currency: this.accountForm.controls['currency'].value, + currency: this.accountForm.controls['currency'].value?.value, id: this.accountForm.controls['accountId'].value, isExcluded: this.accountForm.controls['isExcluded'].value, name: this.accountForm.controls['name'].value, diff --git a/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html b/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html index d44693436..35074ec97 100644 --- a/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html +++ b/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -20,11 +20,10 @@
Currency - - {{ currency }} - +
@@ -37,7 +36,7 @@ (keydown.enter)="$event.stopPropagation()" /> {{ accountForm.controls['currency'].value }}{{ accountForm.controls['currency']?.value?.value }}
diff --git a/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.module.ts b/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.module.ts index 22ec5e1f8..2ccf56751 100644 --- a/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.module.ts +++ b/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.module.ts @@ -7,8 +7,8 @@ import { MatCheckboxModule } from '@angular/material/checkbox'; import { MatDialogModule } from '@angular/material/dialog'; import { MatFormFieldModule } from '@angular/material/form-field'; import { MatInputModule } from '@angular/material/input'; -import { MatSelectModule } from '@angular/material/select'; import { GfSymbolIconModule } from '@ghostfolio/client/components/symbol-icon/symbol-icon.module'; +import { GfCurrencySelectorModule } from '@ghostfolio/ui/currency-selector/currency-selector.module'; import { CreateOrUpdateAccountDialog } from './create-or-update-account-dialog.component'; @@ -17,6 +17,7 @@ import { CreateOrUpdateAccountDialog } from './create-or-update-account-dialog.c imports: [ CommonModule, FormsModule, + GfCurrencySelectorModule, GfSymbolIconModule, MatAutocompleteModule, MatButtonModule, @@ -24,7 +25,6 @@ import { CreateOrUpdateAccountDialog } from './create-or-update-account-dialog.c MatDialogModule, MatFormFieldModule, MatInputModule, - MatSelectModule, ReactiveFormsModule ] }) diff --git a/libs/common/src/lib/interfaces/currency.interface.ts b/libs/common/src/lib/interfaces/currency.interface.ts new file mode 100644 index 000000000..619144c0f --- /dev/null +++ b/libs/common/src/lib/interfaces/currency.interface.ts @@ -0,0 +1,4 @@ +export interface Currency { + label: string; + value: string; +} diff --git a/libs/ui/src/lib/currency-selector/currency-selector.component.html b/libs/ui/src/lib/currency-selector/currency-selector.component.html new file mode 100644 index 000000000..38fc6c43e --- /dev/null +++ b/libs/ui/src/lib/currency-selector/currency-selector.component.html @@ -0,0 +1,21 @@ + + + + + {{ currencyItem.label }} + + diff --git a/libs/ui/src/lib/currency-selector/currency-selector.component.scss b/libs/ui/src/lib/currency-selector/currency-selector.component.scss new file mode 100644 index 000000000..5d4e87f30 --- /dev/null +++ b/libs/ui/src/lib/currency-selector/currency-selector.component.scss @@ -0,0 +1,3 @@ +:host { + display: block; +} diff --git a/libs/ui/src/lib/currency-selector/currency-selector.component.ts b/libs/ui/src/lib/currency-selector/currency-selector.component.ts new file mode 100644 index 000000000..f75b684dd --- /dev/null +++ b/libs/ui/src/lib/currency-selector/currency-selector.component.ts @@ -0,0 +1,167 @@ +import { FocusMonitor } from '@angular/cdk/a11y'; +import { + ChangeDetectionStrategy, + ChangeDetectorRef, + Component, + ElementRef, + Input, + OnDestroy, + OnInit, + ViewChild +} from '@angular/core'; +import { FormControl, FormGroupDirective, NgControl } from '@angular/forms'; +import { + MatAutocomplete, + MatAutocompleteSelectedEvent +} from '@angular/material/autocomplete'; +import { MatFormFieldControl } from '@angular/material/form-field'; +import { MatInput } from '@angular/material/input'; +import { Currency } from '@ghostfolio/common/interfaces/currency.interface'; +import { AbstractMatFormField } from '@ghostfolio/ui/shared/abstract-mat-form-field'; +import { Subject } from 'rxjs'; +import { map, startWith, takeUntil } from 'rxjs/operators'; +@Component({ + changeDetection: ChangeDetectionStrategy.OnPush, + host: { + '[attr.aria-describedBy]': 'describedBy', + '[id]': 'id' + }, + providers: [ + { + provide: MatFormFieldControl, + useExisting: CurrencySelectorComponent + } + ], + selector: 'gf-currency-selector', + styleUrls: ['./currency-selector.component.scss'], + templateUrl: 'currency-selector.component.html' +}) +export class CurrencySelectorComponent + extends AbstractMatFormField + implements OnInit, OnDestroy +{ + @Input() private currencies: Currency[] = []; + @Input() private formControlName: string; + + @ViewChild(MatInput) private input: MatInput; + + @ViewChild('currencyAutocomplete') + public currencyAutocomplete: MatAutocomplete; + + public control = new FormControl(); + public filteredCurrencies: Currency[] = []; + + private unsubscribeSubject = new Subject(); + + public constructor( + public readonly _elementRef: ElementRef, + public readonly _focusMonitor: FocusMonitor, + public readonly changeDetectorRef: ChangeDetectorRef, + private readonly formGroupDirective: FormGroupDirective, + public readonly ngControl: NgControl + ) { + super(_elementRef, _focusMonitor, ngControl); + + this.controlType = 'currency-selector'; + } + + public ngOnInit() { + if (this.disabled) { + this.control.disable(); + } + + const formGroup = this.formGroupDirective.form; + + if (formGroup) { + const control = formGroup.get(this.formControlName); + + if (control) { + this.value = this.currencies.find(({ value }) => { + return value === control.value; + }); + } + } + + this.control.valueChanges + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe(() => { + if (super.value?.value) { + super.value.value = null; + } + }); + + this.control.valueChanges + .pipe( + takeUntil(this.unsubscribeSubject), + startWith(''), + map((value) => { + return value ? this.filter(value) : this.currencies.slice(); + }) + ) + .subscribe((values) => { + this.filteredCurrencies = values; + }); + } + + public displayFn(currency: Currency) { + return currency?.label ?? ''; + } + + public get empty() { + return this.input?.empty; + } + + public focus() { + this.input.focus(); + } + + public ngDoCheck() { + if (this.ngControl) { + this.validateRequired(); + this.errorState = this.ngControl.invalid && this.ngControl.touched; + this.stateChanges.next(); + } + } + + public onUpdateCurrency(event: MatAutocompleteSelectedEvent) { + super.value = { + label: event.option.value.label, + value: event.option.value.value + } as Currency; + } + + public set value(value: Currency) { + const newValue = + typeof value === 'object' && value !== null ? { ...value } : value; + this.control.setValue(newValue); + super.value = newValue; + } + + public ngOnDestroy() { + super.ngOnDestroy(); + + this.unsubscribeSubject.next(); + this.unsubscribeSubject.complete(); + } + + private filter(value: Currency | string) { + const filterValue = + typeof value === 'string' + ? value?.toLowerCase() + : value?.value.toLowerCase(); + + return this.currencies.filter((currency) => { + return currency.value.toLowerCase().startsWith(filterValue); + }); + } + + private validateRequired() { + const requiredCheck = super.required + ? !super.value.label || !super.value.value + : false; + + if (requiredCheck) { + this.ngControl.control.setErrors({ invalidData: true }); + } + } +} diff --git a/libs/ui/src/lib/currency-selector/currency-selector.module.ts b/libs/ui/src/lib/currency-selector/currency-selector.module.ts new file mode 100644 index 000000000..ac4d12096 --- /dev/null +++ b/libs/ui/src/lib/currency-selector/currency-selector.module.ts @@ -0,0 +1,23 @@ +import { CommonModule } from '@angular/common'; +import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { MatAutocompleteModule } from '@angular/material/autocomplete'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatInputModule } from '@angular/material/input'; + +import { CurrencySelectorComponent } from './currency-selector.component'; + +@NgModule({ + declarations: [CurrencySelectorComponent], + exports: [CurrencySelectorComponent], + imports: [ + CommonModule, + FormsModule, + MatAutocompleteModule, + MatFormFieldModule, + MatInputModule, + ReactiveFormsModule + ], + schemas: [CUSTOM_ELEMENTS_SCHEMA] +}) +export class GfCurrencySelectorModule {} diff --git a/libs/ui/src/lib/symbol-autocomplete/abstract-mat-form-field.ts b/libs/ui/src/lib/shared/abstract-mat-form-field.ts similarity index 100% rename from libs/ui/src/lib/symbol-autocomplete/abstract-mat-form-field.ts rename to libs/ui/src/lib/shared/abstract-mat-form-field.ts diff --git a/libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.ts b/libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.ts index 654a634ff..17cdb853d 100644 --- a/libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.ts +++ b/libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.ts @@ -19,6 +19,7 @@ import { MatInput } from '@angular/material/input'; import { LookupItem } from '@ghostfolio/api/app/symbol/interfaces/lookup-item.interface'; import { DataService } from '@ghostfolio/client/services/data.service'; import { translate } from '@ghostfolio/ui/i18n'; +import { AbstractMatFormField } from '@ghostfolio/ui/shared/abstract-mat-form-field'; import { isString } from 'lodash'; import { Subject, tap } from 'rxjs'; import { @@ -29,8 +30,6 @@ import { takeUntil } from 'rxjs/operators'; -import { AbstractMatFormField } from './abstract-mat-form-field'; - @Component({ changeDetection: ChangeDetectionStrategy.OnPush, host: { @@ -54,7 +53,7 @@ export class SymbolAutocompleteComponent @Input() private includeIndices = false; @Input() public isLoading = false; - @ViewChild(MatInput, { static: false }) private input: MatInput; + @ViewChild(MatInput) private input: MatInput; @ViewChild('symbolAutocomplete') public symbolAutocomplete: MatAutocomplete; From 6077e7c2f9fb0abb83c4ef558f98cfbff050eeb3 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Mon, 23 Oct 2023 20:50:40 +0200 Subject: [PATCH 28/29] Feature/improve position detail dialog (#2532) * Improve style and wording * Update locales * Update changelog --- CHANGELOG.md | 1 + .../dialog-footer.component.html | 1 - .../dialog-footer.component.scss | 6 +- .../position-detail-dialog.html | 8 +- apps/client/src/locales/messages.de.xlf | 212 ++++++++--------- apps/client/src/locales/messages.es.xlf | 212 ++++++++--------- apps/client/src/locales/messages.fr.xlf | 214 +++++++++--------- apps/client/src/locales/messages.it.xlf | 214 +++++++++--------- apps/client/src/locales/messages.nl.xlf | 214 +++++++++--------- apps/client/src/locales/messages.pt.xlf | 214 +++++++++--------- apps/client/src/locales/messages.tr.xlf | 214 +++++++++--------- apps/client/src/locales/messages.xlf | 209 ++++++++--------- 12 files changed, 862 insertions(+), 857 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a1166d132..3c06cf7a0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Improved the style and wording of the position detail dialog - Changed the currency selector in the create or update account dialog to `@angular/material/autocomplete` ## 2.14.0 - 2023-10-21 diff --git a/apps/client/src/app/components/dialog-footer/dialog-footer.component.html b/apps/client/src/app/components/dialog-footer/dialog-footer.component.html index 1c844c46d..c2153942a 100644 --- a/apps/client/src/app/components/dialog-footer/dialog-footer.component.html +++ b/apps/client/src/app/components/dialog-footer/dialog-footer.component.html @@ -1,6 +1,5 @@

TransactionsActivityActivities
diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index 21c260c5d..ee154df54 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -22,7 +22,7 @@ Das Ausfallrisiko beim Börsenhandel kann erheblich sein. Es ist nicht ratsam, Geld zu investieren, welches du kurzfristig benötigst. apps/client/src/app/app.component.html - 175,176 + 174,175 @@ -86,11 +86,11 @@ Aktivitäten apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 48 + 59 apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 58 + 69 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -106,11 +106,11 @@ apps/client/src/app/components/admin-users/admin-users.html - 23 + 120 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 249 + 251 apps/client/src/app/pages/portfolio/activities/activities-page.html @@ -146,7 +146,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 109 + 103 libs/ui/src/lib/activities-table/activities-table.component.html @@ -186,31 +186,31 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 163 + 157 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 164 + 158 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 166 + 160 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 219 + 213 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 220 + 214 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 221 + 215 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 222 + 216 libs/ui/src/lib/activities-table/activities-table.component.html @@ -318,7 +318,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 125 + 119 @@ -410,7 +410,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 131 + 125 libs/ui/src/lib/activities-table/activities-table.component.html @@ -466,7 +466,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 357 + 351 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -506,7 +506,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 364 + 358 @@ -520,6 +520,10 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 102 + + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html + 158 + libs/ui/src/lib/holdings-table/holdings-table.component.html 50 @@ -550,7 +554,7 @@ Bitte Währung hinzufügen: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 114 + 113 @@ -558,7 +562,7 @@ Möchtest du diesen Gutscheincode wirklich löschen? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 128 + 127 @@ -566,7 +570,7 @@ Möchtest du diese Währung wirklich löschen? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 141 + 140 @@ -574,7 +578,7 @@ Möchtest du den Cache wirklich leeren? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 158 + 157 @@ -582,7 +586,7 @@ Bitte gebe deine Systemmeldung ein: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 188 + 187 @@ -706,16 +710,12 @@ Möchtest du diesen Benutzer wirklich löschen? apps/client/src/app/components/admin-users/admin-users.component.ts - 86 + 112 User Benutzer - - apps/client/src/app/components/admin-users/admin-users.html - 9 - apps/client/src/app/components/header/header.component.html 192 @@ -726,7 +726,7 @@ Registrierung apps/client/src/app/components/admin-users/admin-users.html - 17 + 82 @@ -734,15 +734,15 @@ Engagement pro Tag apps/client/src/app/components/admin-users/admin-users.html - 29 + 144 - + Last Request Letzte Abfrage apps/client/src/app/components/admin-users/admin-users.html - 35,37 + 169,171 @@ -786,7 +786,7 @@ apps/client/src/app/components/admin-users/admin-users.html - 20 + 99 apps/client/src/app/components/header/header.component.html @@ -1344,11 +1344,11 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 161 + 155 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 217 + 211 @@ -1368,7 +1368,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 214 + 216 apps/client/src/app/pages/public/public-page.html @@ -1384,7 +1384,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 226 + 228 @@ -1396,11 +1396,11 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 268 + 270 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 315 + 309 @@ -1408,7 +1408,7 @@ Datenfehler melden apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 285 + 287 @@ -1716,7 +1716,7 @@ Konto apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 75 + 69 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1730,13 +1730,17 @@ apps/client/src/app/components/user-account-membership/user-account-membership.html 2 + + libs/ui/src/lib/membership-card/membership-card.component.html + 18 + Upgrade Upgrade apps/client/src/app/components/user-account-membership/user-account-membership.html - 26 + 19 @@ -1744,7 +1748,7 @@ pro Jahr apps/client/src/app/components/user-account-membership/user-account-membership.html - 41 + 34 apps/client/src/app/pages/pricing/pricing-page.html @@ -1756,7 +1760,7 @@ Premium ausprobieren apps/client/src/app/components/user-account-membership/user-account-membership.html - 49 + 43 @@ -1764,7 +1768,7 @@ Gutschein einlösen apps/client/src/app/components/user-account-membership/user-account-membership.html - 62 + 56 @@ -1900,7 +1904,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 115 + 109 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1912,7 +1916,7 @@ Cash-Bestand apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 32 + 43 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -1928,7 +1932,7 @@ Plattform apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 52 + 63 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -2264,7 +2268,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 97 + 91 @@ -2276,7 +2280,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 148 + 142 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2288,11 +2292,11 @@ Stückpreis apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 168 + 162 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 223 + 217 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2304,11 +2308,11 @@ Gebühr apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 237 + 231 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 262 + 256 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2328,7 +2332,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 271 + 265 @@ -2344,11 +2348,11 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 172 + 174 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 286 + 280 @@ -2691,14 +2695,6 @@ 105 - - First Buy Date - Datum des Erstkaufs - - apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 158 - - Asset Sub Class Anlageunterklasse @@ -2712,11 +2708,11 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 181 + 183 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 302 + 296 @@ -2728,7 +2724,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 196 + 198 @@ -2740,11 +2736,11 @@ apps/client/src/app/components/admin-users/admin-users.html - 14 + 63 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 208 + 210 @@ -2783,14 +2779,6 @@ 111 - - Transactions - Transaktionen - - apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 167 - - Projected Total Amount Projizierter Gesamtbetrag @@ -3463,8 +3451,8 @@ Valid until Gültig bis - apps/client/src/app/components/user-account-membership/user-account-membership.html - 17 + libs/ui/src/lib/membership-card/membership-card.component.html + 22 @@ -3872,7 +3860,7 @@ Ups! Der historische Wechselkurs konnte nicht abgerufen werden vom apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 253 + 247 @@ -3916,7 +3904,7 @@ Erneuern apps/client/src/app/components/user-account-membership/user-account-membership.html - 29 + 22 @@ -3940,7 +3928,7 @@ Benutzer verwenden apps/client/src/app/components/admin-users/admin-users.html - 121 + 207 @@ -3948,7 +3936,7 @@ Benutzer löschen apps/client/src/app/components/admin-users/admin-users.html - 129 + 215 @@ -4024,7 +4012,7 @@ Cash-Bestand aktualisieren apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 89 + 83 @@ -4084,7 +4072,7 @@ Beteiligungskapital apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 43 + 54 @@ -7504,7 +7492,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 57 + 51 @@ -7512,7 +7500,7 @@ Hypotheken, Darlehen, Kreditkarten apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 51 + 45 @@ -7520,7 +7508,7 @@ Luxusartikel, Immobilien, private Unternehmen apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 63 + 57 @@ -8148,11 +8136,11 @@ apps/client/src/app/app.component.ts - 55 + 54 apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 20 + 19 @@ -8164,7 +8152,7 @@ apps/client/src/app/app.component.ts - 56 + 55 apps/client/src/app/components/header/header.component.ts @@ -8176,7 +8164,7 @@ apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 21 + 20 apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts @@ -8332,19 +8320,19 @@ apps/client/src/app/app.component.ts - 48 + 47 apps/client/src/app/app.component.ts - 49 + 48 apps/client/src/app/app.component.ts - 50 + 49 apps/client/src/app/app.component.ts - 52 + 51 apps/client/src/app/components/header/header.component.ts @@ -8524,7 +8512,7 @@ apps/client/src/app/app.component.ts - 53 + 52 apps/client/src/app/pages/about/about-page.component.ts @@ -8540,7 +8528,7 @@ apps/client/src/app/app.component.ts - 50 + 49 apps/client/src/app/pages/about/about-page.component.ts @@ -8556,7 +8544,7 @@ apps/client/src/app/app.component.ts - 57 + 56 apps/client/src/app/components/header/header.component.ts @@ -8588,7 +8576,7 @@ apps/client/src/app/app.component.ts - 58 + 57 apps/client/src/app/components/header/header.component.ts @@ -8642,6 +8630,10 @@ apps/client/src/app/pages/faq/faq-page.component.ts 15 + + libs/ui/src/lib/membership-card/membership-card.component.ts + 13 + register @@ -8652,7 +8644,7 @@ apps/client/src/app/app.component.ts - 59 + 58 apps/client/src/app/components/header/header.component.ts @@ -8688,7 +8680,7 @@ apps/client/src/app/app.component.ts - 60 + 59 apps/client/src/app/components/header/header.component.ts @@ -10192,7 +10184,7 @@ Einmalige Eröffnungsgebühr, jährliche Kontoführungsgebühren apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 30 + 27 @@ -10200,7 +10192,7 @@ Ausschüttung von Unternehmensgewinnen apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 36 + 33 @@ -10208,7 +10200,7 @@ Ups! Der historische Wechselkurs konnte nicht abgerufen werden vom apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 193,194 + 187,188 @@ -10232,7 +10224,7 @@ Ertrag für das Ausleihen von Geld apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 45 + 39 @@ -10463,6 +10455,14 @@ 15 + + User + Benutzer + + apps/client/src/app/components/admin-users/admin-users.html + 29,31 + + diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index 935b6605d..6c69f769d 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -23,7 +23,7 @@ El riesgo de pérdida en trading puede ser importante. No es aconsejable invertir dinero que puedas necesitar a corto plazo. apps/client/src/app/app.component.html - 175,176 + 174,175 @@ -87,11 +87,11 @@ Operaciones apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 48 + 59 apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 58 + 69 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -107,11 +107,11 @@ apps/client/src/app/components/admin-users/admin-users.html - 23 + 120 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 249 + 251 apps/client/src/app/pages/portfolio/activities/activities-page.html @@ -147,7 +147,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 109 + 103 libs/ui/src/lib/activities-table/activities-table.component.html @@ -187,31 +187,31 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 163 + 157 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 164 + 158 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 166 + 160 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 219 + 213 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 220 + 214 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 221 + 215 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 222 + 216 libs/ui/src/lib/activities-table/activities-table.component.html @@ -319,7 +319,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 125 + 119 @@ -411,7 +411,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 131 + 125 libs/ui/src/lib/activities-table/activities-table.component.html @@ -467,7 +467,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 357 + 351 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -507,7 +507,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 364 + 358 @@ -521,6 +521,10 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 102 + + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html + 158 + libs/ui/src/lib/holdings-table/holdings-table.component.html 50 @@ -551,7 +555,7 @@ Por favor, añade una divisa: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 114 + 113 @@ -559,7 +563,7 @@ ¿Estás seguro de eliminar este cupón? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 128 + 127 @@ -567,7 +571,7 @@ ¿Estás seguro de eliminar esta divisa? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 141 + 140 @@ -575,7 +579,7 @@ ¿Estás seguro de limpiar la caché? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 158 + 157 @@ -583,7 +587,7 @@ Por favor, establece tu mensaje del sistema: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 188 + 187 @@ -707,16 +711,12 @@ ¿Estás seguro de eliminar este usuario? apps/client/src/app/components/admin-users/admin-users.component.ts - 86 + 112 User Usuario - - apps/client/src/app/components/admin-users/admin-users.html - 9 - apps/client/src/app/components/header/header.component.html 192 @@ -727,7 +727,7 @@ Registro apps/client/src/app/components/admin-users/admin-users.html - 17 + 82 @@ -735,15 +735,15 @@ Contratación diaria apps/client/src/app/components/admin-users/admin-users.html - 29 + 144 - + Last Request Última petición apps/client/src/app/components/admin-users/admin-users.html - 35,37 + 169,171 @@ -787,7 +787,7 @@ apps/client/src/app/components/admin-users/admin-users.html - 20 + 99 apps/client/src/app/components/header/header.component.html @@ -1342,11 +1342,11 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 161 + 155 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 217 + 211 @@ -1366,7 +1366,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 214 + 216 apps/client/src/app/pages/public/public-page.html @@ -1382,7 +1382,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 226 + 228 @@ -1394,11 +1394,11 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 268 + 270 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 315 + 309 @@ -1406,7 +1406,7 @@ Reporta un anomalía de los datos apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 285 + 287 @@ -1714,7 +1714,7 @@ Cuenta apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 75 + 69 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1728,13 +1728,17 @@ apps/client/src/app/components/user-account-membership/user-account-membership.html 2 + + libs/ui/src/lib/membership-card/membership-card.component.html + 18 + Upgrade Mejorar apps/client/src/app/components/user-account-membership/user-account-membership.html - 26 + 19 @@ -1742,7 +1746,7 @@ por año apps/client/src/app/components/user-account-membership/user-account-membership.html - 41 + 34 apps/client/src/app/pages/pricing/pricing-page.html @@ -1754,7 +1758,7 @@ Prueba Premium apps/client/src/app/components/user-account-membership/user-account-membership.html - 49 + 43 @@ -1762,7 +1766,7 @@ Canjea el cupón apps/client/src/app/components/user-account-membership/user-account-membership.html - 62 + 56 @@ -1898,7 +1902,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 115 + 109 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1910,7 +1914,7 @@ Saldo en efectivo apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 32 + 43 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -1926,7 +1930,7 @@ Plataforma apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 52 + 63 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -2262,7 +2266,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 97 + 91 @@ -2274,7 +2278,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 148 + 142 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2286,11 +2290,11 @@ Precio unitario apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 168 + 162 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 223 + 217 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2302,11 +2306,11 @@ Comisión apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 237 + 231 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 262 + 256 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2326,7 +2330,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 271 + 265 @@ -2342,11 +2346,11 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 172 + 174 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 286 + 280 @@ -2690,11 +2694,11 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 181 + 183 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 302 + 296 @@ -2746,7 +2750,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 196 + 198 @@ -2758,11 +2762,11 @@ apps/client/src/app/components/admin-users/admin-users.html - 14 + 63 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 208 + 210 @@ -2773,22 +2777,6 @@ 93 - - First Buy Date - Fecha de la primera compra - - apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 158 - - - - Transactions - Transacciones - - apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 167 - - Projected Total Amount Importe total previsto @@ -3461,8 +3449,8 @@ Valid until Valid until - apps/client/src/app/components/user-account-membership/user-account-membership.html - 17 + libs/ui/src/lib/membership-card/membership-card.component.html + 22 @@ -3870,7 +3858,7 @@ Oops! Could not get the historical exchange rate from apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 253 + 247 @@ -3914,7 +3902,7 @@ Renew apps/client/src/app/components/user-account-membership/user-account-membership.html - 29 + 22 @@ -3938,7 +3926,7 @@ Impersonate User apps/client/src/app/components/admin-users/admin-users.html - 121 + 207 @@ -3946,7 +3934,7 @@ Delete User apps/client/src/app/components/admin-users/admin-users.html - 129 + 215 @@ -4022,7 +4010,7 @@ Update Cash Balance apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 89 + 83 @@ -4082,7 +4070,7 @@ Equity apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 43 + 54 @@ -7502,7 +7490,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 57 + 51 @@ -7510,7 +7498,7 @@ Mortgages, personal loans, credit cards apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 51 + 45 @@ -7518,7 +7506,7 @@ Luxury items, real estate, private companies apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 63 + 57 @@ -8146,11 +8134,11 @@ apps/client/src/app/app.component.ts - 55 + 54 apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 20 + 19 @@ -8162,7 +8150,7 @@ apps/client/src/app/app.component.ts - 56 + 55 apps/client/src/app/components/header/header.component.ts @@ -8174,7 +8162,7 @@ apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 21 + 20 apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts @@ -8330,19 +8318,19 @@ apps/client/src/app/app.component.ts - 48 + 47 apps/client/src/app/app.component.ts - 49 + 48 apps/client/src/app/app.component.ts - 50 + 49 apps/client/src/app/app.component.ts - 52 + 51 apps/client/src/app/components/header/header.component.ts @@ -8522,7 +8510,7 @@ apps/client/src/app/app.component.ts - 53 + 52 apps/client/src/app/pages/about/about-page.component.ts @@ -8538,7 +8526,7 @@ apps/client/src/app/app.component.ts - 50 + 49 apps/client/src/app/pages/about/about-page.component.ts @@ -8554,7 +8542,7 @@ apps/client/src/app/app.component.ts - 57 + 56 apps/client/src/app/components/header/header.component.ts @@ -8586,7 +8574,7 @@ apps/client/src/app/app.component.ts - 58 + 57 apps/client/src/app/components/header/header.component.ts @@ -8640,6 +8628,10 @@ apps/client/src/app/pages/faq/faq-page.component.ts 15 + + libs/ui/src/lib/membership-card/membership-card.component.ts + 13 + register @@ -8650,7 +8642,7 @@ apps/client/src/app/app.component.ts - 59 + 58 apps/client/src/app/components/header/header.component.ts @@ -8686,7 +8678,7 @@ apps/client/src/app/app.component.ts - 60 + 59 apps/client/src/app/components/header/header.component.ts @@ -10190,7 +10182,7 @@ One-time fee, annual account fees apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 30 + 27 @@ -10198,7 +10190,7 @@ Distribution of corporate earnings apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 36 + 33 @@ -10206,7 +10198,7 @@ Oops! Could not get the historical exchange rate from apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 193,194 + 187,188 @@ -10230,7 +10222,7 @@ Revenue for lending out money apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 45 + 39 @@ -10461,6 +10453,14 @@ 15 + + User + User + + apps/client/src/app/components/admin-users/admin-users.html + 29,31 + + diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index be8a8b10b..d23ca7b67 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -6,7 +6,7 @@ Le risque de perte en investissant peut être important. Il est déconseillé d'investir de l'argent dont vous pourriez avoir besoin à court terme. apps/client/src/app/app.component.html - 175,176 + 174,175 @@ -82,7 +82,7 @@ Plateforme apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 52 + 63 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -98,11 +98,11 @@ Activités apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 48 + 59 apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 58 + 69 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -118,11 +118,11 @@ apps/client/src/app/components/admin-users/admin-users.html - 23 + 120 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 249 + 251 apps/client/src/app/pages/portfolio/activities/activities-page.html @@ -158,7 +158,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 109 + 103 libs/ui/src/lib/activities-table/activities-table.component.html @@ -198,7 +198,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 115 + 109 libs/ui/src/lib/activities-table/activities-table.component.html @@ -210,7 +210,7 @@ Balance Cash apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 32 + 43 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -238,31 +238,31 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 163 + 157 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 164 + 158 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 166 + 160 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 219 + 213 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 220 + 214 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 221 + 215 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 222 + 216 libs/ui/src/lib/activities-table/activities-table.component.html @@ -362,7 +362,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 125 + 119 @@ -462,7 +462,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 131 + 125 libs/ui/src/lib/activities-table/activities-table.component.html @@ -518,7 +518,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 357 + 351 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -558,7 +558,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 364 + 358 @@ -582,11 +582,11 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 172 + 174 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 286 + 280 @@ -602,11 +602,11 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 181 + 183 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 302 + 296 @@ -620,6 +620,10 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 102 + + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html + 158 + libs/ui/src/lib/holdings-table/holdings-table.component.html 50 @@ -706,7 +710,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 196 + 198 @@ -718,11 +722,11 @@ apps/client/src/app/components/admin-users/admin-users.html - 14 + 63 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 208 + 210 @@ -734,7 +738,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 214 + 216 apps/client/src/app/pages/public/public-page.html @@ -750,7 +754,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 226 + 228 @@ -774,7 +778,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 271 + 265 @@ -782,7 +786,7 @@ Veuillez ajouter une devise : apps/client/src/app/components/admin-overview/admin-overview.component.ts - 114 + 113 @@ -790,7 +794,7 @@ Voulez-vous vraiment supprimer ce code promotionnel ? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 128 + 127 @@ -798,7 +802,7 @@ Voulez-vous vraiment supprimer cette devise ? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 141 + 140 @@ -806,7 +810,7 @@ Voulez-vous vraiment vider le cache ? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 158 + 157 @@ -814,7 +818,7 @@ Veuillez définir votre message système : apps/client/src/app/components/admin-overview/admin-overview.component.ts - 188 + 187 @@ -866,11 +870,11 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 268 + 270 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 315 + 309 @@ -942,16 +946,12 @@ Voulez-vous vraiment supprimer cet·te utilisateur·rice ? apps/client/src/app/components/admin-users/admin-users.component.ts - 86 + 112 User Utilisateur - - apps/client/src/app/components/admin-users/admin-users.html - 9 - apps/client/src/app/components/header/header.component.html 192 @@ -962,7 +962,7 @@ Inscription apps/client/src/app/components/admin-users/admin-users.html - 17 + 82 @@ -974,7 +974,7 @@ apps/client/src/app/components/admin-users/admin-users.html - 20 + 99 apps/client/src/app/components/header/header.component.html @@ -994,15 +994,15 @@ Engagement par Jour apps/client/src/app/components/admin-users/admin-users.html - 29 + 144 - + Last Request - Dernière Requête + Dernière Requête apps/client/src/app/components/admin-users/admin-users.html - 35,37 + 169,171 @@ -1681,11 +1681,11 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 161 + 155 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 217 + 211 @@ -1737,35 +1737,19 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 148 + 142 libs/ui/src/lib/activities-table/activities-table.component.html 222 - - First Buy Date - Date du Premier Achat - - apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 158 - - - - Transactions - Transactions - - apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 167 - - Report Data Glitch Signaler une Erreur de Données apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 285 + 287 @@ -1981,7 +1965,7 @@ Compte apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 75 + 69 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1995,13 +1979,17 @@ apps/client/src/app/components/user-account-membership/user-account-membership.html 2 + + libs/ui/src/lib/membership-card/membership-card.component.html + 18 + Upgrade Mettre à niveau apps/client/src/app/components/user-account-membership/user-account-membership.html - 26 + 19 @@ -2009,7 +1997,7 @@ par an apps/client/src/app/components/user-account-membership/user-account-membership.html - 41 + 34 apps/client/src/app/pages/pricing/pricing-page.html @@ -2021,7 +2009,7 @@ Essayer Premium apps/client/src/app/components/user-account-membership/user-account-membership.html - 49 + 43 @@ -2029,7 +2017,7 @@ Utiliser un Code Promotionnel apps/client/src/app/components/user-account-membership/user-account-membership.html - 62 + 56 @@ -2497,7 +2485,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 97 + 91 @@ -2505,11 +2493,11 @@ Prix Unitaire apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 168 + 162 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 223 + 217 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2521,11 +2509,11 @@ Frais apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 237 + 231 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 262 + 256 libs/ui/src/lib/activities-table/activities-table.component.html @@ -3460,8 +3448,8 @@ Valid until Valide jusqu'au - apps/client/src/app/components/user-account-membership/user-account-membership.html - 17 + libs/ui/src/lib/membership-card/membership-card.component.html + 22 @@ -3869,7 +3857,7 @@ Oups ! Nous n'avons pas pu obtenir le taux de change historique à partir de apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 253 + 247 @@ -3913,7 +3901,7 @@ Renouveler apps/client/src/app/components/user-account-membership/user-account-membership.html - 29 + 22 @@ -3937,7 +3925,7 @@ Voir en tant que ... apps/client/src/app/components/admin-users/admin-users.html - 121 + 207 @@ -3945,7 +3933,7 @@ Supprimer l'Utilisateur apps/client/src/app/components/admin-users/admin-users.html - 129 + 215 @@ -4021,7 +4009,7 @@ Mettre à jour le Solde apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 89 + 83 @@ -4081,7 +4069,7 @@ Capital apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 43 + 54 @@ -7501,7 +7489,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 57 + 51 @@ -7509,7 +7497,7 @@ Mortgages, personal loans, credit cards apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 51 + 45 @@ -7517,7 +7505,7 @@ Luxury items, real estate, private companies apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 63 + 57 @@ -8145,11 +8133,11 @@ apps/client/src/app/app.component.ts - 55 + 54 apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 20 + 19 @@ -8161,7 +8149,7 @@ apps/client/src/app/app.component.ts - 56 + 55 apps/client/src/app/components/header/header.component.ts @@ -8173,7 +8161,7 @@ apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 21 + 20 apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts @@ -8329,19 +8317,19 @@ apps/client/src/app/app.component.ts - 48 + 47 apps/client/src/app/app.component.ts - 49 + 48 apps/client/src/app/app.component.ts - 50 + 49 apps/client/src/app/app.component.ts - 52 + 51 apps/client/src/app/components/header/header.component.ts @@ -8521,7 +8509,7 @@ apps/client/src/app/app.component.ts - 53 + 52 apps/client/src/app/pages/about/about-page.component.ts @@ -8537,7 +8525,7 @@ apps/client/src/app/app.component.ts - 50 + 49 apps/client/src/app/pages/about/about-page.component.ts @@ -8553,7 +8541,7 @@ apps/client/src/app/app.component.ts - 57 + 56 apps/client/src/app/components/header/header.component.ts @@ -8585,7 +8573,7 @@ apps/client/src/app/app.component.ts - 58 + 57 apps/client/src/app/components/header/header.component.ts @@ -8639,6 +8627,10 @@ apps/client/src/app/pages/faq/faq-page.component.ts 15 + + libs/ui/src/lib/membership-card/membership-card.component.ts + 13 + register @@ -8649,7 +8641,7 @@ apps/client/src/app/app.component.ts - 59 + 58 apps/client/src/app/components/header/header.component.ts @@ -8685,7 +8677,7 @@ apps/client/src/app/app.component.ts - 60 + 59 apps/client/src/app/components/header/header.component.ts @@ -10189,7 +10181,7 @@ One-time fee, annual account fees apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 30 + 27 @@ -10197,7 +10189,7 @@ Distribution of corporate earnings apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 36 + 33 @@ -10205,7 +10197,7 @@ Oops! Could not get the historical exchange rate from apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 193,194 + 187,188 @@ -10229,7 +10221,7 @@ Revenue for lending out money apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 45 + 39 @@ -10460,6 +10452,14 @@ 15 + + User + User + + apps/client/src/app/components/admin-users/admin-users.html + 29,31 + + diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index 1712694d3..f0c00a7f7 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -23,7 +23,7 @@ Il rischio di perdita nel trading può essere notevole. Non è consigliabile investire denaro di cui potresti avere bisogno a breve termine. apps/client/src/app/app.component.html - 175,176 + 174,175 @@ -87,11 +87,11 @@ Attività apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 48 + 59 apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 58 + 69 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -107,11 +107,11 @@ apps/client/src/app/components/admin-users/admin-users.html - 23 + 120 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 249 + 251 apps/client/src/app/pages/portfolio/activities/activities-page.html @@ -147,7 +147,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 109 + 103 libs/ui/src/lib/activities-table/activities-table.component.html @@ -187,31 +187,31 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 163 + 157 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 164 + 158 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 166 + 160 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 219 + 213 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 220 + 214 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 221 + 215 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 222 + 216 libs/ui/src/lib/activities-table/activities-table.component.html @@ -319,7 +319,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 125 + 119 @@ -411,7 +411,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 131 + 125 libs/ui/src/lib/activities-table/activities-table.component.html @@ -467,7 +467,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 357 + 351 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -507,7 +507,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 364 + 358 @@ -521,6 +521,10 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 102 + + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html + 158 + libs/ui/src/lib/holdings-table/holdings-table.component.html 50 @@ -551,7 +555,7 @@ Aggiungi una valuta: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 114 + 113 @@ -559,7 +563,7 @@ Vuoi davvero eliminare questo buono? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 128 + 127 @@ -567,7 +571,7 @@ Vuoi davvero eliminare questa valuta? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 141 + 140 @@ -575,7 +579,7 @@ Vuoi davvero svuotare la cache? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 158 + 157 @@ -583,7 +587,7 @@ Imposta il messaggio di sistema: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 188 + 187 @@ -707,16 +711,12 @@ Vuoi davvero eliminare questo utente? apps/client/src/app/components/admin-users/admin-users.component.ts - 86 + 112 User Utente - - apps/client/src/app/components/admin-users/admin-users.html - 9 - apps/client/src/app/components/header/header.component.html 192 @@ -727,7 +727,7 @@ Iscrizione apps/client/src/app/components/admin-users/admin-users.html - 17 + 82 @@ -735,15 +735,15 @@ Partecipazione giornaliera apps/client/src/app/components/admin-users/admin-users.html - 29 + 144 - + Last Request - Ultima richiesta + Ultima richiesta apps/client/src/app/components/admin-users/admin-users.html - 35,37 + 169,171 @@ -787,7 +787,7 @@ apps/client/src/app/components/admin-users/admin-users.html - 20 + 99 apps/client/src/app/components/header/header.component.html @@ -1342,11 +1342,11 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 161 + 155 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 217 + 211 @@ -1366,7 +1366,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 214 + 216 apps/client/src/app/pages/public/public-page.html @@ -1382,7 +1382,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 226 + 228 @@ -1394,11 +1394,11 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 268 + 270 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 315 + 309 @@ -1406,7 +1406,7 @@ Segnala un'anomalia dei dati apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 285 + 287 @@ -1714,7 +1714,7 @@ Account apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 75 + 69 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1728,13 +1728,17 @@ apps/client/src/app/components/user-account-membership/user-account-membership.html 2 + + libs/ui/src/lib/membership-card/membership-card.component.html + 18 + Upgrade Aggiornamento apps/client/src/app/components/user-account-membership/user-account-membership.html - 26 + 19 @@ -1742,7 +1746,7 @@ per anno apps/client/src/app/components/user-account-membership/user-account-membership.html - 41 + 34 apps/client/src/app/pages/pricing/pricing-page.html @@ -1754,7 +1758,7 @@ Prova Premium apps/client/src/app/components/user-account-membership/user-account-membership.html - 49 + 43 @@ -1762,7 +1766,7 @@ Riscatta il buono apps/client/src/app/components/user-account-membership/user-account-membership.html - 62 + 56 @@ -1898,7 +1902,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 115 + 109 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1910,7 +1914,7 @@ Saldo di cassa apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 32 + 43 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -1926,7 +1930,7 @@ Piattaforma apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 52 + 63 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -2262,7 +2266,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 97 + 91 @@ -2274,7 +2278,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 148 + 142 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2286,11 +2290,11 @@ Prezzo unitario apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 168 + 162 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 223 + 217 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2302,11 +2306,11 @@ Commissione apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 237 + 231 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 262 + 256 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2326,7 +2330,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 271 + 265 @@ -2342,11 +2346,11 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 172 + 174 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 286 + 280 @@ -2690,11 +2694,11 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 181 + 183 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 302 + 296 @@ -2746,7 +2750,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 196 + 198 @@ -2758,11 +2762,11 @@ apps/client/src/app/components/admin-users/admin-users.html - 14 + 63 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 208 + 210 @@ -2773,22 +2777,6 @@ 93 - - First Buy Date - Data del primo acquisto - - apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 158 - - - - Transactions - Transazioni - - apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 167 - - Projected Total Amount Importo totale previsto @@ -3461,8 +3449,8 @@ Valid until Valido fino a - apps/client/src/app/components/user-account-membership/user-account-membership.html - 17 + libs/ui/src/lib/membership-card/membership-card.component.html + 22 @@ -3870,7 +3858,7 @@ Ops! Impossibile ottenere il tasso di cambio storico da apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 253 + 247 @@ -3914,7 +3902,7 @@ Rinnova apps/client/src/app/components/user-account-membership/user-account-membership.html - 29 + 22 @@ -3938,7 +3926,7 @@ Imita l'utente apps/client/src/app/components/admin-users/admin-users.html - 121 + 207 @@ -3946,7 +3934,7 @@ Elimina l'utente apps/client/src/app/components/admin-users/admin-users.html - 129 + 215 @@ -4022,7 +4010,7 @@ Aggiornamento del saldo di cassa apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 89 + 83 @@ -4082,7 +4070,7 @@ Azione ordinaria apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 43 + 54 @@ -7502,7 +7490,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 57 + 51 @@ -7510,7 +7498,7 @@ Mutui, prestiti personali, carte di credito apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 51 + 45 @@ -7518,7 +7506,7 @@ Articoli di lusso, immobili, aziende private apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 63 + 57 @@ -8146,11 +8134,11 @@ apps/client/src/app/app.component.ts - 55 + 54 apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 20 + 19 @@ -8162,7 +8150,7 @@ apps/client/src/app/app.component.ts - 56 + 55 apps/client/src/app/components/header/header.component.ts @@ -8174,7 +8162,7 @@ apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 21 + 20 apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts @@ -8330,19 +8318,19 @@ apps/client/src/app/app.component.ts - 48 + 47 apps/client/src/app/app.component.ts - 49 + 48 apps/client/src/app/app.component.ts - 50 + 49 apps/client/src/app/app.component.ts - 52 + 51 apps/client/src/app/components/header/header.component.ts @@ -8522,7 +8510,7 @@ apps/client/src/app/app.component.ts - 53 + 52 apps/client/src/app/pages/about/about-page.component.ts @@ -8538,7 +8526,7 @@ apps/client/src/app/app.component.ts - 50 + 49 apps/client/src/app/pages/about/about-page.component.ts @@ -8554,7 +8542,7 @@ apps/client/src/app/app.component.ts - 57 + 56 apps/client/src/app/components/header/header.component.ts @@ -8586,7 +8574,7 @@ apps/client/src/app/app.component.ts - 58 + 57 apps/client/src/app/components/header/header.component.ts @@ -8640,6 +8628,10 @@ apps/client/src/app/pages/faq/faq-page.component.ts 15 + + libs/ui/src/lib/membership-card/membership-card.component.ts + 13 + register @@ -8650,7 +8642,7 @@ apps/client/src/app/app.component.ts - 59 + 58 apps/client/src/app/components/header/header.component.ts @@ -8686,7 +8678,7 @@ apps/client/src/app/app.component.ts - 60 + 59 apps/client/src/app/components/header/header.component.ts @@ -10190,7 +10182,7 @@ One-time fee, annual account fees apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 30 + 27 @@ -10198,7 +10190,7 @@ Distribution of corporate earnings apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 36 + 33 @@ -10206,7 +10198,7 @@ Oops! Could not get the historical exchange rate from apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 193,194 + 187,188 @@ -10230,7 +10222,7 @@ Revenue for lending out money apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 45 + 39 @@ -10461,6 +10453,14 @@ 15 + + User + User + + apps/client/src/app/components/admin-users/admin-users.html + 29,31 + + diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index f424ee349..b75791ec2 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -22,7 +22,7 @@ Het risico op verlies bij handelen kan aanzienlijk zijn. Het is niet aan te raden om geld te investeren dat je misschien op korte termijn nodig heeft. apps/client/src/app/app.component.html - 175,176 + 174,175 @@ -86,11 +86,11 @@ Activiteiten apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 48 + 59 apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 58 + 69 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -106,11 +106,11 @@ apps/client/src/app/components/admin-users/admin-users.html - 23 + 120 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 249 + 251 apps/client/src/app/pages/portfolio/activities/activities-page.html @@ -146,7 +146,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 109 + 103 libs/ui/src/lib/activities-table/activities-table.component.html @@ -186,31 +186,31 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 163 + 157 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 164 + 158 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 166 + 160 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 219 + 213 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 220 + 214 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 221 + 215 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 222 + 216 libs/ui/src/lib/activities-table/activities-table.component.html @@ -318,7 +318,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 125 + 119 @@ -410,7 +410,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 131 + 125 libs/ui/src/lib/activities-table/activities-table.component.html @@ -466,7 +466,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 357 + 351 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -506,7 +506,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 364 + 358 @@ -520,6 +520,10 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 102 + + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html + 158 + libs/ui/src/lib/holdings-table/holdings-table.component.html 50 @@ -550,7 +554,7 @@ Voeg een valuta toe: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 114 + 113 @@ -558,7 +562,7 @@ Wil je deze coupon echt verwijderen? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 128 + 127 @@ -566,7 +570,7 @@ Wil je deze valuta echt verwijderen? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 141 + 140 @@ -574,7 +578,7 @@ Wil je echt de cache legen? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 158 + 157 @@ -582,7 +586,7 @@ Stel je systeemboodschap in: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 188 + 187 @@ -706,16 +710,12 @@ Wilt je deze gebruiker echt verwijderen? apps/client/src/app/components/admin-users/admin-users.component.ts - 86 + 112 User Gebruiker - - apps/client/src/app/components/admin-users/admin-users.html - 9 - apps/client/src/app/components/header/header.component.html 192 @@ -726,7 +726,7 @@ Registratie apps/client/src/app/components/admin-users/admin-users.html - 17 + 82 @@ -734,15 +734,15 @@ Betrokkenheid per dag apps/client/src/app/components/admin-users/admin-users.html - 29 + 144 - + Last Request - Laatste verzoek + Laatste verzoek apps/client/src/app/components/admin-users/admin-users.html - 35,37 + 169,171 @@ -786,7 +786,7 @@ apps/client/src/app/components/admin-users/admin-users.html - 20 + 99 apps/client/src/app/components/header/header.component.html @@ -1341,11 +1341,11 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 161 + 155 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 217 + 211 @@ -1365,7 +1365,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 214 + 216 apps/client/src/app/pages/public/public-page.html @@ -1381,7 +1381,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 226 + 228 @@ -1393,11 +1393,11 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 268 + 270 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 315 + 309 @@ -1405,7 +1405,7 @@ Gegevensstoring melden apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 285 + 287 @@ -1713,7 +1713,7 @@ Rekening apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 75 + 69 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1727,13 +1727,17 @@ apps/client/src/app/components/user-account-membership/user-account-membership.html 2 + + libs/ui/src/lib/membership-card/membership-card.component.html + 18 + Upgrade Uitbreiden apps/client/src/app/components/user-account-membership/user-account-membership.html - 26 + 19 @@ -1741,7 +1745,7 @@ per jaar apps/client/src/app/components/user-account-membership/user-account-membership.html - 41 + 34 apps/client/src/app/pages/pricing/pricing-page.html @@ -1753,7 +1757,7 @@ Probeer Premium apps/client/src/app/components/user-account-membership/user-account-membership.html - 49 + 43 @@ -1761,7 +1765,7 @@ Coupon inwisselen apps/client/src/app/components/user-account-membership/user-account-membership.html - 62 + 56 @@ -1897,7 +1901,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 115 + 109 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1909,7 +1913,7 @@ Saldo apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 32 + 43 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -1925,7 +1929,7 @@ Platform apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 52 + 63 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -2261,7 +2265,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 97 + 91 @@ -2273,7 +2277,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 148 + 142 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2285,11 +2289,11 @@ Prijs per eenheid apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 168 + 162 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 223 + 217 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2301,11 +2305,11 @@ Transactiekosten apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 237 + 231 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 262 + 256 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2325,7 +2329,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 271 + 265 @@ -2341,11 +2345,11 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 172 + 174 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 286 + 280 @@ -2689,11 +2693,11 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 181 + 183 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 302 + 296 @@ -2745,7 +2749,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 196 + 198 @@ -2757,11 +2761,11 @@ apps/client/src/app/components/admin-users/admin-users.html - 14 + 63 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 208 + 210 @@ -2772,22 +2776,6 @@ 93 - - First Buy Date - Eerste aankoopdatum - - apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 158 - - - - Transactions - Transacties - - apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 167 - - Projected Total Amount Verwacht totaalbedrag @@ -3460,8 +3448,8 @@ Valid until Geldig tot - apps/client/src/app/components/user-account-membership/user-account-membership.html - 17 + libs/ui/src/lib/membership-card/membership-card.component.html + 22 @@ -3869,7 +3857,7 @@ Oeps! Kon de historische wisselkoers niet krijgen van apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 253 + 247 @@ -3913,7 +3901,7 @@ Vernieuw apps/client/src/app/components/user-account-membership/user-account-membership.html - 29 + 22 @@ -3937,7 +3925,7 @@ Gebruiker nadoen apps/client/src/app/components/admin-users/admin-users.html - 121 + 207 @@ -3945,7 +3933,7 @@ Gebruiker verwijderen apps/client/src/app/components/admin-users/admin-users.html - 129 + 215 @@ -4021,7 +4009,7 @@ Saldo bijwerken apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 89 + 83 @@ -4081,7 +4069,7 @@ Equity apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 43 + 54 @@ -7501,7 +7489,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 57 + 51 @@ -7509,7 +7497,7 @@ Hypotheken, persoonlijke leningen, creditcards apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 51 + 45 @@ -7517,7 +7505,7 @@ Luxe artikelen, onroerend goed, particuliere bedrijven apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 63 + 57 @@ -8145,11 +8133,11 @@ apps/client/src/app/app.component.ts - 55 + 54 apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 20 + 19 @@ -8161,7 +8149,7 @@ apps/client/src/app/app.component.ts - 56 + 55 apps/client/src/app/components/header/header.component.ts @@ -8173,7 +8161,7 @@ apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 21 + 20 apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts @@ -8329,19 +8317,19 @@ apps/client/src/app/app.component.ts - 48 + 47 apps/client/src/app/app.component.ts - 49 + 48 apps/client/src/app/app.component.ts - 50 + 49 apps/client/src/app/app.component.ts - 52 + 51 apps/client/src/app/components/header/header.component.ts @@ -8521,7 +8509,7 @@ apps/client/src/app/app.component.ts - 53 + 52 apps/client/src/app/pages/about/about-page.component.ts @@ -8537,7 +8525,7 @@ apps/client/src/app/app.component.ts - 50 + 49 apps/client/src/app/pages/about/about-page.component.ts @@ -8553,7 +8541,7 @@ apps/client/src/app/app.component.ts - 57 + 56 apps/client/src/app/components/header/header.component.ts @@ -8585,7 +8573,7 @@ apps/client/src/app/app.component.ts - 58 + 57 apps/client/src/app/components/header/header.component.ts @@ -8639,6 +8627,10 @@ apps/client/src/app/pages/faq/faq-page.component.ts 15 + + libs/ui/src/lib/membership-card/membership-card.component.ts + 13 + register @@ -8649,7 +8641,7 @@ apps/client/src/app/app.component.ts - 59 + 58 apps/client/src/app/components/header/header.component.ts @@ -8685,7 +8677,7 @@ apps/client/src/app/app.component.ts - 60 + 59 apps/client/src/app/components/header/header.component.ts @@ -10189,7 +10181,7 @@ One-time fee, annual account fees apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 30 + 27 @@ -10197,7 +10189,7 @@ Distribution of corporate earnings apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 36 + 33 @@ -10205,7 +10197,7 @@ Oops! Could not get the historical exchange rate from apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 193,194 + 187,188 @@ -10229,7 +10221,7 @@ Revenue for lending out money apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 45 + 39 @@ -10460,6 +10452,14 @@ 15 + + User + User + + apps/client/src/app/components/admin-users/admin-users.html + 29,31 + + diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index 15db8b5c7..9c2e54ca4 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -6,7 +6,7 @@ O risco de perda em investimentos pode ser substancial. Não é aconselhável investir dinheiro que possa vir a precisar a curto prazo. apps/client/src/app/app.component.html - 175,176 + 174,175 @@ -82,7 +82,7 @@ Plataforma apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 52 + 63 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -98,11 +98,11 @@ Atividades apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 48 + 59 apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 58 + 69 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -118,11 +118,11 @@ apps/client/src/app/components/admin-users/admin-users.html - 23 + 120 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 249 + 251 apps/client/src/app/pages/portfolio/activities/activities-page.html @@ -158,7 +158,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 109 + 103 libs/ui/src/lib/activities-table/activities-table.component.html @@ -198,7 +198,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 115 + 109 libs/ui/src/lib/activities-table/activities-table.component.html @@ -210,7 +210,7 @@ Saldo disponível em dinheiro apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 32 + 43 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -238,31 +238,31 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 163 + 157 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 164 + 158 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 166 + 160 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 219 + 213 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 220 + 214 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 221 + 215 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 222 + 216 libs/ui/src/lib/activities-table/activities-table.component.html @@ -362,7 +362,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 125 + 119 @@ -462,7 +462,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 131 + 125 libs/ui/src/lib/activities-table/activities-table.component.html @@ -518,7 +518,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 357 + 351 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -558,7 +558,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 364 + 358 @@ -582,11 +582,11 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 172 + 174 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 286 + 280 @@ -602,11 +602,11 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 181 + 183 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 302 + 296 @@ -620,6 +620,10 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 102 + + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html + 158 + libs/ui/src/lib/holdings-table/holdings-table.component.html 50 @@ -694,7 +698,7 @@ Por favor, adicione uma moeda: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 114 + 113 @@ -702,7 +706,7 @@ Deseja realmente eliminar este cupão? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 128 + 127 @@ -710,7 +714,7 @@ Deseja realmente excluir esta moeda? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 141 + 140 @@ -718,7 +722,7 @@ Deseja realmente limpar a cache? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 158 + 157 @@ -726,7 +730,7 @@ Por favor, defina a sua mensagem do sistema: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 188 + 187 @@ -822,16 +826,12 @@ Deseja realmente excluir este utilizador? apps/client/src/app/components/admin-users/admin-users.component.ts - 86 + 112 User Utilizador - - apps/client/src/app/components/admin-users/admin-users.html - 9 - apps/client/src/app/components/header/header.component.html 192 @@ -842,7 +842,7 @@ Registo apps/client/src/app/components/admin-users/admin-users.html - 17 + 82 @@ -854,7 +854,7 @@ apps/client/src/app/components/admin-users/admin-users.html - 20 + 99 apps/client/src/app/components/header/header.component.html @@ -874,15 +874,15 @@ Envolvimento por Dia apps/client/src/app/components/admin-users/admin-users.html - 29 + 144 - + Last Request - Último Pedido + Último Pedido apps/client/src/app/components/admin-users/admin-users.html - 35,37 + 169,171 @@ -1577,11 +1577,11 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 161 + 155 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 217 + 211 @@ -1633,29 +1633,13 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 148 + 142 libs/ui/src/lib/activities-table/activities-table.component.html 222 - - First Buy Date - Data da Primeira Compra - - apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 158 - - - - Transactions - Transações - - apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 167 - - Sector Setor @@ -1665,7 +1649,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 196 + 198 @@ -1677,11 +1661,11 @@ apps/client/src/app/components/admin-users/admin-users.html - 14 + 63 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 208 + 210 @@ -1693,7 +1677,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 214 + 216 apps/client/src/app/pages/public/public-page.html @@ -1709,7 +1693,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 226 + 228 @@ -1721,11 +1705,11 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 268 + 270 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 315 + 309 @@ -1733,7 +1717,7 @@ Dados do Relatório com Problema apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 285 + 287 @@ -1965,7 +1949,7 @@ Conta apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 75 + 69 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1979,13 +1963,17 @@ apps/client/src/app/components/user-account-membership/user-account-membership.html 2 + + libs/ui/src/lib/membership-card/membership-card.component.html + 18 + Upgrade Atualizar apps/client/src/app/components/user-account-membership/user-account-membership.html - 26 + 19 @@ -1993,7 +1981,7 @@ por ano apps/client/src/app/components/user-account-membership/user-account-membership.html - 41 + 34 apps/client/src/app/pages/pricing/pricing-page.html @@ -2005,7 +1993,7 @@ Experimentar Premium apps/client/src/app/components/user-account-membership/user-account-membership.html - 49 + 43 @@ -2013,7 +2001,7 @@ Resgatar Cupão apps/client/src/app/components/user-account-membership/user-account-membership.html - 62 + 56 @@ -2417,7 +2405,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 97 + 91 @@ -2425,11 +2413,11 @@ Preço por Unidade apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 168 + 162 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 223 + 217 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2441,11 +2429,11 @@ Comissão apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 237 + 231 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 262 + 256 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2465,7 +2453,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 271 + 265 @@ -3460,8 +3448,8 @@ Valid until Válido até - apps/client/src/app/components/user-account-membership/user-account-membership.html - 17 + libs/ui/src/lib/membership-card/membership-card.component.html + 22 @@ -3869,7 +3857,7 @@ Oops! Não foi possível obter a taxa de câmbio histórica de apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 253 + 247 @@ -3913,7 +3901,7 @@ Renovar apps/client/src/app/components/user-account-membership/user-account-membership.html - 29 + 22 @@ -3937,7 +3925,7 @@ Personificar Utilizador apps/client/src/app/components/admin-users/admin-users.html - 121 + 207 @@ -3945,7 +3933,7 @@ Apagar Utilizador apps/client/src/app/components/admin-users/admin-users.html - 129 + 215 @@ -4021,7 +4009,7 @@ Atualizar saldo em Dinheiro apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 89 + 83 @@ -4081,7 +4069,7 @@ Ações apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 43 + 54 @@ -7501,7 +7489,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 57 + 51 @@ -7509,7 +7497,7 @@ Mortgages, personal loans, credit cards apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 51 + 45 @@ -7517,7 +7505,7 @@ Luxury items, real estate, private companies apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 63 + 57 @@ -8145,11 +8133,11 @@ apps/client/src/app/app.component.ts - 55 + 54 apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 20 + 19 @@ -8161,7 +8149,7 @@ apps/client/src/app/app.component.ts - 56 + 55 apps/client/src/app/components/header/header.component.ts @@ -8173,7 +8161,7 @@ apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 21 + 20 apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts @@ -8329,19 +8317,19 @@ apps/client/src/app/app.component.ts - 48 + 47 apps/client/src/app/app.component.ts - 49 + 48 apps/client/src/app/app.component.ts - 50 + 49 apps/client/src/app/app.component.ts - 52 + 51 apps/client/src/app/components/header/header.component.ts @@ -8521,7 +8509,7 @@ apps/client/src/app/app.component.ts - 53 + 52 apps/client/src/app/pages/about/about-page.component.ts @@ -8537,7 +8525,7 @@ apps/client/src/app/app.component.ts - 50 + 49 apps/client/src/app/pages/about/about-page.component.ts @@ -8553,7 +8541,7 @@ apps/client/src/app/app.component.ts - 57 + 56 apps/client/src/app/components/header/header.component.ts @@ -8585,7 +8573,7 @@ apps/client/src/app/app.component.ts - 58 + 57 apps/client/src/app/components/header/header.component.ts @@ -8639,6 +8627,10 @@ apps/client/src/app/pages/faq/faq-page.component.ts 15 + + libs/ui/src/lib/membership-card/membership-card.component.ts + 13 + register @@ -8649,7 +8641,7 @@ apps/client/src/app/app.component.ts - 59 + 58 apps/client/src/app/components/header/header.component.ts @@ -8685,7 +8677,7 @@ apps/client/src/app/app.component.ts - 60 + 59 apps/client/src/app/components/header/header.component.ts @@ -10189,7 +10181,7 @@ One-time fee, annual account fees apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 30 + 27 @@ -10197,7 +10189,7 @@ Distribution of corporate earnings apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 36 + 33 @@ -10205,7 +10197,7 @@ Oops! Could not get the historical exchange rate from apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 193,194 + 187,188 @@ -10229,7 +10221,7 @@ Revenue for lending out money apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 45 + 39 @@ -10460,6 +10452,14 @@ 15 + + User + User + + apps/client/src/app/components/admin-users/admin-users.html + 29,31 + + diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index e0ca1f05f..e34df640b 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -10,19 +10,19 @@ apps/client/src/app/app.component.ts - 48 + 47 apps/client/src/app/app.component.ts - 49 + 48 apps/client/src/app/app.component.ts - 50 + 49 apps/client/src/app/app.component.ts - 52 + 51 apps/client/src/app/components/header/header.component.ts @@ -202,11 +202,11 @@ apps/client/src/app/app.component.ts - 55 + 54 apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 20 + 19 @@ -218,7 +218,7 @@ apps/client/src/app/app.component.ts - 56 + 55 apps/client/src/app/components/header/header.component.ts @@ -230,7 +230,7 @@ apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 21 + 20 apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts @@ -386,7 +386,7 @@ apps/client/src/app/app.component.ts - 50 + 49 apps/client/src/app/pages/about/about-page.component.ts @@ -402,7 +402,7 @@ apps/client/src/app/app.component.ts - 57 + 56 apps/client/src/app/components/header/header.component.ts @@ -434,7 +434,7 @@ apps/client/src/app/app.component.ts - 58 + 57 apps/client/src/app/components/header/header.component.ts @@ -488,6 +488,10 @@ apps/client/src/app/pages/faq/faq-page.component.ts 15 + + libs/ui/src/lib/membership-card/membership-card.component.ts + 13 + privacy-policy @@ -498,7 +502,7 @@ apps/client/src/app/app.component.ts - 53 + 52 apps/client/src/app/pages/about/about-page.component.ts @@ -514,7 +518,7 @@ apps/client/src/app/app.component.ts - 59 + 58 apps/client/src/app/components/header/header.component.ts @@ -550,7 +554,7 @@ apps/client/src/app/app.component.ts - 60 + 59 apps/client/src/app/components/header/header.component.ts @@ -1086,7 +1090,7 @@ Alım satımda kayıp riski büyük boyutta olabilir. Kısa vadede ihtiyaç duyabileceğiniz parayla yatırım yapmak tavsiye edilmez. apps/client/src/app/app.component.html - 175,176 + 174,175 @@ -1162,7 +1166,7 @@ Nakit Bakiye apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 32 + 43 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -1178,7 +1182,7 @@ Menkul Kıymet apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 43 + 54 @@ -1186,7 +1190,7 @@ Platform apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 52 + 63 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -1202,11 +1206,11 @@ İşlemler apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 48 + 59 apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 58 + 69 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -1222,11 +1226,11 @@ apps/client/src/app/components/admin-users/admin-users.html - 23 + 120 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 249 + 251 apps/client/src/app/pages/portfolio/activities/activities-page.html @@ -1262,7 +1266,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 109 + 103 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1302,7 +1306,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 115 + 109 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1326,31 +1330,31 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 163 + 157 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 164 + 158 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 166 + 160 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 219 + 213 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 220 + 214 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 221 + 215 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 222 + 216 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1450,7 +1454,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 125 + 119 @@ -1550,7 +1554,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 131 + 125 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1606,7 +1610,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 357 + 351 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -1646,7 +1650,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 364 + 358 @@ -1694,11 +1698,11 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 172 + 174 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 286 + 280 @@ -1714,11 +1718,11 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 181 + 183 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 302 + 296 @@ -1732,6 +1736,10 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 102 + + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html + 158 + libs/ui/src/lib/holdings-table/holdings-table.component.html 50 @@ -1826,7 +1834,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 196 + 198 @@ -1838,11 +1846,11 @@ apps/client/src/app/components/admin-users/admin-users.html - 14 + 63 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 208 + 210 @@ -1854,7 +1862,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 214 + 216 apps/client/src/app/pages/public/public-page.html @@ -1870,7 +1878,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 226 + 228 @@ -1902,7 +1910,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 271 + 265 @@ -1922,7 +1930,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 97 + 91 @@ -1930,7 +1938,7 @@ Lütfen bir para birimi giriniz: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 114 + 113 @@ -1938,7 +1946,7 @@ Önbelleği temizlemeyi gerçekten istiyor musunuz? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 128 + 127 @@ -1946,7 +1954,7 @@ Bu para birimini silmeyi gerçekten istiyor musunuz? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 141 + 140 @@ -1954,7 +1962,7 @@ Önbelleği temizlemeyi gerçekten istiyor musunuz apps/client/src/app/components/admin-overview/admin-overview.component.ts - 158 + 157 @@ -1962,7 +1970,7 @@ Lütfen sistem mesajınızı belirleyin: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 188 + 187 @@ -2014,11 +2022,11 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 268 + 270 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 315 + 309 @@ -2114,7 +2122,7 @@ apps/client/src/app/components/admin-users/admin-users.html - 20 + 99 apps/client/src/app/components/header/header.component.html @@ -2166,16 +2174,12 @@ Bu kullanıcıyı silmeyi gerçekten istiyor musunu? apps/client/src/app/components/admin-users/admin-users.component.ts - 86 + 112 User Kullanıcı - - apps/client/src/app/components/admin-users/admin-users.html - 9 - apps/client/src/app/components/header/header.component.html 192 @@ -2186,7 +2190,7 @@ Kayıt apps/client/src/app/components/admin-users/admin-users.html - 17 + 82 @@ -2194,15 +2198,15 @@ Günlük etkileşim apps/client/src/app/components/admin-users/admin-users.html - 29 + 144 - + Last Request - Son Talep + Son Talep apps/client/src/app/components/admin-users/admin-users.html - 35,37 + 169,171 @@ -2210,7 +2214,7 @@ Kullanıcıyı Taklit Et apps/client/src/app/components/admin-users/admin-users.html - 121 + 207 @@ -2218,7 +2222,7 @@ Kullanıcıyı Sil apps/client/src/app/components/admin-users/admin-users.html - 129 + 215 @@ -2809,11 +2813,11 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 161 + 155 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 217 + 211 @@ -2865,7 +2869,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 148 + 142 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2888,28 +2892,12 @@ 150 - - First Buy Date - First Buy Date - - apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 158 - - - - Transactions - Transactions - - apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 167 - - Report Data Glitch Report Data Glitch apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 285 + 287 @@ -3985,7 +3973,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 57 + 51 @@ -3993,7 +3981,7 @@ Mortgages, personal loans, credit cards apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 51 + 45 @@ -4001,7 +3989,7 @@ Luxury items, real estate, private companies apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 63 + 57 @@ -4009,7 +3997,7 @@ Account apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 75 + 69 libs/ui/src/lib/activities-table/activities-table.component.html @@ -4021,7 +4009,7 @@ Update Cash Balance apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 89 + 83 @@ -4029,11 +4017,11 @@ Unit Price apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 168 + 162 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 223 + 217 libs/ui/src/lib/activities-table/activities-table.component.html @@ -4045,7 +4033,7 @@ Oops! Could not get the historical exchange rate from apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 253 + 247 @@ -4053,11 +4041,11 @@ Fee apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 237 + 231 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 262 + 256 libs/ui/src/lib/activities-table/activities-table.component.html @@ -9323,13 +9311,17 @@ apps/client/src/app/components/user-account-membership/user-account-membership.html 2 + + libs/ui/src/lib/membership-card/membership-card.component.html + 18 + Valid until Valid until - apps/client/src/app/components/user-account-membership/user-account-membership.html - 17 + libs/ui/src/lib/membership-card/membership-card.component.html + 22 @@ -9337,7 +9329,7 @@ Upgrade apps/client/src/app/components/user-account-membership/user-account-membership.html - 26 + 19 @@ -9345,7 +9337,7 @@ Renew apps/client/src/app/components/user-account-membership/user-account-membership.html - 29 + 22 @@ -9353,7 +9345,7 @@ per year apps/client/src/app/components/user-account-membership/user-account-membership.html - 41 + 34 apps/client/src/app/pages/pricing/pricing-page.html @@ -9365,7 +9357,7 @@ Try Premium apps/client/src/app/components/user-account-membership/user-account-membership.html - 49 + 43 @@ -9373,7 +9365,7 @@ Redeem Coupon apps/client/src/app/components/user-account-membership/user-account-membership.html - 62 + 56 @@ -10189,7 +10181,7 @@ One-time fee, annual account fees apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 30 + 27 @@ -10197,7 +10189,7 @@ Distribution of corporate earnings apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 36 + 33 @@ -10205,7 +10197,7 @@ Revenue for lending out money apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 45 + 39 @@ -10213,7 +10205,7 @@ Oops! Could not get the historical exchange rate from apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 193,194 + 187,188 @@ -10460,6 +10452,14 @@ 15 + + User + User + + apps/client/src/app/components/admin-users/admin-users.html + 29,31 + + diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index 1edb3b26a..faad8e131 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -10,19 +10,19 @@ apps/client/src/app/app.component.ts - 48 + 47 apps/client/src/app/app.component.ts - 49 + 48 apps/client/src/app/app.component.ts - 50 + 49 apps/client/src/app/app.component.ts - 52 + 51 apps/client/src/app/components/header/header.component.ts @@ -201,11 +201,11 @@ apps/client/src/app/app.component.ts - 55 + 54 apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 20 + 19 @@ -216,7 +216,7 @@ apps/client/src/app/app.component.ts - 56 + 55 apps/client/src/app/components/header/header.component.ts @@ -228,7 +228,7 @@ apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 21 + 20 apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts @@ -383,7 +383,7 @@ apps/client/src/app/app.component.ts - 50 + 49 apps/client/src/app/pages/about/about-page.component.ts @@ -398,7 +398,7 @@ apps/client/src/app/app.component.ts - 57 + 56 apps/client/src/app/components/header/header.component.ts @@ -429,7 +429,7 @@ apps/client/src/app/app.component.ts - 58 + 57 apps/client/src/app/components/header/header.component.ts @@ -483,6 +483,10 @@ apps/client/src/app/pages/faq/faq-page.component.ts 15 + + libs/ui/src/lib/membership-card/membership-card.component.ts + 13 + privacy-policy @@ -492,7 +496,7 @@ apps/client/src/app/app.component.ts - 53 + 52 apps/client/src/app/pages/about/about-page.component.ts @@ -507,7 +511,7 @@ apps/client/src/app/app.component.ts - 59 + 58 apps/client/src/app/components/header/header.component.ts @@ -542,7 +546,7 @@ apps/client/src/app/app.component.ts - 60 + 59 apps/client/src/app/components/header/header.component.ts @@ -1065,7 +1069,7 @@ The risk of loss in trading can be substantial. It is not advisable to invest money you may need in the short term. apps/client/src/app/app.component.html - 175,176 + 174,175 @@ -1134,7 +1138,7 @@ Cash Balance apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 32 + 43 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -1149,14 +1153,14 @@ Equity apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 43 + 54 Platform apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 52 + 63 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -1171,11 +1175,11 @@ Activities apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 48 + 59 apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 58 + 69 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -1191,11 +1195,11 @@ apps/client/src/app/components/admin-users/admin-users.html - 23 + 120 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 249 + 251 apps/client/src/app/pages/portfolio/activities/activities-page.html @@ -1230,7 +1234,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 109 + 103 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1268,7 +1272,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 115 + 109 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1291,31 +1295,31 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 163 + 157 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 164 + 158 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 166 + 160 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 219 + 213 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 220 + 214 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 221 + 215 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 222 + 216 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1410,7 +1414,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 125 + 119 @@ -1498,7 +1502,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 131 + 125 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1552,7 +1556,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 357 + 351 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -1591,7 +1595,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 364 + 358 @@ -1634,11 +1638,11 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 172 + 174 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 286 + 280 @@ -1653,11 +1657,11 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 181 + 183 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 302 + 296 @@ -1670,6 +1674,10 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 102 + + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html + 158 + libs/ui/src/lib/holdings-table/holdings-table.component.html 50 @@ -1754,7 +1762,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 196 + 198 @@ -1765,11 +1773,11 @@ apps/client/src/app/components/admin-users/admin-users.html - 14 + 63 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 208 + 210 @@ -1780,7 +1788,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 214 + 216 apps/client/src/app/pages/public/public-page.html @@ -1795,7 +1803,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 226 + 228 @@ -1824,7 +1832,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 271 + 265 @@ -1842,42 +1850,42 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 97 + 91 Please add a currency: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 114 + 113 Do you really want to delete this coupon? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 128 + 127 Do you really want to delete this currency? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 141 + 140 Do you really want to flush the cache? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 158 + 157 Please set your system message: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 188 + 187 @@ -1923,11 +1931,11 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 268 + 270 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 315 + 309 @@ -2012,7 +2020,7 @@ apps/client/src/app/components/admin-users/admin-users.html - 20 + 99 apps/client/src/app/components/header/header.component.html @@ -2059,15 +2067,11 @@ Do you really want to delete this user? apps/client/src/app/components/admin-users/admin-users.component.ts - 86 + 112 User - - apps/client/src/app/components/admin-users/admin-users.html - 9 - apps/client/src/app/components/header/header.component.html 192 @@ -2077,35 +2081,35 @@ Registration apps/client/src/app/components/admin-users/admin-users.html - 17 + 82 Engagement per Day apps/client/src/app/components/admin-users/admin-users.html - 29 + 144 - + Last Request apps/client/src/app/components/admin-users/admin-users.html - 35,37 + 169,171 Impersonate User apps/client/src/app/components/admin-users/admin-users.html - 121 + 207 Delete User apps/client/src/app/components/admin-users/admin-users.html - 129 + 215 @@ -2635,11 +2639,11 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 161 + 155 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 217 + 211 @@ -2685,7 +2689,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 148 + 142 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2707,25 +2711,11 @@ 150 - - First Buy Date - - apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 158 - - - - Transactions - - apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 167 - - Report Data Glitch apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 285 + 287 @@ -3722,28 +3712,28 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 57 + 51 Mortgages, personal loans, credit cards apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 51 + 45 Luxury items, real estate, private companies apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 63 + 57 Account apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 75 + 69 libs/ui/src/lib/activities-table/activities-table.component.html @@ -3754,18 +3744,18 @@ Update Cash Balance apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 89 + 83 Unit Price apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 168 + 162 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 223 + 217 libs/ui/src/lib/activities-table/activities-table.component.html @@ -3776,18 +3766,18 @@ Oops! Could not get the historical exchange rate from apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 253 + 247 Fee apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 237 + 231 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 262 + 256 libs/ui/src/lib/activities-table/activities-table.component.html @@ -4382,7 +4372,7 @@ per year apps/client/src/app/components/user-account-membership/user-account-membership.html - 41 + 34 apps/client/src/app/pages/pricing/pricing-page.html @@ -8928,40 +8918,44 @@ apps/client/src/app/components/user-account-membership/user-account-membership.html 2 + + libs/ui/src/lib/membership-card/membership-card.component.html + 18 + Valid until - apps/client/src/app/components/user-account-membership/user-account-membership.html - 17 + libs/ui/src/lib/membership-card/membership-card.component.html + 22 Upgrade apps/client/src/app/components/user-account-membership/user-account-membership.html - 26 + 19 Renew apps/client/src/app/components/user-account-membership/user-account-membership.html - 29 + 22 Try Premium apps/client/src/app/components/user-account-membership/user-account-membership.html - 49 + 43 Redeem Coupon apps/client/src/app/components/user-account-membership/user-account-membership.html - 62 + 56 @@ -9654,28 +9648,28 @@ Distribution of corporate earnings apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 36 + 33 Oops! Could not get the historical exchange rate from apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 193,194 + 187,188 One-time fee, annual account fees apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 30 + 27 Revenue for lending out money apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 45 + 39 @@ -9887,6 +9881,13 @@ 4,7 + + User + + apps/client/src/app/components/admin-users/admin-users.html + 29,31 + + From 3212efef17fefb0f2cc5337d469c71bf1b577b51 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Tue, 24 Oct 2023 19:40:53 +0200 Subject: [PATCH 29/29] Feature/upgrade yahoo finance2 to version 2.8.1 (#2536) * Upgrade yahoo-finance2 to version 2.8.1 * Update changelog --- CHANGELOG.md | 1 + package.json | 2 +- yarn.lock | 8 ++++---- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3c06cf7a0..4622db477 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Improved the style and wording of the position detail dialog - Changed the currency selector in the create or update account dialog to `@angular/material/autocomplete` +- Upgraded `yahoo-finance2` from version `2.8.0` to `2.8.1` ## 2.14.0 - 2023-10-21 diff --git a/package.json b/package.json index 7a5eb4b55..523bd6668 100644 --- a/package.json +++ b/package.json @@ -129,7 +129,7 @@ "svgmap": "2.6.0", "twitter-api-v2": "1.14.2", "uuid": "9.0.0", - "yahoo-finance2": "2.8.0", + "yahoo-finance2": "2.8.1", "zone.js": "0.13.1" }, "devDependencies": { diff --git a/yarn.lock b/yarn.lock index 3c798bb15..010fdcb37 100644 --- a/yarn.lock +++ b/yarn.lock @@ -19043,10 +19043,10 @@ y18n@^5.0.5: resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== -yahoo-finance2@2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/yahoo-finance2/-/yahoo-finance2-2.8.0.tgz#c1c1d139d6d16ff3e105af6269e6c869724ac16d" - integrity sha512-8KupoZQEBb+nynDXcOinYdrQ0anPjrX1wQQ8ehVOGZUGMW73fR2YznxumRlVyqSw9J9clS7eS8UhjcOUecmKUA== +yahoo-finance2@2.8.1: + version "2.8.1" + resolved "https://registry.yarnpkg.com/yahoo-finance2/-/yahoo-finance2-2.8.1.tgz#6fd59a84ef16be46cfbcf8a4ac0d32b81ffe074a" + integrity sha512-1125oJYLQ5Bz9ne5jU1eACdE15cBFWMzYm04fY201eiqiWMK+s6YCJVuUyJVgWgXVt61wwr88/QageNCl0w04A== dependencies: "@types/tough-cookie" "^4.0.2" ajv "8.10.0"