diff --git a/CHANGELOG.md b/CHANGELOG.md index b774d54ff..cd1a09433 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +### Changed + +- Restructured the page hierarchy + ### Fixed - Fixed an issue with the currency conversion of the market price in the position detail dialog diff --git a/apps/client/src/app/app-routing.module.ts b/apps/client/src/app/app-routing.module.ts index d08757c8b..5ad41c077 100644 --- a/apps/client/src/app/app-routing.module.ts +++ b/apps/client/src/app/app-routing.module.ts @@ -53,57 +53,66 @@ const routes: Routes = [ import('./pages/home/home-page.module').then((m) => m.HomePageModule) }, { - path: 'pricing', + path: 'portfolio', loadChildren: () => - import('./pages/pricing/pricing-page.module').then( - (m) => m.PricingPageModule + import('./pages/portfolio/portfolio-page.module').then( + (m) => m.PortfolioPageModule ) }, { - path: 'register', + path: 'portfolio/allocations', loadChildren: () => - import('./pages/register/register-page.module').then( - (m) => m.RegisterPageModule + import('./pages/portfolio/allocations/allocations-page.module').then( + (m) => m.AllocationsPageModule ) }, { - path: 'resources', + path: 'portfolio/analysis', loadChildren: () => - import('./pages/resources/resources-page.module').then( - (m) => m.ResourcesPageModule + import('./pages/portfolio/analysis/analysis-page.module').then( + (m) => m.AnalysisPageModule ) }, { - path: 'start', + path: 'portfolio/report', loadChildren: () => - import('./pages/landing/landing-page.module').then( - (m) => m.LandingPageModule + import('./pages/portfolio/report/report-page.module').then( + (m) => m.ReportPageModule ) }, { - path: 'tools', + path: 'portfolio/transactions', loadChildren: () => - import('./pages/tools/tools-page.module').then((m) => m.ToolsPageModule) + import('./pages/portfolio/transactions/transactions-page.module').then( + (m) => m.TransactionsPageModule + ) }, { - path: 'tools/analysis', + path: 'pricing', loadChildren: () => - import('./pages/tools/analysis/analysis-page.module').then( - (m) => m.AnalysisPageModule + import('./pages/pricing/pricing-page.module').then( + (m) => m.PricingPageModule ) }, { - path: 'tools/report', + path: 'register', loadChildren: () => - import('./pages/tools/report/report-page.module').then( - (m) => m.ReportPageModule + import('./pages/register/register-page.module').then( + (m) => m.RegisterPageModule ) }, { - path: 'transactions', + path: 'resources', loadChildren: () => - import('./pages/transactions/transactions-page.module').then( - (m) => m.TransactionsPageModule + import('./pages/resources/resources-page.module').then( + (m) => m.ResourcesPageModule + ) + }, + { + path: 'start', + loadChildren: () => + import('./pages/landing/landing-page.module').then( + (m) => m.LandingPageModule ) }, { diff --git a/apps/client/src/app/components/header/header.component.html b/apps/client/src/app/components/header/header.component.html index 71e61464f..e6d3b5040 100644 --- a/apps/client/src/app/components/header/header.component.html +++ b/apps/client/src/app/components/header/header.component.html @@ -22,27 +22,22 @@ i18n mat-flat-button [ngClass]="{ - 'font-weight-bold': - currentRoute === 'analysis' || - currentRoute === 'report' || - currentRoute === 'tools', - 'text-decoration-underline': - currentRoute === 'analysis' || - currentRoute === 'report' || - currentRoute === 'tools' + 'font-weight-bold': currentRoute === 'portfolio', + 'text-decoration-underline': currentRoute === 'portfolio' }" - [routerLink]="['/tools']" - >ToolsPortfolio Transactions ToolsPortfolio Transactions Time to add your first transaction. diff --git a/apps/client/src/app/components/positions-table/positions-table.component.html b/apps/client/src/app/components/positions-table/positions-table.component.html index c6cee5f61..8e9693a1f 100644 --- a/apps/client/src/app/components/positions-table/positions-table.component.html +++ b/apps/client/src/app/components/positions-table/positions-table.component.html @@ -111,7 +111,7 @@ class="my-3 text-center" > diff --git a/apps/client/src/app/pages/home/home-page.html b/apps/client/src/app/pages/home/home-page.html index 861b5400a..be87fcd7a 100644 --- a/apps/client/src/app/pages/home/home-page.html +++ b/apps/client/src/app/pages/home/home-page.html @@ -79,7 +79,7 @@
-

Positions

+

Holdings

diff --git a/apps/client/src/app/pages/portfolio/allocations/allocations-page-routing.module.ts b/apps/client/src/app/pages/portfolio/allocations/allocations-page-routing.module.ts new file mode 100644 index 000000000..8b2182fe4 --- /dev/null +++ b/apps/client/src/app/pages/portfolio/allocations/allocations-page-routing.module.ts @@ -0,0 +1,15 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; +import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; + +import { AllocationsPageComponent } from './allocations-page.component'; + +const routes: Routes = [ + { path: '', component: AllocationsPageComponent, canActivate: [AuthGuard] } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class AllocationsPageRoutingModule {} diff --git a/apps/client/src/app/pages/tools/analysis/analysis-page.component.ts b/apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts similarity index 91% rename from apps/client/src/app/pages/tools/analysis/analysis-page.component.ts rename to apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts index 433bf63b1..6aaf81148 100644 --- a/apps/client/src/app/pages/tools/analysis/analysis-page.component.ts +++ b/apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts @@ -4,22 +4,17 @@ 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 { UNKNOWN_KEY } from '@ghostfolio/common/config'; -import { - PortfolioItem, - PortfolioPosition, - User -} from '@ghostfolio/common/interfaces'; -import { InvestmentItem } from '@ghostfolio/common/interfaces/investment-item.interface'; +import { PortfolioPosition, User } from '@ghostfolio/common/interfaces'; import { DeviceDetectorService } from 'ngx-device-detector'; import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; @Component({ - selector: 'gf-analysis-page', - templateUrl: './analysis-page.html', - styleUrls: ['./analysis-page.scss'] + selector: 'gf-allocations-page', + templateUrl: './allocations-page.html', + styleUrls: ['./allocations-page.scss'] }) -export class AnalysisPageComponent implements OnDestroy, OnInit { +export class AllocationsPageComponent implements OnDestroy, OnInit { public accounts: { [symbol: string]: Pick & { value: number }; }; @@ -36,7 +31,6 @@ export class AnalysisPageComponent implements OnDestroy, OnInit { { label: 'Initial', value: 'original' }, { label: 'Current', value: 'current' } ]; - public investments: InvestmentItem[]; public portfolioPositions: { [symbol: string]: PortfolioPosition }; public positions: { [symbol: string]: any }; public positionsArray: PortfolioPosition[]; @@ -71,15 +65,6 @@ export class AnalysisPageComponent implements OnDestroy, OnInit { this.hasImpersonationId = !!aId; }); - this.dataService - .fetchInvestments() - .pipe(takeUntil(this.unsubscribeSubject)) - .subscribe((response) => { - this.investments = response; - - this.changeDetectorRef.markForCheck(); - }); - this.dataService .fetchPortfolioPositions({}) .pipe(takeUntil(this.unsubscribeSubject)) diff --git a/apps/client/src/app/pages/tools/analysis/analysis-page.html b/apps/client/src/app/pages/portfolio/allocations/allocations-page.html similarity index 87% rename from apps/client/src/app/pages/tools/analysis/analysis-page.html rename to apps/client/src/app/pages/portfolio/allocations/allocations-page.html index 37137839b..05f34d318 100644 --- a/apps/client/src/app/pages/tools/analysis/analysis-page.html +++ b/apps/client/src/app/pages/portfolio/allocations/allocations-page.html @@ -1,16 +1,14 @@
-

Analysis

-
-

Positions

- -
+

Allocations

+
@@ -192,20 +190,4 @@
-
-
- - - Timeline - - - - - -
-
diff --git a/apps/client/src/app/pages/tools/analysis/analysis-page.module.ts b/apps/client/src/app/pages/portfolio/allocations/allocations-page.module.ts similarity index 68% rename from apps/client/src/app/pages/tools/analysis/analysis-page.module.ts rename to apps/client/src/app/pages/portfolio/allocations/allocations-page.module.ts index d8974b3ca..d5d9fe0b5 100644 --- a/apps/client/src/app/pages/tools/analysis/analysis-page.module.ts +++ b/apps/client/src/app/pages/portfolio/allocations/allocations-page.module.ts @@ -1,22 +1,20 @@ import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { MatCardModule } from '@angular/material/card'; -import { GfInvestmentChartModule } from '@ghostfolio/client/components/investment-chart/investment-chart.module'; import { PortfolioProportionChartModule } from '@ghostfolio/client/components/portfolio-proportion-chart/portfolio-proportion-chart.module'; import { GfPositionsTableModule } from '@ghostfolio/client/components/positions-table/positions-table.module'; import { GfToggleModule } from '@ghostfolio/client/components/toggle/toggle.module'; import { GfWorldMapChartModule } from '@ghostfolio/client/components/world-map-chart/world-map-chart.module'; -import { AnalysisPageRoutingModule } from './analysis-page-routing.module'; -import { AnalysisPageComponent } from './analysis-page.component'; +import { AllocationsPageRoutingModule } from './allocations-page-routing.module'; +import { AllocationsPageComponent } from './allocations-page.component'; @NgModule({ - declarations: [AnalysisPageComponent], + declarations: [AllocationsPageComponent], exports: [], imports: [ - AnalysisPageRoutingModule, + AllocationsPageRoutingModule, CommonModule, - GfInvestmentChartModule, GfPositionsTableModule, GfToggleModule, GfWorldMapChartModule, @@ -26,4 +24,4 @@ import { AnalysisPageComponent } from './analysis-page.component'; providers: [], schemas: [CUSTOM_ELEMENTS_SCHEMA] }) -export class AnalysisPageModule {} +export class AllocationsPageModule {} diff --git a/apps/client/src/app/pages/tools/analysis/analysis-page.scss b/apps/client/src/app/pages/portfolio/allocations/allocations-page.scss similarity index 76% rename from apps/client/src/app/pages/tools/analysis/analysis-page.scss rename to apps/client/src/app/pages/portfolio/allocations/allocations-page.scss index 09e4ea30d..b41677eb6 100644 --- a/apps/client/src/app/pages/tools/analysis/analysis-page.scss +++ b/apps/client/src/app/pages/portfolio/allocations/allocations-page.scss @@ -1,16 +1,4 @@ :host { - .investment-chart { - .mat-card { - .mat-card-content { - aspect-ratio: 16 / 9; - - gf-investment-chart { - height: 100%; - } - } - } - } - .proportion-charts { .mat-card { .mat-card-content { diff --git a/apps/client/src/app/pages/tools/analysis/analysis-page-routing.module.ts b/apps/client/src/app/pages/portfolio/analysis/analysis-page-routing.module.ts similarity index 100% rename from apps/client/src/app/pages/tools/analysis/analysis-page-routing.module.ts rename to apps/client/src/app/pages/portfolio/analysis/analysis-page-routing.module.ts diff --git a/apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts b/apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts new file mode 100644 index 000000000..187683930 --- /dev/null +++ b/apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts @@ -0,0 +1,92 @@ +import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; +import { ToggleOption } from '@ghostfolio/client/components/toggle/interfaces/toggle-option.type'; +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 { PortfolioPosition, User } from '@ghostfolio/common/interfaces'; +import { InvestmentItem } from '@ghostfolio/common/interfaces/investment-item.interface'; +import { DeviceDetectorService } from 'ngx-device-detector'; +import { Subject } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; + +@Component({ + selector: 'gf-analysis-page', + templateUrl: './analysis-page.html', + styleUrls: ['./analysis-page.scss'] +}) +export class AnalysisPageComponent implements OnDestroy, OnInit { + public accounts: { + [symbol: string]: Pick & { value: number }; + }; + public continents: { + [code: string]: { name: string; value: number }; + }; + public countries: { + [code: string]: { name: string; value: number }; + }; + public deviceType: string; + public hasImpersonationId: boolean; + public period = 'current'; + public periodOptions: ToggleOption[] = [ + { label: 'Initial', value: 'original' }, + { label: 'Current', value: 'current' } + ]; + public investments: InvestmentItem[]; + public portfolioPositions: { [symbol: string]: PortfolioPosition }; + public positions: { [symbol: string]: any }; + public sectors: { + [name: string]: { name: string; value: number }; + }; + public user: User; + + private unsubscribeSubject = new Subject(); + + /** + * @constructor + */ + public constructor( + private changeDetectorRef: ChangeDetectorRef, + private dataService: DataService, + private deviceService: DeviceDetectorService, + private impersonationStorageService: ImpersonationStorageService, + private userService: UserService + ) {} + + /** + * Initializes the controller + */ + public ngOnInit() { + this.deviceType = this.deviceService.getDeviceInfo().deviceType; + + this.impersonationStorageService + .onChangeHasImpersonation() + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe((aId) => { + this.hasImpersonationId = !!aId; + }); + + this.dataService + .fetchInvestments() + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe((response) => { + this.investments = response; + + this.changeDetectorRef.markForCheck(); + }); + + this.userService.stateChanged + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe((state) => { + if (state?.user) { + this.user = state.user; + + this.changeDetectorRef.markForCheck(); + } + }); + } + + public ngOnDestroy() { + this.unsubscribeSubject.next(); + this.unsubscribeSubject.complete(); + } +} diff --git a/apps/client/src/app/pages/portfolio/analysis/analysis-page.html b/apps/client/src/app/pages/portfolio/analysis/analysis-page.html new file mode 100644 index 000000000..66cda46c7 --- /dev/null +++ b/apps/client/src/app/pages/portfolio/analysis/analysis-page.html @@ -0,0 +1,20 @@ +
+
+
+

Analysis

+ + + Timeline + + + + + +
+
+
diff --git a/apps/client/src/app/pages/portfolio/analysis/analysis-page.module.ts b/apps/client/src/app/pages/portfolio/analysis/analysis-page.module.ts new file mode 100644 index 000000000..53e9bb283 --- /dev/null +++ b/apps/client/src/app/pages/portfolio/analysis/analysis-page.module.ts @@ -0,0 +1,21 @@ +import { CommonModule } from '@angular/common'; +import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; +import { MatCardModule } from '@angular/material/card'; +import { GfInvestmentChartModule } from '@ghostfolio/client/components/investment-chart/investment-chart.module'; + +import { AnalysisPageRoutingModule } from './analysis-page-routing.module'; +import { AnalysisPageComponent } from './analysis-page.component'; + +@NgModule({ + declarations: [AnalysisPageComponent], + exports: [], + imports: [ + AnalysisPageRoutingModule, + CommonModule, + GfInvestmentChartModule, + MatCardModule + ], + providers: [], + schemas: [CUSTOM_ELEMENTS_SCHEMA] +}) +export class AnalysisPageModule {} diff --git a/apps/client/src/app/pages/portfolio/analysis/analysis-page.scss b/apps/client/src/app/pages/portfolio/analysis/analysis-page.scss new file mode 100644 index 000000000..e80fa02ab --- /dev/null +++ b/apps/client/src/app/pages/portfolio/analysis/analysis-page.scss @@ -0,0 +1,9 @@ +:host { + .investment-chart { + .mat-card { + .mat-card-content { + aspect-ratio: 16 / 9; + } + } + } +} diff --git a/apps/client/src/app/pages/tools/tools-page-routing.module.ts b/apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts similarity index 59% rename from apps/client/src/app/pages/tools/tools-page-routing.module.ts rename to apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts index f3ab4b445..acd0cf95d 100644 --- a/apps/client/src/app/pages/tools/tools-page-routing.module.ts +++ b/apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts @@ -2,14 +2,14 @@ import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; -import { ToolsPageComponent } from './tools-page.component'; +import { PortfolioPageComponent } from './portfolio-page.component'; const routes: Routes = [ - { path: '', component: ToolsPageComponent, canActivate: [AuthGuard] } + { path: '', component: PortfolioPageComponent, canActivate: [AuthGuard] } ]; @NgModule({ imports: [RouterModule.forChild(routes)], exports: [RouterModule] }) -export class ToolsPageRoutingModule {} +export class PortfolioPageRoutingModule {} diff --git a/apps/client/src/app/pages/portfolio/portfolio-page.component.ts b/apps/client/src/app/pages/portfolio/portfolio-page.component.ts new file mode 100644 index 000000000..668d3e351 --- /dev/null +++ b/apps/client/src/app/pages/portfolio/portfolio-page.component.ts @@ -0,0 +1,44 @@ +import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; +import { UserService } from '@ghostfolio/client/services/user/user.service'; +import { User } from '@ghostfolio/common/interfaces'; +import { Subject } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; + +@Component({ + selector: 'gf-portfolio-page', + templateUrl: './portfolio-page.html', + styleUrls: ['./portfolio-page.scss'] +}) +export class PortfolioPageComponent implements OnDestroy, OnInit { + public user: User; + + private unsubscribeSubject = new Subject(); + + /** + * @constructor + */ + public constructor( + private changeDetectorRef: ChangeDetectorRef, + private userService: UserService + ) {} + + /** + * Initializes the controller + */ + public ngOnInit() { + this.userService.stateChanged + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe((state) => { + if (state?.user) { + this.user = state.user; + + this.changeDetectorRef.markForCheck(); + } + }); + } + + public ngOnDestroy() { + this.unsubscribeSubject.next(); + this.unsubscribeSubject.complete(); + } +} diff --git a/apps/client/src/app/pages/portfolio/portfolio-page.html b/apps/client/src/app/pages/portfolio/portfolio-page.html new file mode 100644 index 000000000..1a2578be4 --- /dev/null +++ b/apps/client/src/app/pages/portfolio/portfolio-page.html @@ -0,0 +1,83 @@ +
+

Portfolio

+
+ +
+ +

Allocations

+

Check the allocations of your portfolio.

+

+ + Open Allocations → + +

+
+
+
+
+
+ +

Analysis

+

Ghostfolio Analysis visualizes your portfolio.

+

+ + Open Analysis → + +

+
+
+
+ +

X-ray

+

+ Ghostfolio X-ray uses static analysis to identify potential issues and + risks in your portfolio. +

+

+ + Open X-ray → + +

+
+
+
+
diff --git a/apps/client/src/app/pages/tools/tools-page.module.ts b/apps/client/src/app/pages/portfolio/portfolio-page.module.ts similarity index 61% rename from apps/client/src/app/pages/tools/tools-page.module.ts rename to apps/client/src/app/pages/portfolio/portfolio-page.module.ts index bd1fee692..e997b372c 100644 --- a/apps/client/src/app/pages/tools/tools-page.module.ts +++ b/apps/client/src/app/pages/portfolio/portfolio-page.module.ts @@ -4,20 +4,20 @@ import { MatButtonModule } from '@angular/material/button'; import { MatCardModule } from '@angular/material/card'; import { RouterModule } from '@angular/router'; -import { ToolsPageRoutingModule } from './tools-page-routing.module'; -import { ToolsPageComponent } from './tools-page.component'; +import { PortfolioPageRoutingModule } from './portfolio-page-routing.module'; +import { PortfolioPageComponent } from './portfolio-page.component'; @NgModule({ - declarations: [ToolsPageComponent], + declarations: [PortfolioPageComponent], exports: [], imports: [ CommonModule, MatButtonModule, MatCardModule, - RouterModule, - ToolsPageRoutingModule + PortfolioPageRoutingModule, + RouterModule ], providers: [], schemas: [CUSTOM_ELEMENTS_SCHEMA] }) -export class ToolsPageModule {} +export class PortfolioPageModule {} diff --git a/apps/client/src/app/pages/tools/report/report-page.scss b/apps/client/src/app/pages/portfolio/portfolio-page.scss similarity index 100% rename from apps/client/src/app/pages/tools/report/report-page.scss rename to apps/client/src/app/pages/portfolio/portfolio-page.scss diff --git a/apps/client/src/app/pages/tools/report/report-page-routing.module.ts b/apps/client/src/app/pages/portfolio/report/report-page-routing.module.ts similarity index 100% rename from apps/client/src/app/pages/tools/report/report-page-routing.module.ts rename to apps/client/src/app/pages/portfolio/report/report-page-routing.module.ts diff --git a/apps/client/src/app/pages/tools/report/report-page.component.ts b/apps/client/src/app/pages/portfolio/report/report-page.component.ts similarity index 100% rename from apps/client/src/app/pages/tools/report/report-page.component.ts rename to apps/client/src/app/pages/portfolio/report/report-page.component.ts diff --git a/apps/client/src/app/pages/tools/report/report-page.html b/apps/client/src/app/pages/portfolio/report/report-page.html similarity index 100% rename from apps/client/src/app/pages/tools/report/report-page.html rename to apps/client/src/app/pages/portfolio/report/report-page.html diff --git a/apps/client/src/app/pages/tools/report/report-page.module.ts b/apps/client/src/app/pages/portfolio/report/report-page.module.ts similarity index 100% rename from apps/client/src/app/pages/tools/report/report-page.module.ts rename to apps/client/src/app/pages/portfolio/report/report-page.module.ts diff --git a/apps/client/src/app/pages/tools/tools-page.scss b/apps/client/src/app/pages/portfolio/report/report-page.scss similarity index 100% rename from apps/client/src/app/pages/tools/tools-page.scss rename to apps/client/src/app/pages/portfolio/report/report-page.scss diff --git a/apps/client/src/app/pages/transactions/create-or-update-transaction-dialog/create-or-update-transaction-dialog.component.ts b/apps/client/src/app/pages/portfolio/transactions/create-or-update-transaction-dialog/create-or-update-transaction-dialog.component.ts similarity index 98% rename from apps/client/src/app/pages/transactions/create-or-update-transaction-dialog/create-or-update-transaction-dialog.component.ts rename to apps/client/src/app/pages/portfolio/transactions/create-or-update-transaction-dialog/create-or-update-transaction-dialog.component.ts index 9507f174e..42930fb27 100644 --- a/apps/client/src/app/pages/transactions/create-or-update-transaction-dialog/create-or-update-transaction-dialog.component.ts +++ b/apps/client/src/app/pages/portfolio/transactions/create-or-update-transaction-dialog/create-or-update-transaction-dialog.component.ts @@ -9,6 +9,7 @@ import { FormControl, Validators } from '@angular/forms'; import { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; import { LookupItem } from '@ghostfolio/api/app/symbol/interfaces/lookup-item.interface'; +import { DataService } from '@ghostfolio/client/services/data.service'; import { Currency } from '@prisma/client'; import { Observable, Subject } from 'rxjs'; import { @@ -19,7 +20,6 @@ import { takeUntil } from 'rxjs/operators'; -import { DataService } from '../../../services/data.service'; import { CreateOrUpdateTransactionDialogParams } from './interfaces/interfaces'; @Component({ diff --git a/apps/client/src/app/pages/transactions/create-or-update-transaction-dialog/create-or-update-transaction-dialog.html b/apps/client/src/app/pages/portfolio/transactions/create-or-update-transaction-dialog/create-or-update-transaction-dialog.html similarity index 100% rename from apps/client/src/app/pages/transactions/create-or-update-transaction-dialog/create-or-update-transaction-dialog.html rename to apps/client/src/app/pages/portfolio/transactions/create-or-update-transaction-dialog/create-or-update-transaction-dialog.html diff --git a/apps/client/src/app/pages/transactions/create-or-update-transaction-dialog/create-or-update-transaction-dialog.module.ts b/apps/client/src/app/pages/portfolio/transactions/create-or-update-transaction-dialog/create-or-update-transaction-dialog.module.ts similarity index 100% rename from apps/client/src/app/pages/transactions/create-or-update-transaction-dialog/create-or-update-transaction-dialog.module.ts rename to apps/client/src/app/pages/portfolio/transactions/create-or-update-transaction-dialog/create-or-update-transaction-dialog.module.ts diff --git a/apps/client/src/app/pages/transactions/create-or-update-transaction-dialog/create-or-update-transaction-dialog.scss b/apps/client/src/app/pages/portfolio/transactions/create-or-update-transaction-dialog/create-or-update-transaction-dialog.scss similarity index 100% rename from apps/client/src/app/pages/transactions/create-or-update-transaction-dialog/create-or-update-transaction-dialog.scss rename to apps/client/src/app/pages/portfolio/transactions/create-or-update-transaction-dialog/create-or-update-transaction-dialog.scss diff --git a/apps/client/src/app/pages/transactions/create-or-update-transaction-dialog/interfaces/interfaces.ts b/apps/client/src/app/pages/portfolio/transactions/create-or-update-transaction-dialog/interfaces/interfaces.ts similarity index 100% rename from apps/client/src/app/pages/transactions/create-or-update-transaction-dialog/interfaces/interfaces.ts rename to apps/client/src/app/pages/portfolio/transactions/create-or-update-transaction-dialog/interfaces/interfaces.ts diff --git a/apps/client/src/app/pages/transactions/transactions-page-routing.module.ts b/apps/client/src/app/pages/portfolio/transactions/transactions-page-routing.module.ts similarity index 100% rename from apps/client/src/app/pages/transactions/transactions-page-routing.module.ts rename to apps/client/src/app/pages/portfolio/transactions/transactions-page-routing.module.ts diff --git a/apps/client/src/app/pages/transactions/transactions-page.component.ts b/apps/client/src/app/pages/portfolio/transactions/transactions-page.component.ts similarity index 100% rename from apps/client/src/app/pages/transactions/transactions-page.component.ts rename to apps/client/src/app/pages/portfolio/transactions/transactions-page.component.ts diff --git a/apps/client/src/app/pages/transactions/transactions-page.html b/apps/client/src/app/pages/portfolio/transactions/transactions-page.html similarity index 100% rename from apps/client/src/app/pages/transactions/transactions-page.html rename to apps/client/src/app/pages/portfolio/transactions/transactions-page.html diff --git a/apps/client/src/app/pages/transactions/transactions-page.module.ts b/apps/client/src/app/pages/portfolio/transactions/transactions-page.module.ts similarity index 100% rename from apps/client/src/app/pages/transactions/transactions-page.module.ts rename to apps/client/src/app/pages/portfolio/transactions/transactions-page.module.ts diff --git a/apps/client/src/app/pages/transactions/transactions-page.scss b/apps/client/src/app/pages/portfolio/transactions/transactions-page.scss similarity index 100% rename from apps/client/src/app/pages/transactions/transactions-page.scss rename to apps/client/src/app/pages/portfolio/transactions/transactions-page.scss diff --git a/apps/client/src/app/pages/tools/tools-page.component.ts b/apps/client/src/app/pages/tools/tools-page.component.ts deleted file mode 100644 index aa0f0601f..000000000 --- a/apps/client/src/app/pages/tools/tools-page.component.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { Subject } from 'rxjs'; - -@Component({ - selector: 'gf-tools-page', - templateUrl: './tools-page.html', - styleUrls: ['./tools-page.scss'] -}) -export class ToolsPageComponent implements OnInit { - private unsubscribeSubject = new Subject(); - - /** - * @constructor - */ - public constructor() {} - - /** - * Initializes the controller - */ - public ngOnInit() {} -} diff --git a/apps/client/src/app/pages/tools/tools-page.html b/apps/client/src/app/pages/tools/tools-page.html deleted file mode 100644 index 13ddaa815..000000000 --- a/apps/client/src/app/pages/tools/tools-page.html +++ /dev/null @@ -1,43 +0,0 @@ -
-

Tools

-
-
- -

Analysis

-

- Ghostfolio Analysis shows your positions and visualizes your - portfolio. -

-

- - Open Analysis → - -

-
-
-
- -

X-ray

-

- Ghostfolio X-ray uses static analysis to identify potential issues and - risks in your portfolio. -

-

- - Open X-ray → - -

-
-
-
-
diff --git a/apps/client/src/app/pages/zen/zen-page.html b/apps/client/src/app/pages/zen/zen-page.html index a3f06be4e..200825c1a 100644 --- a/apps/client/src/app/pages/zen/zen-page.html +++ b/apps/client/src/app/pages/zen/zen-page.html @@ -60,7 +60,7 @@
-

Positions

+

Holdings