|
|
@ -2,10 +2,8 @@ import { GfSymbolAutocompleteComponent } from '@ghostfolio/ui/symbol-autocomplet |
|
|
|
|
|
|
|
|
import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core'; |
|
|
import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core'; |
|
|
import { |
|
|
import { |
|
|
AbstractControl, |
|
|
|
|
|
FormBuilder, |
|
|
FormBuilder, |
|
|
FormControl, |
|
|
FormControl, |
|
|
FormGroup, |
|
|
|
|
|
FormsModule, |
|
|
FormsModule, |
|
|
ReactiveFormsModule, |
|
|
ReactiveFormsModule, |
|
|
ValidationErrors, |
|
|
ValidationErrors, |
|
|
@ -14,6 +12,9 @@ import { |
|
|
import { MatButtonModule } from '@angular/material/button'; |
|
|
import { MatButtonModule } from '@angular/material/button'; |
|
|
import { MatDialogModule, MatDialogRef } from '@angular/material/dialog'; |
|
|
import { MatDialogModule, MatDialogRef } from '@angular/material/dialog'; |
|
|
import { MatFormFieldModule } from '@angular/material/form-field'; |
|
|
import { MatFormFieldModule } from '@angular/material/form-field'; |
|
|
|
|
|
import { SymbolProfile } from '@prisma/client'; |
|
|
|
|
|
|
|
|
|
|
|
import { CreateWatchlistItemForm } from './interfaces/interfaces'; |
|
|
|
|
|
|
|
|
@Component({ |
|
|
@Component({ |
|
|
changeDetection: ChangeDetectionStrategy.OnPush, |
|
|
changeDetection: ChangeDetectionStrategy.OnPush, |
|
|
@ -31,7 +32,7 @@ import { MatFormFieldModule } from '@angular/material/form-field'; |
|
|
templateUrl: 'create-watchlist-item-dialog.html' |
|
|
templateUrl: 'create-watchlist-item-dialog.html' |
|
|
}) |
|
|
}) |
|
|
export class GfCreateWatchlistItemDialogComponent implements OnInit { |
|
|
export class GfCreateWatchlistItemDialogComponent implements OnInit { |
|
|
public createWatchlistItemForm: FormGroup; |
|
|
public createWatchlistItemForm: CreateWatchlistItemForm; |
|
|
|
|
|
|
|
|
public constructor( |
|
|
public constructor( |
|
|
public readonly dialogRef: MatDialogRef<GfCreateWatchlistItemDialogComponent>, |
|
|
public readonly dialogRef: MatDialogRef<GfCreateWatchlistItemDialogComponent>, |
|
|
@ -41,7 +42,9 @@ export class GfCreateWatchlistItemDialogComponent implements OnInit { |
|
|
public ngOnInit() { |
|
|
public ngOnInit() { |
|
|
this.createWatchlistItemForm = this.formBuilder.group( |
|
|
this.createWatchlistItemForm = this.formBuilder.group( |
|
|
{ |
|
|
{ |
|
|
searchSymbol: new FormControl(null, [Validators.required]) |
|
|
searchSymbol: new FormControl<SymbolProfile | null>(null, [ |
|
|
|
|
|
Validators.required |
|
|
|
|
|
]) |
|
|
}, |
|
|
}, |
|
|
{ |
|
|
{ |
|
|
validators: this.validator |
|
|
validators: this.validator |
|
|
@ -56,18 +59,18 @@ export class GfCreateWatchlistItemDialogComponent implements OnInit { |
|
|
public onSubmit() { |
|
|
public onSubmit() { |
|
|
this.dialogRef.close({ |
|
|
this.dialogRef.close({ |
|
|
dataSource: |
|
|
dataSource: |
|
|
this.createWatchlistItemForm.get('searchSymbol').value.dataSource, |
|
|
this.createWatchlistItemForm.controls.searchSymbol.value?.dataSource, |
|
|
symbol: this.createWatchlistItemForm.get('searchSymbol').value.symbol |
|
|
symbol: this.createWatchlistItemForm.controls.searchSymbol.value?.symbol |
|
|
}); |
|
|
}); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
private validator(control: AbstractControl): ValidationErrors { |
|
|
private validator(control: CreateWatchlistItemForm): ValidationErrors { |
|
|
const searchSymbolControl = control.get('searchSymbol'); |
|
|
const searchSymbolControl = control.controls.searchSymbol; |
|
|
|
|
|
|
|
|
if ( |
|
|
if ( |
|
|
searchSymbolControl.valid && |
|
|
searchSymbolControl.valid && |
|
|
searchSymbolControl.value.dataSource && |
|
|
searchSymbolControl.value?.dataSource && |
|
|
searchSymbolControl.value.symbol |
|
|
searchSymbolControl.value?.symbol |
|
|
) { |
|
|
) { |
|
|
return { incomplete: false }; |
|
|
return { incomplete: false }; |
|
|
} |
|
|
} |
|
|
|