|
@ -7,9 +7,11 @@ import { |
|
|
OnInit |
|
|
OnInit |
|
|
} from '@angular/core'; |
|
|
} from '@angular/core'; |
|
|
import { |
|
|
import { |
|
|
|
|
|
AbstractControl, |
|
|
FormBuilder, |
|
|
FormBuilder, |
|
|
FormControl, |
|
|
FormControl, |
|
|
FormGroup, |
|
|
FormGroup, |
|
|
|
|
|
ValidationErrors, |
|
|
Validators |
|
|
Validators |
|
|
} from '@angular/forms'; |
|
|
} from '@angular/forms'; |
|
|
import { MatDialogRef } from '@angular/material/dialog'; |
|
|
import { MatDialogRef } from '@angular/material/dialog'; |
|
@ -23,31 +25,67 @@ import { AdminService } from '@ghostfolio/client/services/admin.service'; |
|
|
}) |
|
|
}) |
|
|
export class CreateAssetProfileDialog implements OnInit, OnDestroy { |
|
|
export class CreateAssetProfileDialog implements OnInit, OnDestroy { |
|
|
public createAssetProfileForm: FormGroup; |
|
|
public createAssetProfileForm: FormGroup; |
|
|
|
|
|
public selectedOption: string; |
|
|
|
|
|
|
|
|
public constructor( |
|
|
public constructor( |
|
|
public readonly adminService: AdminService, |
|
|
public readonly adminService: AdminService, |
|
|
public readonly changeDetectorRef: ChangeDetectorRef, |
|
|
public readonly changeDetectorRef: ChangeDetectorRef, |
|
|
public readonly dialogRef: MatDialogRef<CreateAssetProfileDialog>, |
|
|
public readonly dialogRef: MatDialogRef<CreateAssetProfileDialog>, |
|
|
public readonly formBuilder: FormBuilder |
|
|
public readonly formBuilder: FormBuilder, |
|
|
|
|
|
|
|
|
) {} |
|
|
) {} |
|
|
|
|
|
|
|
|
public ngOnInit() { |
|
|
public ngOnInit() { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
this.createAssetProfileForm = this.formBuilder.group({ |
|
|
this.createAssetProfileForm = this.formBuilder.group({ |
|
|
searchSymbol: new FormControl(null, [Validators.required]) |
|
|
searchSymbol: new FormControl(null, [Validators.required]), |
|
|
|
|
|
addSymbol: new FormControl(null, [Validators.required]) |
|
|
|
|
|
}, |
|
|
|
|
|
{ |
|
|
|
|
|
validators: atLeastOneValid, |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
this.selectedOption = 'auto'; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public onCancel() { |
|
|
public onCancel() { |
|
|
this.dialogRef.close(); |
|
|
this.dialogRef.close(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public onRadioChange(option: string) { |
|
|
|
|
|
this.selectedOption = option; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
public onSubmit() { |
|
|
public onSubmit() { |
|
|
|
|
|
console.log(this.createAssetProfileForm.controls['addSymbol'].value) |
|
|
|
|
|
this.selectedOption==='auto'? |
|
|
this.dialogRef.close({ |
|
|
this.dialogRef.close({ |
|
|
dataSource: |
|
|
dataSource: |
|
|
this.createAssetProfileForm.controls['searchSymbol'].value.dataSource, |
|
|
this.createAssetProfileForm.controls['searchSymbol'].value.dataSource, |
|
|
symbol: this.createAssetProfileForm.controls['searchSymbol'].value.symbol |
|
|
symbol: this.createAssetProfileForm.controls['searchSymbol'].value.symbol |
|
|
}); |
|
|
}) |
|
|
|
|
|
: |
|
|
|
|
|
this.dialogRef.close({ |
|
|
|
|
|
dataSource:"MANUAL", |
|
|
|
|
|
symbol: this.createAssetProfileForm.controls['addSymbol'].value |
|
|
|
|
|
}) |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public ngOnDestroy() {} |
|
|
public ngOnDestroy() {} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
const atLeastOneValid = (control: AbstractControl): ValidationErrors | null => { |
|
|
|
|
|
const searchSymbolControl = control.get('searchSymbol'); |
|
|
|
|
|
const addSymbolControl = control.get('addSymbol'); |
|
|
|
|
|
|
|
|
|
|
|
if(searchSymbolControl.valid && addSymbolControl.valid){ |
|
|
|
|
|
return { atLeastOneValid: true }; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if ((!searchSymbolControl || !addSymbolControl) || (searchSymbolControl.valid || addSymbolControl.valid)) { |
|
|
|
|
|
return null; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return { atLeastOneValid: true }; |
|
|
|
|
|
}; |