Browse Source

feat #1970: introduced stepper to import activities

pull/1990/head
visrut 2 years ago
parent
commit
551a79815c
  1. 7
      apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
  2. 10
      apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html
  3. 2
      apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.module.ts
  4. 12
      apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.scss

7
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts

@ -19,6 +19,11 @@ import { Subject, takeUntil } from 'rxjs';
import { ImportActivitiesDialogParams } from './interfaces/interfaces'; import { ImportActivitiesDialogParams } from './interfaces/interfaces';
enum FileStatus {
SELECT = 0,
UPLOADED
}
@Component({ @Component({
changeDetection: ChangeDetectionStrategy.OnPush, changeDetection: ChangeDetectionStrategy.OnPush,
selector: 'gf-import-activities-dialog', selector: 'gf-import-activities-dialog',
@ -36,6 +41,7 @@ export class ImportActivitiesDialog implements OnDestroy {
public mode: 'DIVIDEND'; public mode: 'DIVIDEND';
public selectedActivities: Activity[] = []; public selectedActivities: Activity[] = [];
public uniqueAssetForm: FormGroup; public uniqueAssetForm: FormGroup;
public fileStatus: FileStatus = FileStatus.SELECT;
private unsubscribeSubject = new Subject<void>(); private unsubscribeSubject = new Subject<void>();
@ -228,6 +234,7 @@ export class ImportActivitiesDialog implements OnDestroy {
this.isFileSelected = true; this.isFileSelected = true;
this.snackBar.dismiss(); this.snackBar.dismiss();
this.changeDetectorRef.markForCheck(); this.changeDetectorRef.markForCheck();
this.fileStatus = FileStatus.UPLOADED;
} }
}; };
}; };

10
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html

@ -4,8 +4,14 @@
[title]="errorMessages.length === 0 ? 'Import Activities' : 'Import Activities Error'" [title]="errorMessages.length === 0 ? 'Import Activities' : 'Import Activities Error'"
(closeButtonClicked)="onCancel()" (closeButtonClicked)="onCancel()"
></gf-dialog-header> ></gf-dialog-header>
<link
href="https://fonts.googleapis.com/icon?family=Material+Icons"
rel="stylesheet"
/>
<div class="flex-grow-1 py-3" mat-dialog-content> <div class="flex-grow-1 py-3" mat-dialog-content>
<mat-stepper #stepper [linear]="true" [selectedIndex]="fileStatus">
<mat-step editable="false" label="Select File">
<ng-container *ngIf="!isFileSelected"> <ng-container *ngIf="!isFileSelected">
<ng-container *ngIf="mode === 'DIVIDEND'; else selectFile"> <ng-container *ngIf="mode === 'DIVIDEND'; else selectFile">
<form [formGroup]="uniqueAssetForm" (ngSubmit)="onLoadDividends()"> <form [formGroup]="uniqueAssetForm" (ngSubmit)="onLoadDividends()">
@ -61,6 +67,8 @@
</div> </div>
</ng-template> </ng-template>
</ng-container> </ng-container>
</mat-step>
<mat-step editable="false" label="Select Activities">
<ng-container *ngIf="isFileSelected"> <ng-container *ngIf="isFileSelected">
<ng-container *ngIf="errorMessages.length === 0; else errorMessage"> <ng-container *ngIf="errorMessages.length === 0; else errorMessage">
<gf-activities-table <gf-activities-table
@ -110,6 +118,8 @@
</div> </div>
</ng-template> </ng-template>
</ng-container> </ng-container>
</mat-step>
</mat-stepper>
</div> </div>
<div *ngIf="isFileSelected" class="justify-content-end" mat-dialog-actions> <div *ngIf="isFileSelected" class="justify-content-end" mat-dialog-actions>

2
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.module.ts

@ -9,6 +9,7 @@ import { MatSelectModule } from '@angular/material/select';
import { GfDialogFooterModule } from '@ghostfolio/client/components/dialog-footer/dialog-footer.module'; import { GfDialogFooterModule } from '@ghostfolio/client/components/dialog-footer/dialog-footer.module';
import { GfDialogHeaderModule } from '@ghostfolio/client/components/dialog-header/dialog-header.module'; import { GfDialogHeaderModule } from '@ghostfolio/client/components/dialog-header/dialog-header.module';
import { GfActivitiesTableModule } from '@ghostfolio/ui/activities-table/activities-table.module'; import { GfActivitiesTableModule } from '@ghostfolio/ui/activities-table/activities-table.module';
import { MatStepperModule } from '@angular/material/stepper';
import { ImportActivitiesDialog } from './import-activities-dialog.component'; import { ImportActivitiesDialog } from './import-activities-dialog.component';
@ -25,6 +26,7 @@ import { ImportActivitiesDialog } from './import-activities-dialog.component';
MatExpansionModule, MatExpansionModule,
MatFormFieldModule, MatFormFieldModule,
MatSelectModule, MatSelectModule,
MatStepperModule,
ReactiveFormsModule ReactiveFormsModule
], ],
schemas: [CUSTOM_ELEMENTS_SCHEMA] schemas: [CUSTOM_ELEMENTS_SCHEMA]

12
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.scss

@ -17,4 +17,16 @@
} }
} }
} }
.mat-stepper-horizontal {
margin-top: 8px;
}
.mat-mdc-form-field {
margin-top: 16px;
}
::ng-deep .mat-horizontal-stepper-header {
pointer-events: none !important;
}
} }

Loading…
Cancel
Save