Browse Source
			
			
			Merge branch 'main' into bugfix/fix-date-format-of-retirement-date-in-fire-calculator
			
			
				pull/5245/head
			
			
		 
		
			
				
					
						
						Thomas Kaul
					
					3 months ago
					
						
							committed by
							
								
								GitHub
							
						 
					
				 
				
			 
		 
		
			
				
					
					No known key found for this signature in database
					
						
							GPG Key ID: B5690EEEBB952194
						
					
				
			
		
		
		
	
		
			
				 12 changed files with 
23 additions and 
13 deletions
			 
			
		 
		
			
				- 
					
					
					 
					CHANGELOG.md
				
 
			
				- 
					
					
					 
					apps/client/src/app/app.component.ts
				
 
			
				- 
					
					
					 
					apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html
				
 
			
				- 
					
					
					 
					apps/client/src/app/components/account-detail-dialog/interfaces/interfaces.ts
				
 
			
				- 
					
					
					 
					apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
				
 
			
				- 
					
					
					 
					apps/client/src/app/components/holding-detail-dialog/interfaces/interfaces.ts
				
 
			
				- 
					
					
					 
					apps/client/src/app/components/home-holdings/home-holdings.component.ts
				
 
			
				- 
					
					
					 
					apps/client/src/app/components/home-holdings/home-holdings.html
				
 
			
				- 
					
					
					 
					apps/client/src/app/components/home-overview/home-overview.component.ts
				
 
			
				- 
					
					
					 
					apps/client/src/app/components/home-overview/home-overview.html
				
 
			
				- 
					
					
					 
					apps/client/src/app/pages/accounts/accounts-page.component.ts
				
 
			
				- 
					
					
					 
					apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts
				
 
			
		
		
			
			
			
			
			
			
				
				
					
						
							
								
									
	
		
			
				
					| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -23,6 +23,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					### Fixed | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					- Fixed the date format of the retirement date in the _FIRE_ calculator | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					- Fixed an issue with the permissions of the impersonation mode related to the onboarding on the overview tab of the home page | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					- Fixed an issue with the permissions of the impersonation mode related to the manage activities button of the holdings tab on the home page | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					## 2.184.0 - 2025-07-22 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  | 
				
			
			
		
	
								
							
						
					 
					
				 
			 
		
			
			
			
			
			
			
				
				
					
						
							
								
									
	
		
			
				
					| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -324,7 +324,7 @@ export class AppComponent implements OnDestroy, OnInit { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              this.user?.permissions, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              permissions.accessAdminControl | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            ), | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            hasPermissionToCreateOrder: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            hasPermissionToCreateActivity: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              !this.hasImpersonationId && | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              hasPermission(this.user?.permissions, permissions.createOrder) && | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              !this.user?.settings?.isRestrictedView, | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  | 
				
			
			
		
	
								
							
						
					 
					
				 
			 
		
			
			
			
			
			
			
				
				
					
						
							
								
									
	
		
			
				
					| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -105,7 +105,7 @@ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          [locale]="user?.settings?.locale" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          [showActions]=" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            !data.hasImpersonationId && | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            data.hasPermissionToCreateOrder && | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            data.hasPermissionToCreateActivity && | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            user?.settings?.isExperimentalFeatures && | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            !user?.settings?.isRestrictedView | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          " | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  | 
				
			
			
		
	
								
							
						
					 
					
				 
			 
		
			
			
			
			
			
			
				
				
					
						
							
								
									
	
		
			
				
					| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -2,5 +2,5 @@ export interface AccountDetailDialogParams { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  accountId: string; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  deviceType: string; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  hasImpersonationId: boolean; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  hasPermissionToCreateOrder: boolean; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  hasPermissionToCreateActivity: boolean; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
					 | 
				
				 | 
				
					
  | 
				
			
			
		
	
								
							
						
					 
					
				 
			 
		
			
			
			
			
			
			
				
				
					
						
							
								
									
	
		
			
				
					| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -350,7 +350,7 @@ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          [locale]="data.locale" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          [showActions]=" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            !data.hasImpersonationId && | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            data.hasPermissionToCreateOrder && | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            data.hasPermissionToCreateActivity && | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            user?.settings?.isExperimentalFeatures && | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            !user?.settings?.isRestrictedView | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          " | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  | 
				
			
			
		
	
								
							
						
					 
					
				 
			 
		
			
			
			
			
			
			
				
				
					
						
							
								
									
	
		
			
				
					| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -9,7 +9,7 @@ export interface HoldingDetailDialogParams { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  deviceType: string; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  hasImpersonationId: boolean; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  hasPermissionToAccessAdminControl: boolean; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  hasPermissionToCreateOrder: boolean; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  hasPermissionToCreateActivity: boolean; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  hasPermissionToReportDataGlitch: boolean; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  hasPermissionToUpdateOrder: boolean; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  locale: string; | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  | 
				
			
			
		
	
								
							
						
					 
					
				 
			 
		
			
			
			
			
			
			
				
				
					
						
							
								
									
	
		
			
				
					| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -57,7 +57,7 @@ export class GfHomeHoldingsComponent implements OnDestroy, OnInit { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  public deviceType: string; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  public hasImpersonationId: boolean; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  public hasPermissionToAccessHoldingsChart: boolean; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  public hasPermissionToCreateOrder: boolean; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  public hasPermissionToCreateActivity: boolean; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  public holdings: PortfolioPosition[]; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  public holdingType: HoldingType = 'ACTIVE'; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  public holdingTypeOptions: ToggleOption[] = [ | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -105,7 +105,7 @@ export class GfHomeHoldingsComponent implements OnDestroy, OnInit { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            permissions.accessHoldingsChart | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          ); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          this.hasPermissionToCreateOrder = hasPermission( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          this.hasPermissionToCreateActivity = hasPermission( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            this.user.permissions, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            permissions.createOrder | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          ); | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  | 
				
			
			
		
	
								
							
						
					 
					
				 
			 
		
			
			
			
			
			
			
				
				
					
						
							
								
									
	
		
			
				
					| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -52,7 +52,11 @@ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          [locale]="user?.settings?.locale" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          (holdingClicked)="onHoldingClicked($event)" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        /> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        @if (hasPermissionToCreateOrder && holdings?.length > 0) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        @if ( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          !hasImpersonationId && | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          hasPermissionToCreateActivity && | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          holdings?.length > 0 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        ) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          <div class="text-center"> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            <a | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              class="mt-3" | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  | 
				
			
			
		
	
								
							
						
					 
					
				 
			 
		
			
			
			
			
			
			
				
				
					
						
							
								
									
	
		
			
				
					| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -48,7 +48,7 @@ export class GfHomeOverviewComponent implements OnDestroy, OnInit { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  public errors: AssetProfileIdentifier[]; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  public hasError: boolean; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  public hasImpersonationId: boolean; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  public hasPermissionToCreateOrder: boolean; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  public hasPermissionToCreateActivity: boolean; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  public historicalDataItems: LineChartItem[]; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  public isAllTimeHigh: boolean; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  public isAllTimeLow: boolean; | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -80,7 +80,7 @@ export class GfHomeOverviewComponent implements OnDestroy, OnInit { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        if (state?.user) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          this.user = state.user; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          this.hasPermissionToCreateOrder = hasPermission( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          this.hasPermissionToCreateActivity = hasPermission( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            this.user.permissions, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            permissions.createOrder | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          ); | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  | 
				
			
			
		
	
								
							
						
					 
					
				 
			 
		
			
			
			
			
			
			
				
				
					
						
							
								
									
	
		
			
				
					| 
						
						
						
					 | 
				
				 | 
				
					@ -1,7 +1,11 @@ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					<div | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  class="align-items-center container d-flex flex-column h-100 justify-content-center overview p-0 position-relative" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  @if (hasPermissionToCreateOrder && user?.activitiesCount === 0) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  @if ( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    !hasImpersonationId && | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    hasPermissionToCreateActivity && | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    user?.activitiesCount === 0 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  ) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    <div class="justify-content-center row w-100"> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      <div class="col introduction"> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        <h4 i18n>Welcome to Ghostfolio</h4> | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  | 
				
			
			
		
	
								
							
						
					 
					
				 
			 
		
			
			
			
			
			
			
				
				
					
						
							
								
									
	
		
			
				
					| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -239,7 +239,7 @@ export class GfAccountsPageComponent implements OnDestroy, OnInit { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        accountId: aAccountId, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        deviceType: this.deviceType, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        hasImpersonationId: this.hasImpersonationId, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        hasPermissionToCreateOrder: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        hasPermissionToCreateActivity: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          !this.hasImpersonationId && | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          hasPermission(this.user?.permissions, permissions.createOrder) && | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          !this.user?.settings?.isRestrictedView | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  | 
				
			
			
		
	
								
							
						
					 
					
				 
			 
		
			
			
			
			
			
			
				
				
					
						
							
								
									
	
		
			
				
					| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -564,7 +564,7 @@ export class GfAllocationsPageComponent implements OnDestroy, OnInit { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        accountId: aAccountId, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        deviceType: this.deviceType, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        hasImpersonationId: this.hasImpersonationId, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        hasPermissionToCreateOrder: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        hasPermissionToCreateActivity: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          !this.hasImpersonationId && | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          hasPermission(this.user?.permissions, permissions.createOrder) && | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          !this.user?.settings?.isRestrictedView | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |