From a5398ddb65084d8d53a993546907276b87d09dca Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 16 Dec 2023 16:55:09 +0100 Subject: [PATCH] Add lazy-loaded activities table --- .../import-activities-dialog.component.ts | 12 ++++++++++ .../import-activities-dialog.html | 23 ++++++++++++++++++- .../import-activities-dialog.module.ts | 2 ++ 3 files changed, 36 insertions(+), 1 deletion(-) 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 1427af92f..fcc2decd8 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 @@ -12,7 +12,9 @@ import { import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; import { MatSnackBar } from '@angular/material/snack-bar'; +import { SortDirection } from '@angular/material/sort'; import { MatStepper } from '@angular/material/stepper'; +import { MatTableDataSource } from '@angular/material/table'; import { CreateAccountDto } from '@ghostfolio/api/app/account/create-account.dto'; import { Activity } from '@ghostfolio/api/app/order/interfaces/activities.interface'; import { DataService } from '@ghostfolio/client/services/data.service'; @@ -35,6 +37,7 @@ import { ImportActivitiesDialogParams } from './interfaces/interfaces'; export class ImportActivitiesDialog implements OnDestroy { public accounts: CreateAccountDto[] = []; public activities: Activity[] = []; + public dataSource: MatTableDataSource; public details: any[] = []; public deviceType: string; public dialogTitle = $localize`Import Activities`; @@ -45,7 +48,10 @@ export class ImportActivitiesDialog implements OnDestroy { public maxSafeInteger = Number.MAX_SAFE_INTEGER; public mode: 'DIVIDEND'; public selectedActivities: Activity[] = []; + public sortColumn = 'date'; + public sortDirection: SortDirection = 'desc'; public stepperOrientation: StepperOrientation; + public totalItems: number; public uniqueAssetForm: FormGroup; private unsubscribeSubject = new Subject(); @@ -173,6 +179,8 @@ export class ImportActivitiesDialog implements OnDestroy { .pipe(takeUntil(this.unsubscribeSubject)) .subscribe(({ activities }) => { this.activities = activities; + this.dataSource = new MatTableDataSource(activities.reverse()); + this.totalItems = activities.length; aStepper.next(); @@ -260,6 +268,8 @@ export class ImportActivitiesDialog implements OnDestroy { isDryRun: true }); this.activities = activities; + this.dataSource = new MatTableDataSource(activities.reverse()); + this.totalItems = activities.length; } catch (error) { console.error(error); this.handleImportError({ error, activities: content.activities }); @@ -276,6 +286,8 @@ export class ImportActivitiesDialog implements OnDestroy { userAccounts: this.data.user.accounts }); this.activities = data.activities; + this.dataSource = new MatTableDataSource(data.activities.reverse()); + this.totalItems = data.activities.length; } catch (error) { console.error(error); this.handleImportError({ diff --git a/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html b/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html index eab62642a..477231e32 100644 --- a/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html +++ b/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html @@ -119,8 +119,29 @@
+