ui/src/app/components/add-new-sequence/add-new-sequence.component.ts (48 lines of code) (raw):

import { Component, OnInit} from '@angular/core'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import { MatDialogRef} from '@angular/material/dialog'; import ICreateSequence from 'src/app/model/auto-gen'; import { DataService } from 'src/app/services/data/data.service'; import { FetchService } from 'src/app/services/fetch/fetch.service' import { linkedFieldsValidatorSequence } from 'src/app/utils/utils'; @Component({ selector: 'app-add-new-sequence', templateUrl: './add-new-sequence.component.html', styleUrls: ['./add-new-sequence.component.scss'] }) export class AddNewSequenceComponent implements OnInit { addNewSequenceForm: FormGroup selectedSequenceKind: string = "" sequenceKinds : string[] = [] constructor( private formBuilder: FormBuilder, private dataService: DataService, private fetchSerice: FetchService, private dialogRef: MatDialogRef<AddNewSequenceComponent>) { this.addNewSequenceForm = this.formBuilder.group({ name: ['', [Validators.required, Validators.minLength(1), Validators.maxLength(128), Validators.pattern('^[a-zA-Z][a-zA-Z0-9_]*$')]], sequenceKind: ['', Validators.required], skipRangeMin: ['', Validators.pattern('^[0-9]+$')], skipRangeMax: ['', Validators.pattern('^[0-9]+$')], startWithCounter: ['', Validators.pattern('^[0-9]+$')], }, { validator: linkedFieldsValidatorSequence('skipRangeMin', 'skipRangeMax') }) this.fetchSerice.getSequenceKind().subscribe( (sequenceKinds: any) => { this.sequenceKinds = sequenceKinds; } ); } ngOnInit(): void {} addNewSequence() { let formValue = this.addNewSequenceForm.value let payload: ICreateSequence = { Name: formValue.name, SequenceKind: this.selectedSequenceKind, SkipRangeMin: formValue.skipRangeMin, SkipRangeMax: formValue.skipRangeMax, StartWithCounter: formValue.startWithCounter } this.dataService.addSequence(payload) this.dialogRef.close() } }