|
|
@ -20,9 +20,10 @@ import { |
|
|
ChangeDetectionStrategy, |
|
|
ChangeDetectionStrategy, |
|
|
ChangeDetectorRef, |
|
|
ChangeDetectorRef, |
|
|
Component, |
|
|
Component, |
|
|
Inject, |
|
|
DestroyRef, |
|
|
OnDestroy |
|
|
Inject |
|
|
} from '@angular/core'; |
|
|
} from '@angular/core'; |
|
|
|
|
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; |
|
|
import { |
|
|
import { |
|
|
FormBuilder, |
|
|
FormBuilder, |
|
|
FormGroup, |
|
|
FormGroup, |
|
|
@ -46,8 +47,8 @@ import { AssetClass, Tag, Type } from '@prisma/client'; |
|
|
import { isAfter, isToday } from 'date-fns'; |
|
|
import { isAfter, isToday } from 'date-fns'; |
|
|
import { addIcons } from 'ionicons'; |
|
|
import { addIcons } from 'ionicons'; |
|
|
import { calendarClearOutline, refreshOutline } from 'ionicons/icons'; |
|
|
import { calendarClearOutline, refreshOutline } from 'ionicons/icons'; |
|
|
import { EMPTY, Subject } from 'rxjs'; |
|
|
import { EMPTY } from 'rxjs'; |
|
|
import { catchError, delay, takeUntil } from 'rxjs/operators'; |
|
|
import { catchError, delay } from 'rxjs/operators'; |
|
|
|
|
|
|
|
|
import { CreateOrUpdateActivityDialogParams } from './interfaces/interfaces'; |
|
|
import { CreateOrUpdateActivityDialogParams } from './interfaces/interfaces'; |
|
|
import { ActivityType } from './types/activity-type.type'; |
|
|
import { ActivityType } from './types/activity-type.type'; |
|
|
@ -75,7 +76,7 @@ import { ActivityType } from './types/activity-type.type'; |
|
|
styleUrls: ['./create-or-update-activity-dialog.scss'], |
|
|
styleUrls: ['./create-or-update-activity-dialog.scss'], |
|
|
templateUrl: 'create-or-update-activity-dialog.html' |
|
|
templateUrl: 'create-or-update-activity-dialog.html' |
|
|
}) |
|
|
}) |
|
|
export class GfCreateOrUpdateActivityDialogComponent implements OnDestroy { |
|
|
export class GfCreateOrUpdateActivityDialogComponent { |
|
|
public activityForm: FormGroup; |
|
|
public activityForm: FormGroup; |
|
|
|
|
|
|
|
|
public assetClassOptions: AssetClassSelectorOption[] = Object.keys(AssetClass) |
|
|
public assetClassOptions: AssetClassSelectorOption[] = Object.keys(AssetClass) |
|
|
@ -101,13 +102,12 @@ export class GfCreateOrUpdateActivityDialogComponent implements OnDestroy { |
|
|
public typesTranslationMap = new Map<Type, string>(); |
|
|
public typesTranslationMap = new Map<Type, string>(); |
|
|
public Validators = Validators; |
|
|
public Validators = Validators; |
|
|
|
|
|
|
|
|
private unsubscribeSubject = new Subject<void>(); |
|
|
|
|
|
|
|
|
|
|
|
public constructor( |
|
|
public constructor( |
|
|
private changeDetectorRef: ChangeDetectorRef, |
|
|
private changeDetectorRef: ChangeDetectorRef, |
|
|
@Inject(MAT_DIALOG_DATA) public data: CreateOrUpdateActivityDialogParams, |
|
|
@Inject(MAT_DIALOG_DATA) public data: CreateOrUpdateActivityDialogParams, |
|
|
private dataService: DataService, |
|
|
private dataService: DataService, |
|
|
private dateAdapter: DateAdapter<any>, |
|
|
private dateAdapter: DateAdapter<any>, |
|
|
|
|
|
private destroyRef: DestroyRef, |
|
|
public dialogRef: MatDialogRef<GfCreateOrUpdateActivityDialogComponent>, |
|
|
public dialogRef: MatDialogRef<GfCreateOrUpdateActivityDialogComponent>, |
|
|
private formBuilder: FormBuilder, |
|
|
private formBuilder: FormBuilder, |
|
|
@Inject(MAT_DATE_LOCALE) private locale: string, |
|
|
@Inject(MAT_DATE_LOCALE) private locale: string, |
|
|
@ -133,7 +133,7 @@ export class GfCreateOrUpdateActivityDialogComponent implements OnDestroy { |
|
|
|
|
|
|
|
|
this.dataService |
|
|
this.dataService |
|
|
.fetchPortfolioHoldings() |
|
|
.fetchPortfolioHoldings() |
|
|
.pipe(takeUntil(this.unsubscribeSubject)) |
|
|
.pipe(takeUntilDestroyed(this.destroyRef)) |
|
|
.subscribe(({ holdings }) => { |
|
|
.subscribe(({ holdings }) => { |
|
|
this.defaultLookupItems = holdings |
|
|
this.defaultLookupItems = holdings |
|
|
.filter(({ assetSubClass }) => { |
|
|
.filter(({ assetSubClass }) => { |
|
|
@ -237,7 +237,7 @@ export class GfCreateOrUpdateActivityDialogComponent implements OnDestroy { |
|
|
// Slightly delay until the more specific form control value changes have
|
|
|
// Slightly delay until the more specific form control value changes have
|
|
|
// completed
|
|
|
// completed
|
|
|
delay(300), |
|
|
delay(300), |
|
|
takeUntil(this.unsubscribeSubject) |
|
|
takeUntilDestroyed(this.destroyRef) |
|
|
) |
|
|
) |
|
|
.subscribe(async () => { |
|
|
.subscribe(async () => { |
|
|
if ( |
|
|
if ( |
|
|
@ -284,7 +284,7 @@ export class GfCreateOrUpdateActivityDialogComponent implements OnDestroy { |
|
|
|
|
|
|
|
|
this.activityForm |
|
|
this.activityForm |
|
|
.get('assetClass') |
|
|
.get('assetClass') |
|
|
.valueChanges.pipe(takeUntil(this.unsubscribeSubject)) |
|
|
.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)) |
|
|
.subscribe((assetClass) => { |
|
|
.subscribe((assetClass) => { |
|
|
const assetSubClasses = ASSET_CLASS_MAPPING.get(assetClass) ?? []; |
|
|
const assetSubClasses = ASSET_CLASS_MAPPING.get(assetClass) ?? []; |
|
|
|
|
|
|
|
|
@ -335,7 +335,7 @@ export class GfCreateOrUpdateActivityDialogComponent implements OnDestroy { |
|
|
if (newTag && this.hasPermissionToCreateOwnTag) { |
|
|
if (newTag && this.hasPermissionToCreateOwnTag) { |
|
|
this.dataService |
|
|
this.dataService |
|
|
.postTag({ ...newTag, userId: this.data.user.id }) |
|
|
.postTag({ ...newTag, userId: this.data.user.id }) |
|
|
.pipe(takeUntil(this.unsubscribeSubject)) |
|
|
.pipe(takeUntilDestroyed(this.destroyRef)) |
|
|
.subscribe((tag) => { |
|
|
.subscribe((tag) => { |
|
|
this.activityForm.get('tags').setValue( |
|
|
this.activityForm.get('tags').setValue( |
|
|
tags.map((currentTag) => { |
|
|
tags.map((currentTag) => { |
|
|
@ -349,7 +349,7 @@ export class GfCreateOrUpdateActivityDialogComponent implements OnDestroy { |
|
|
|
|
|
|
|
|
this.userService |
|
|
this.userService |
|
|
.get(true) |
|
|
.get(true) |
|
|
.pipe(takeUntil(this.unsubscribeSubject)) |
|
|
.pipe(takeUntilDestroyed(this.destroyRef)) |
|
|
.subscribe(); |
|
|
.subscribe(); |
|
|
}); |
|
|
}); |
|
|
} |
|
|
} |
|
|
@ -357,7 +357,7 @@ export class GfCreateOrUpdateActivityDialogComponent implements OnDestroy { |
|
|
|
|
|
|
|
|
this.activityForm |
|
|
this.activityForm |
|
|
.get('type') |
|
|
.get('type') |
|
|
.valueChanges.pipe(takeUntil(this.unsubscribeSubject)) |
|
|
.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)) |
|
|
.subscribe((type: ActivityType) => { |
|
|
.subscribe((type: ActivityType) => { |
|
|
if ( |
|
|
if ( |
|
|
type === 'VALUABLE' || |
|
|
type === 'VALUABLE' || |
|
|
@ -465,7 +465,7 @@ export class GfCreateOrUpdateActivityDialogComponent implements OnDestroy { |
|
|
dataSource: this.data.activity?.SymbolProfile?.dataSource, |
|
|
dataSource: this.data.activity?.SymbolProfile?.dataSource, |
|
|
symbol: this.data.activity?.SymbolProfile?.symbol |
|
|
symbol: this.data.activity?.SymbolProfile?.symbol |
|
|
}) |
|
|
}) |
|
|
.pipe(takeUntil(this.unsubscribeSubject)) |
|
|
.pipe(takeUntilDestroyed(this.destroyRef)) |
|
|
.subscribe(({ marketPrice }) => { |
|
|
.subscribe(({ marketPrice }) => { |
|
|
this.currentMarketPrice = marketPrice; |
|
|
this.currentMarketPrice = marketPrice; |
|
|
|
|
|
|
|
|
@ -557,11 +557,6 @@ export class GfCreateOrUpdateActivityDialogComponent implements OnDestroy { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public ngOnDestroy() { |
|
|
|
|
|
this.unsubscribeSubject.next(); |
|
|
|
|
|
this.unsubscribeSubject.complete(); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private updateAssetProfile() { |
|
|
private updateAssetProfile() { |
|
|
this.isLoading = true; |
|
|
this.isLoading = true; |
|
|
this.changeDetectorRef.markForCheck(); |
|
|
this.changeDetectorRef.markForCheck(); |
|
|
@ -581,7 +576,7 @@ export class GfCreateOrUpdateActivityDialogComponent implements OnDestroy { |
|
|
|
|
|
|
|
|
return EMPTY; |
|
|
return EMPTY; |
|
|
}), |
|
|
}), |
|
|
takeUntil(this.unsubscribeSubject) |
|
|
takeUntilDestroyed(this.destroyRef) |
|
|
) |
|
|
) |
|
|
.subscribe(({ currency, dataSource, marketPrice }) => { |
|
|
.subscribe(({ currency, dataSource, marketPrice }) => { |
|
|
if (this.mode === 'create') { |
|
|
if (this.mode === 'create') { |
|
|
|