From b291d9e031240dff66571ad63105ed3848d76aa8 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Thu, 30 Dec 2021 18:56:51 +0100 Subject: [PATCH] Feature/refactor transactions to activities table (#600) * Refactor transactions to activities table with attributes and routes * Update changelog --- CHANGELOG.md | 1 + apps/client/src/app/app-routing.module.ts | 14 ++-- .../accounts-table/accounts-table.module.ts | 2 +- .../home-holdings/home-holdings.html | 4 +- .../position-detail-dialog.html | 10 +-- .../position-detail-dialog.module.ts | 4 +- .../app/pages/portfolio/portfolio-page.html | 22 +++--- .../create-or-update-transaction-dialog.html | 4 +- .../transactions/transactions-page.html | 18 ++--- .../transactions/transactions-page.module.ts | 4 +- .../activities-table.component.html | 18 ++--- .../activities-table.component.scss | 0 .../activities-table.component.ts | 70 +++++++++---------- .../activities-table.module.ts | 11 ++- .../no-transactions-info.component.html | 4 +- 15 files changed, 90 insertions(+), 96 deletions(-) rename apps/client/src/app/components/transactions-table/transactions-table.component.html => libs/ui/src/lib/activities-table/activities-table.component.html (93%) rename apps/client/src/app/components/transactions-table/transactions-table.component.scss => libs/ui/src/lib/activities-table/activities-table.component.scss (100%) rename apps/client/src/app/components/transactions-table/transactions-table.component.ts => libs/ui/src/lib/activities-table/activities-table.component.ts (78%) rename apps/client/src/app/components/transactions-table/transactions-table.module.ts => libs/ui/src/lib/activities-table/activities-table.module.ts (81%) diff --git a/CHANGELOG.md b/CHANGELOG.md index f7b0c4cb..dc539e23 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 +- Start refactoring _transactions_ to _activities_ - Upgraded `angular` from version `13.0.2` to `13.1.1` - Upgraded `Nx` from version `13.3.0` to `13.4.1` diff --git a/apps/client/src/app/app-routing.module.ts b/apps/client/src/app/app-routing.module.ts index 31521e68..314a89bd 100644 --- a/apps/client/src/app/app-routing.module.ts +++ b/apps/client/src/app/app-routing.module.ts @@ -66,6 +66,13 @@ const routes: Routes = [ (m) => m.PortfolioPageModule ) }, + { + path: 'portfolio/activities', + loadChildren: () => + import('./pages/portfolio/transactions/transactions-page.module').then( + (m) => m.TransactionsPageModule + ) + }, { path: 'portfolio/allocations', loadChildren: () => @@ -87,13 +94,6 @@ const routes: Routes = [ (m) => m.ReportPageModule ) }, - { - path: 'portfolio/transactions', - loadChildren: () => - import('./pages/portfolio/transactions/transactions-page.module').then( - (m) => m.TransactionsPageModule - ) - }, { path: 'pricing', loadChildren: () => diff --git a/apps/client/src/app/components/accounts-table/accounts-table.module.ts b/apps/client/src/app/components/accounts-table/accounts-table.module.ts index 215bfd40..edbdee3e 100644 --- a/apps/client/src/app/components/accounts-table/accounts-table.module.ts +++ b/apps/client/src/app/components/accounts-table/accounts-table.module.ts @@ -5,10 +5,10 @@ import { MatInputModule } from '@angular/material/input'; import { MatMenuModule } from '@angular/material/menu'; import { MatTableModule } from '@angular/material/table'; import { RouterModule } from '@angular/router'; +import { GfSymbolIconModule } from '@ghostfolio/client/components/symbol-icon/symbol-icon.module'; import { GfValueModule } from '@ghostfolio/ui/value'; import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; -import { GfSymbolIconModule } from '../symbol-icon/symbol-icon.module'; import { AccountsTableComponent } from './accounts-table.component'; @NgModule({ diff --git a/apps/client/src/app/components/home-holdings/home-holdings.html b/apps/client/src/app/components/home-holdings/home-holdings.html index 03232d01..ccc2ed73 100644 --- a/apps/client/src/app/components/home-holdings/home-holdings.html +++ b/apps/client/src/app/components/home-holdings/home-holdings.html @@ -25,8 +25,8 @@ class="mt-3" i18n mat-button - [routerLink]="['/portfolio', 'transactions']" - >Manage Transactions...Manage Activities... diff --git a/apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html b/apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html index bbf31bf7..00d94926 100644 --- a/apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html +++ b/apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -125,19 +125,19 @@ - + >
-

Transactions

-

Manage your transactions.

+

Activities

+

Manage your activities.

- Open Transactions → + Open Activities +

@@ -31,12 +31,12 @@

- Open Allocations → + Open Allocations +

@@ -57,12 +57,12 @@

- Open Analysis → + Open Analysis +

@@ -84,12 +84,12 @@

- Open X-ray → + Open X-ray +

diff --git a/apps/client/src/app/pages/portfolio/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 index f0e12ebc..f2dbd54f 100644 --- a/apps/client/src/app/pages/portfolio/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 @@ -1,6 +1,6 @@
-

Update transaction

-

Add transaction

+

Update activity

+

Add activity

diff --git a/apps/client/src/app/pages/portfolio/transactions/transactions-page.html b/apps/client/src/app/pages/portfolio/transactions/transactions-page.html index f97727e3..6674025f 100644 --- a/apps/client/src/app/pages/portfolio/transactions/transactions-page.html +++ b/apps/client/src/app/pages/portfolio/transactions/transactions-page.html @@ -1,21 +1,21 @@
-

Transactions

- Activities + + >
diff --git a/apps/client/src/app/pages/portfolio/transactions/transactions-page.module.ts b/apps/client/src/app/pages/portfolio/transactions/transactions-page.module.ts index f4194fbc..e71d3067 100644 --- a/apps/client/src/app/pages/portfolio/transactions/transactions-page.module.ts +++ b/apps/client/src/app/pages/portfolio/transactions/transactions-page.module.ts @@ -3,8 +3,8 @@ import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { MatSnackBarModule } from '@angular/material/snack-bar'; import { RouterModule } from '@angular/router'; -import { GfTransactionsTableModule } from '@ghostfolio/client/components/transactions-table/transactions-table.module'; import { ImportTransactionsService } from '@ghostfolio/client/services/import-transactions.service'; +import { GfActivitiesTableModule } from '@ghostfolio/ui/activities-table/activities-table.module'; import { GfCreateOrUpdateTransactionDialogModule } from './create-or-update-transaction-dialog/create-or-update-transaction-dialog.module'; import { GfImportTransactionDialogModule } from './import-transaction-dialog/import-transaction-dialog.module'; @@ -16,9 +16,9 @@ import { TransactionsPageComponent } from './transactions-page.component'; exports: [], imports: [ CommonModule, + GfActivitiesTableModule, GfCreateOrUpdateTransactionDialogModule, GfImportTransactionDialogModule, - GfTransactionsTableModule, MatButtonModule, MatSnackBarModule, RouterModule, diff --git a/apps/client/src/app/components/transactions-table/transactions-table.component.html b/libs/ui/src/lib/activities-table/activities-table.component.html similarity index 93% rename from apps/client/src/app/components/transactions-table/transactions-table.component.html rename to libs/ui/src/lib/activities-table/activities-table.component.html index 4564e644..10524d82 100644 --- a/apps/client/src/app/components/transactions-table/transactions-table.component.html +++ b/libs/ui/src/lib/activities-table/activities-table.component.html @@ -230,14 +230,14 @@ - + - - - - @@ -305,7 +305,7 @@
diff --git a/apps/client/src/app/components/transactions-table/transactions-table.component.scss b/libs/ui/src/lib/activities-table/activities-table.component.scss similarity index 100% rename from apps/client/src/app/components/transactions-table/transactions-table.component.scss rename to libs/ui/src/lib/activities-table/activities-table.component.scss diff --git a/apps/client/src/app/components/transactions-table/transactions-table.component.ts b/libs/ui/src/lib/activities-table/activities-table.component.ts similarity index 78% rename from apps/client/src/app/components/transactions-table/transactions-table.component.ts rename to libs/ui/src/lib/activities-table/activities-table.component.ts index e22a0bcb..0cbde822 100644 --- a/apps/client/src/app/components/transactions-table/transactions-table.component.ts +++ b/libs/ui/src/lib/activities-table/activities-table.component.ts @@ -30,30 +30,28 @@ const SEARCH_PLACEHOLDER = 'Search for account, currency, symbol or type...'; const SEARCH_STRING_SEPARATOR = ','; @Component({ - selector: 'gf-transactions-table', changeDetection: ChangeDetectionStrategy.OnPush, - templateUrl: './transactions-table.component.html', - styleUrls: ['./transactions-table.component.scss'] + selector: 'gf-activities-table', + styleUrls: ['./activities-table.component.scss'], + templateUrl: './activities-table.component.html' }) -export class TransactionsTableComponent - implements OnChanges, OnDestroy, OnInit -{ +export class ActivitiesTableComponent implements OnChanges, OnDestroy { + @Input() activities: OrderWithAccount[]; @Input() baseCurrency: string; @Input() deviceType: string; - @Input() hasPermissionToCreateOrder: boolean; + @Input() hasPermissionToCreateActivity: boolean; @Input() hasPermissionToFilter = true; - @Input() hasPermissionToImportOrders: boolean; + @Input() hasPermissionToImportActivities: boolean; @Input() hasPermissionToOpenDetails = true; @Input() locale: string; @Input() showActions: boolean; @Input() showSymbolColumn = true; - @Input() transactions: OrderWithAccount[]; + @Output() activityDeleted = new EventEmitter(); + @Output() activityToClone = new EventEmitter(); + @Output() activityToUpdate = new EventEmitter(); @Output() export = new EventEmitter(); @Output() import = new EventEmitter(); - @Output() transactionDeleted = new EventEmitter(); - @Output() transactionToClone = new EventEmitter(); - @Output() transactionToUpdate = new EventEmitter(); @ViewChild('autocomplete') matAutocomplete: MatAutocomplete; @ViewChild('searchInput') searchInput: ElementRef; @@ -124,8 +122,6 @@ export class TransactionsTableComponent this.searchControl.setValue(null); } - public ngOnInit() {} - public ngOnChanges() { this.displayedColumns = [ 'count', @@ -152,8 +148,8 @@ export class TransactionsTableComponent this.isLoading = true; - if (this.transactions) { - this.dataSource = new MatTableDataSource(this.transactions); + if (this.activities) { + this.dataSource = new MatTableDataSource(this.activities); this.dataSource.filterPredicate = (data, filter) => { const dataString = this.getFilterableValues(data) .join(' ') @@ -171,13 +167,15 @@ export class TransactionsTableComponent } } - public onDeleteTransaction(aId: string) { - const confirmation = confirm( - 'Do you really want to delete this transaction?' - ); + public onCloneActivity(aActivity: OrderWithAccount) { + this.activityToClone.emit(aActivity); + } + + public onDeleteActivity(aId: string) { + const confirmation = confirm('Do you really want to delete this activity?'); if (confirmation) { - this.transactionDeleted.emit(aId); + this.activityDeleted.emit(aId); } } @@ -195,12 +193,8 @@ export class TransactionsTableComponent }); } - public onUpdateTransaction(aTransaction: OrderWithAccount) { - this.transactionToUpdate.emit(aTransaction); - } - - public onCloneTransaction(aTransaction: OrderWithAccount) { - this.transactionToClone.emit(aTransaction); + public onUpdateActivity(aActivity: OrderWithAccount) { + this.activityToUpdate.emit(aActivity); } public ngOnDestroy() { @@ -217,7 +211,7 @@ export class TransactionsTableComponent this.placeholder = lowercaseSearchKeywords.length <= 0 ? SEARCH_PLACEHOLDER : ''; - this.allFilters = this.getSearchableFieldValues(this.transactions).filter( + this.allFilters = this.getSearchableFieldValues(this.activities).filter( (item) => { return !lowercaseSearchKeywords.includes(item.trim().toLowerCase()); } @@ -226,11 +220,11 @@ export class TransactionsTableComponent this.filters$.next(this.allFilters); } - private getSearchableFieldValues(transactions: OrderWithAccount[]): string[] { + private getSearchableFieldValues(activities: OrderWithAccount[]): string[] { const fieldValues = new Set(); - for (const transaction of transactions) { - this.getFilterableValues(transaction, fieldValues); + for (const activity of activities) { + this.getFilterableValues(activity, fieldValues); } return [...fieldValues] @@ -255,15 +249,15 @@ export class TransactionsTableComponent } private getFilterableValues( - transaction: OrderWithAccount, + activity: OrderWithAccount, fieldValues: Set = new Set() ): string[] { - fieldValues.add(transaction.currency); - fieldValues.add(transaction.symbol); - fieldValues.add(transaction.type); - fieldValues.add(transaction.Account?.name); - fieldValues.add(transaction.Account?.Platform?.name); - fieldValues.add(format(transaction.date, 'yyyy')); + fieldValues.add(activity.currency); + fieldValues.add(activity.symbol); + fieldValues.add(activity.type); + fieldValues.add(activity.Account?.name); + fieldValues.add(activity.Account?.Platform?.name); + fieldValues.add(format(activity.date, 'yyyy')); return [...fieldValues].filter((item) => { return item !== undefined; diff --git a/apps/client/src/app/components/transactions-table/transactions-table.module.ts b/libs/ui/src/lib/activities-table/activities-table.module.ts similarity index 81% rename from apps/client/src/app/components/transactions-table/transactions-table.module.ts rename to libs/ui/src/lib/activities-table/activities-table.module.ts index 86292812..56947d7e 100644 --- a/apps/client/src/app/components/transactions-table/transactions-table.module.ts +++ b/libs/ui/src/lib/activities-table/activities-table.module.ts @@ -9,17 +9,17 @@ import { MatMenuModule } from '@angular/material/menu'; import { MatSortModule } from '@angular/material/sort'; import { MatTableModule } from '@angular/material/table'; import { RouterModule } from '@angular/router'; +import { GfSymbolIconModule } from '@ghostfolio/client/components/symbol-icon/symbol-icon.module'; import { GfSymbolModule } from '@ghostfolio/client/pipes/symbol/symbol.module'; import { GfNoTransactionsInfoModule } from '@ghostfolio/ui/no-transactions-info'; import { GfValueModule } from '@ghostfolio/ui/value'; import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; -import { GfSymbolIconModule } from '../symbol-icon/symbol-icon.module'; -import { TransactionsTableComponent } from './transactions-table.component'; +import { ActivitiesTableComponent } from './activities-table.component'; @NgModule({ - declarations: [TransactionsTableComponent], - exports: [TransactionsTableComponent], + declarations: [ActivitiesTableComponent], + exports: [ActivitiesTableComponent], imports: [ CommonModule, GfNoTransactionsInfoModule, @@ -37,7 +37,6 @@ import { TransactionsTableComponent } from './transactions-table.component'; ReactiveFormsModule, RouterModule ], - providers: [], schemas: [CUSTOM_ELEMENTS_SCHEMA] }) -export class GfTransactionsTableModule {} +export class GfActivitiesTableModule {} diff --git a/libs/ui/src/lib/no-transactions-info/no-transactions-info.component.html b/libs/ui/src/lib/no-transactions-info/no-transactions-info.component.html index bb3ce123..9f30d437 100644 --- a/libs/ui/src/lib/no-transactions-info/no-transactions-info.component.html +++ b/libs/ui/src/lib/no-transactions-info/no-transactions-info.component.html @@ -5,10 +5,10 @@ - Time to add your first transaction. + Time to add your first activity.