Browse Source

Refactoring

pull/1990/head
Thomas 2 years ago
parent
commit
ce82549e60
  1. 0
      apps/client/src/app/pages/portfolio/activities/import-activities-dialog/enums/import-step.ts
  2. 19
      apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
  3. 138
      apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html
  4. 2
      apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.module.ts

0
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/enums/enums.ts → apps/client/src/app/pages/portfolio/activities/import-activities-dialog/enums/import-step.ts

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

@ -1,3 +1,7 @@
import {
StepperOrientation,
StepperSelectionEvent
} from '@angular/cdk/stepper';
import { import {
ChangeDetectionStrategy, ChangeDetectionStrategy,
ChangeDetectorRef, ChangeDetectorRef,
@ -8,6 +12,7 @@ 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 { MatStepper } from '@angular/material/stepper';
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';
@ -15,16 +20,11 @@ import { ImportActivitiesService } from '@ghostfolio/client/services/import-acti
import { Position } from '@ghostfolio/common/interfaces'; import { Position } from '@ghostfolio/common/interfaces';
import { AssetClass } from '@prisma/client'; import { AssetClass } from '@prisma/client';
import { isArray, sortBy } from 'lodash'; import { isArray, sortBy } from 'lodash';
import { DeviceDetectorService } from 'ngx-device-detector';
import { Subject, takeUntil } from 'rxjs'; import { Subject, takeUntil } from 'rxjs';
import { ImportStep } from './enums/enums';
import { ImportStep } from './enums/import-step';
import { ImportActivitiesDialogParams } from './interfaces/interfaces'; import { ImportActivitiesDialogParams } from './interfaces/interfaces';
import {
StepperOrientation,
StepperSelectionEvent
} from '@angular/cdk/stepper';
import { MatStepper } from '@angular/material/stepper';
import { DeviceDetectorService } from 'ngx-device-detector';
@Component({ @Component({
changeDetection: ChangeDetectionStrategy.OnPush, changeDetection: ChangeDetectionStrategy.OnPush,
@ -101,10 +101,6 @@ export class ImportActivitiesDialog implements OnDestroy {
this.dialogRef.close(); this.dialogRef.close();
} }
public onImportCancel(aStepper: MatStepper) {
aStepper.previous();
}
public async onImportActivities() { public async onImportActivities() {
try { try {
this.snackBar.open('⏳ ' + $localize`Importing data...`); this.snackBar.open('⏳ ' + $localize`Importing data...`);
@ -159,6 +155,7 @@ export class ImportActivitiesDialog implements OnDestroy {
this.details = []; this.details = [];
this.errorMessages = []; this.errorMessages = [];
this.importStep = ImportStep.SELECT_ACTIVITIES; this.importStep = ImportStep.SELECT_ACTIVITIES;
this.uniqueAssetForm.controls['uniqueAsset'].enable();
aStepper.reset(); aStepper.reset();
} }

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

@ -16,10 +16,9 @@
> >
<mat-step [completed]="importStep === 0" [selected]="importStep === 0"> <mat-step [completed]="importStep === 0" [selected]="importStep === 0">
<ng-template i18n matStepLabel>Select File</ng-template> <ng-template i18n matStepLabel>Select File</ng-template>
<ng-container> <div class="pt-3">
<ng-container *ngIf="mode === 'DIVIDEND'; else selectFile"> <ng-container *ngIf="mode === 'DIVIDEND'; else selectFile">
<form <form
class="mt-3"
[formGroup]="uniqueAssetForm" [formGroup]="uniqueAssetForm"
(ngSubmit)="onLoadDividends(stepper)" (ngSubmit)="onLoadDividends(stepper)"
> >
@ -46,7 +45,7 @@
</form> </form>
</ng-container> </ng-container>
<ng-template #selectFile> <ng-template #selectFile>
<div class="d-flex flex-column justify-content-center mt-3"> <div class="d-flex flex-column justify-content-center">
<button <button
class="py-4" class="py-4"
color="primary" color="primary"
@ -74,73 +73,82 @@
</p> </p>
</div> </div>
</ng-template> </ng-template>
</ng-container> </div>
</mat-step> </mat-step>
<mat-step [completed]="importStep === 1" [selected]="importStep === 1"> <mat-step [completed]="importStep === 1" [selected]="importStep === 1">
<ng-template i18n matStepLabel>Select Activities</ng-template> <ng-template i18n matStepLabel>Select Activities</ng-template>
<ng-container *ngIf="errorMessages.length === 0; else errorMessage"> <div class="pt-3">
<gf-activities-table <ng-container *ngIf="errorMessages.length === 0; else errorMessage">
*ngIf="importStep === 1" <gf-activities-table
[activities]="activities" *ngIf="importStep === 1"
[baseCurrency]="data?.user?.settings?.baseCurrency" [activities]="activities"
[deviceType]="data?.deviceType" [baseCurrency]="data?.user?.settings?.baseCurrency"
[hasPermissionToCreateActivity]="false" [deviceType]="data?.deviceType"
[hasPermissionToExportActivities]="false" [hasPermissionToCreateActivity]="false"
[hasPermissionToFilter]="false" [hasPermissionToExportActivities]="false"
[hasPermissionToOpenDetails]="false" [hasPermissionToFilter]="false"
[locale]="data?.user?.settings?.locale" [hasPermissionToOpenDetails]="false"
[pageSize]="maxSafeInteger" [locale]="data?.user?.settings?.locale"
[showActions]="false" [pageSize]="maxSafeInteger"
[showCheckbox]="true" [showActions]="false"
[showFooter]="false" [showCheckbox]="true"
[showSymbolColumn]="false" [showFooter]="false"
(selectedActivities)="updateSelection($event)" [showSymbolColumn]="false"
></gf-activities-table> (selectedActivities)="updateSelection($event)"
<div class="d-flex justify-content-end mt-3"> ></gf-activities-table>
<button i18n mat-button (click)="onImportCancel(stepper)"> <div class="d-flex justify-content-end mt-3">
Cancel <button mat-button (click)="onReset(stepper)">
</button> <ng-container i18n>Back</ng-container>
<button </button>
class="ml-1" <button
color="primary" class="ml-1"
mat-flat-button color="primary"
[disabled]="!selectedActivities?.length" mat-flat-button
(click)="onImportActivities()" [disabled]="!selectedActivities?.length"
> (click)="onImportActivities()"
<ng-container i18n>Import</ng-container> >
</button> <ng-container i18n>Import</ng-container>
</div> </button>
</ng-container> </div>
<ng-template #errorMessage> </ng-container>
<mat-accordion displayMode="flat"> <ng-template #errorMessage>
<mat-expansion-panel <mat-accordion displayMode="flat">
*ngFor="let message of errorMessages; let i = index" <mat-expansion-panel
[disabled]="!details[i]" *ngFor="let message of errorMessages; let i = index"
> [disabled]="!details[i]"
<mat-expansion-panel-header class="pl-1"> >
<mat-panel-title> <mat-expansion-panel-header class="pl-1">
<div class="d-flex"> <mat-panel-title>
<div class="align-items-center d-flex mr-2"> <div class="d-flex">
<ion-icon name="warning-outline"></ion-icon> <div class="align-items-center d-flex mr-2">
<ion-icon name="warning-outline"></ion-icon>
</div>
<div>{{ message }}</div>
</div> </div>
<div>{{ message }}</div> </mat-panel-title>
</div> </mat-expansion-panel-header>
</mat-panel-title> <pre
</mat-expansion-panel-header> *ngIf="details[i]"
<pre class="m-0"
*ngIf="details[i]" ><code>{{ details[i] | json }}</code></pre>
class="m-0" </mat-expansion-panel>
><code>{{ details[i] | json }}</code></pre> </mat-accordion>
</mat-expansion-panel> <div class="d-flex justify-content-end mt-3">
</mat-accordion> <button mat-button (click)="onReset(stepper)">
<div class="mt-2"> <ng-container i18n>Back</ng-container>
<button mat-button (click)="onReset(stepper)"> </button>
<ion-icon class="mr-2" name="arrow-back-outline"></ion-icon> <button
<span i18n>Back</span> class="ml-1"
</button> color="primary"
</div> mat-flat-button
</ng-template> [disabled]="true"
>
<ng-container i18n>Import</ng-container>
</button>
</div>
</ng-template>
</div>
</mat-step> </mat-step>
</mat-stepper> </mat-stepper>
</div> </div>

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

@ -6,10 +6,10 @@ import { MatDialogModule } from '@angular/material/dialog';
import { MatExpansionModule } from '@angular/material/expansion'; import { MatExpansionModule } from '@angular/material/expansion';
import { MatFormFieldModule } from '@angular/material/form-field'; import { MatFormFieldModule } from '@angular/material/form-field';
import { MatSelectModule } from '@angular/material/select'; import { MatSelectModule } from '@angular/material/select';
import { MatStepperModule } from '@angular/material/stepper';
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';

Loading…
Cancel
Save