Feature/add lazy loaded activities table to import activities dialog (#2754)
* Add lazy-loaded activities table * Update changelog
This commit is contained in:
parent
a10d9cb6ba
commit
96f90c7259
@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- Introduced the lazy-loaded activities table to the account detail dialog (experimental)
|
- Introduced the lazy-loaded activities table to the account detail dialog (experimental)
|
||||||
|
- Introduced the lazy-loaded activities table to the import activities dialog (experimental)
|
||||||
- Introduced the lazy-loaded activities table to the position detail dialog (experimental)
|
- Introduced the lazy-loaded activities table to the position detail dialog (experimental)
|
||||||
- Improved the font weight in the value component
|
- Improved the font weight in the value component
|
||||||
- Improved the language localization for Türkçe (`tr`)
|
- Improved the language localization for Türkçe (`tr`)
|
||||||
|
@ -12,7 +12,9 @@ import {
|
|||||||
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
|
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
|
||||||
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
|
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
|
||||||
import { MatSnackBar } from '@angular/material/snack-bar';
|
import { MatSnackBar } from '@angular/material/snack-bar';
|
||||||
|
import { SortDirection } from '@angular/material/sort';
|
||||||
import { MatStepper } from '@angular/material/stepper';
|
import { MatStepper } from '@angular/material/stepper';
|
||||||
|
import { MatTableDataSource } from '@angular/material/table';
|
||||||
import { CreateAccountDto } from '@ghostfolio/api/app/account/create-account.dto';
|
import { CreateAccountDto } from '@ghostfolio/api/app/account/create-account.dto';
|
||||||
import { Activity } from '@ghostfolio/api/app/order/interfaces/activities.interface';
|
import { Activity } from '@ghostfolio/api/app/order/interfaces/activities.interface';
|
||||||
import { DataService } from '@ghostfolio/client/services/data.service';
|
import { DataService } from '@ghostfolio/client/services/data.service';
|
||||||
@ -35,6 +37,7 @@ import { ImportActivitiesDialogParams } from './interfaces/interfaces';
|
|||||||
export class ImportActivitiesDialog implements OnDestroy {
|
export class ImportActivitiesDialog implements OnDestroy {
|
||||||
public accounts: CreateAccountDto[] = [];
|
public accounts: CreateAccountDto[] = [];
|
||||||
public activities: Activity[] = [];
|
public activities: Activity[] = [];
|
||||||
|
public dataSource: MatTableDataSource<Activity>;
|
||||||
public details: any[] = [];
|
public details: any[] = [];
|
||||||
public deviceType: string;
|
public deviceType: string;
|
||||||
public dialogTitle = $localize`Import Activities`;
|
public dialogTitle = $localize`Import Activities`;
|
||||||
@ -45,7 +48,10 @@ export class ImportActivitiesDialog implements OnDestroy {
|
|||||||
public maxSafeInteger = Number.MAX_SAFE_INTEGER;
|
public maxSafeInteger = Number.MAX_SAFE_INTEGER;
|
||||||
public mode: 'DIVIDEND';
|
public mode: 'DIVIDEND';
|
||||||
public selectedActivities: Activity[] = [];
|
public selectedActivities: Activity[] = [];
|
||||||
|
public sortColumn = 'date';
|
||||||
|
public sortDirection: SortDirection = 'desc';
|
||||||
public stepperOrientation: StepperOrientation;
|
public stepperOrientation: StepperOrientation;
|
||||||
|
public totalItems: number;
|
||||||
public uniqueAssetForm: FormGroup;
|
public uniqueAssetForm: FormGroup;
|
||||||
|
|
||||||
private unsubscribeSubject = new Subject<void>();
|
private unsubscribeSubject = new Subject<void>();
|
||||||
@ -173,6 +179,8 @@ export class ImportActivitiesDialog implements OnDestroy {
|
|||||||
.pipe(takeUntil(this.unsubscribeSubject))
|
.pipe(takeUntil(this.unsubscribeSubject))
|
||||||
.subscribe(({ activities }) => {
|
.subscribe(({ activities }) => {
|
||||||
this.activities = activities;
|
this.activities = activities;
|
||||||
|
this.dataSource = new MatTableDataSource(activities.reverse());
|
||||||
|
this.totalItems = activities.length;
|
||||||
|
|
||||||
aStepper.next();
|
aStepper.next();
|
||||||
|
|
||||||
@ -260,6 +268,8 @@ export class ImportActivitiesDialog implements OnDestroy {
|
|||||||
isDryRun: true
|
isDryRun: true
|
||||||
});
|
});
|
||||||
this.activities = activities;
|
this.activities = activities;
|
||||||
|
this.dataSource = new MatTableDataSource(activities.reverse());
|
||||||
|
this.totalItems = activities.length;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(error);
|
console.error(error);
|
||||||
this.handleImportError({ error, activities: content.activities });
|
this.handleImportError({ error, activities: content.activities });
|
||||||
@ -276,6 +286,8 @@ export class ImportActivitiesDialog implements OnDestroy {
|
|||||||
userAccounts: this.data.user.accounts
|
userAccounts: this.data.user.accounts
|
||||||
});
|
});
|
||||||
this.activities = data.activities;
|
this.activities = data.activities;
|
||||||
|
this.dataSource = new MatTableDataSource(data.activities.reverse());
|
||||||
|
this.totalItems = data.activities.length;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(error);
|
console.error(error);
|
||||||
this.handleImportError({
|
this.handleImportError({
|
||||||
|
@ -119,8 +119,29 @@
|
|||||||
</ng-template>
|
</ng-template>
|
||||||
<div class="pt-3">
|
<div class="pt-3">
|
||||||
<ng-container *ngIf="errorMessages?.length === 0; else errorMessage">
|
<ng-container *ngIf="errorMessages?.length === 0; else errorMessage">
|
||||||
|
<gf-activities-table-lazy
|
||||||
|
*ngIf="importStep === 1 && data?.user?.settings?.isExperimentalFeatures === true"
|
||||||
|
[baseCurrency]="data?.user?.settings?.baseCurrency"
|
||||||
|
[dataSource]="dataSource"
|
||||||
|
[deviceType]="data?.deviceType"
|
||||||
|
[hasPermissionToCreateActivity]="false"
|
||||||
|
[hasPermissionToExportActivities]="false"
|
||||||
|
[hasPermissionToFilter]="false"
|
||||||
|
[hasPermissionToOpenDetails]="false"
|
||||||
|
[locale]="data?.user?.settings?.locale"
|
||||||
|
[pageSize]="maxSafeInteger"
|
||||||
|
[showActions]="false"
|
||||||
|
[showCheckbox]="true"
|
||||||
|
[showFooter]="false"
|
||||||
|
[showSymbolColumn]="false"
|
||||||
|
[sortColumn]="sortColumn"
|
||||||
|
[sortDirection]="sortDirection"
|
||||||
|
[sortDisabled]="true"
|
||||||
|
[totalItems]="totalItems"
|
||||||
|
(selectedActivities)="updateSelection($event)"
|
||||||
|
></gf-activities-table-lazy>
|
||||||
<gf-activities-table
|
<gf-activities-table
|
||||||
*ngIf="importStep === 1"
|
*ngIf="importStep === 1 && data?.user?.settings?.isExperimentalFeatures !== true"
|
||||||
[activities]="activities"
|
[activities]="activities"
|
||||||
[baseCurrency]="data?.user?.settings?.baseCurrency"
|
[baseCurrency]="data?.user?.settings?.baseCurrency"
|
||||||
[deviceType]="data?.deviceType"
|
[deviceType]="data?.deviceType"
|
||||||
|
@ -13,6 +13,7 @@ import { GfDialogHeaderModule } from '@ghostfolio/client/components/dialog-heade
|
|||||||
import { GfFileDropModule } from '@ghostfolio/client/directives/file-drop/file-drop.module';
|
import { GfFileDropModule } from '@ghostfolio/client/directives/file-drop/file-drop.module';
|
||||||
import { GfSymbolModule } from '@ghostfolio/client/pipes/symbol/symbol.module';
|
import { GfSymbolModule } from '@ghostfolio/client/pipes/symbol/symbol.module';
|
||||||
import { GfActivitiesTableModule } from '@ghostfolio/ui/activities-table/activities-table.module';
|
import { GfActivitiesTableModule } from '@ghostfolio/ui/activities-table/activities-table.module';
|
||||||
|
import { GfActivitiesTableLazyModule } from '@ghostfolio/ui/activities-table-lazy/activities-table-lazy.module';
|
||||||
|
|
||||||
import { ImportActivitiesDialog } from './import-activities-dialog.component';
|
import { ImportActivitiesDialog } from './import-activities-dialog.component';
|
||||||
|
|
||||||
@ -22,6 +23,7 @@ import { ImportActivitiesDialog } from './import-activities-dialog.component';
|
|||||||
CommonModule,
|
CommonModule,
|
||||||
FormsModule,
|
FormsModule,
|
||||||
GfActivitiesTableModule,
|
GfActivitiesTableModule,
|
||||||
|
GfActivitiesTableLazyModule,
|
||||||
GfDialogFooterModule,
|
GfDialogFooterModule,
|
||||||
GfDialogHeaderModule,
|
GfDialogHeaderModule,
|
||||||
GfFileDropModule,
|
GfFileDropModule,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user