diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/signal-form/signal-form.component.html b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/signal-form/signal-form.component.html index 5a48fe2..6d1b9dc 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/signal-form/signal-form.component.html +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/signal-form/signal-form.component.html @@ -22,63 +22,39 @@
-
- -
- -
-
-
- - - -
- -
-
-
- -
- -
-
+ + + + +
(false); confirmDialogOpen$ = new BehaviorSubject(false); signalFormGroup = new FormGroup( @@ -50,8 +55,8 @@ export class SignalFormComponent { ]; omfattningRadioButtons: Radiobutton[] = [ - { label: 'Heltid', value: 'heltid' }, - { label: 'Deltid', value: 'deltid' }, + { label: 'Heltid', value: SignalOmfattning.Heltid }, + { label: 'Deltid', value: SignalOmfattning.Deltid }, ]; constructor(private signalFormService: SignalFormService, private activatedRoute: ActivatedRoute) {} @@ -61,16 +66,16 @@ export class SignalFormComponent { } get typeFormControl(): FormControl { - return this.signalFormGroup.get('type') as FormControl; + return this.signalFormGroup.get(this.typeFormName) as FormControl; } get omfattningFormControl(): FormControl { - return this.signalFormGroup.get('omfattning') as FormControl; + return this.signalFormGroup.get(this.omfattningFormName) as FormControl; } get percentFormControl(): FormControl { - return this.signalFormGroup.get('percent') as FormControl; + return this.signalFormGroup.get(this.percentFormName) as FormControl; } get startDateFormControl(): FormControl { - return this.signalFormGroup.get('startDate') as FormControl; + return this.signalFormGroup.get(this.startDateFormName) as FormControl; } get showPercentFormControl(): boolean { @@ -106,7 +111,7 @@ export class SignalFormComponent { submitAndCloseConfirmDialog(genomforandeReferens: number): void { this.submitLoading$.next(true); - const { type, omfattning, startDate, percent } = this.signalFormGroup.value as Signal; + const { type, omfattning, startDate, percent } = this.signalFormGroup.value as SignalFormData; const postRequest: SignalRequest = { genomforandeReferens: +genomforandeReferens, diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/signal-form/signal-form.model.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/signal-form/signal-form.model.ts new file mode 100644 index 0000000..121142d --- /dev/null +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/signal-form/signal-form.model.ts @@ -0,0 +1,17 @@ +export enum SignalOmfattning { + Heltid = 'heltid', + Deltid = 'deltid', +} +export enum SignalType { + Arbete = 'arbete', + Utbildning = 'utbildning', +} + +export interface SignalFormData { + type: SignalType; + omfattning: SignalOmfattning; + percent: number; + startDate: Date; +} + +export type SignalFormKeys = keyof SignalFormData; diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/signal-form/signal-form.module.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/signal-form/signal-form.module.ts index 981f294..460bdcb 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/signal-form/signal-form.module.ts +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/signal-form/signal-form.module.ts @@ -1,7 +1,5 @@ import { DigiNgDialogModule } from '@af/digi-ng/_dialog/dialog'; import { DigiNgFormDatepickerModule } from '@af/digi-ng/_form/form-datepicker'; -import { DigiNgFormRangeModule } from '@af/digi-ng/_form/form-range'; -import { DigiNgFormSelectModule } from '@af/digi-ng/_form/form-select'; import { DigiNgFormValidationMessageModule } from '@af/digi-ng/_form/form-validation-message'; import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; @@ -16,6 +14,9 @@ import { ReportDescriptionListModule } from '../../../components/report-descript import { ReportLayoutModule } from '../../../components/report-layout/report-layout.module'; import { SignalFormComponent } from './signal-form.component'; import { SignalFormService } from './signal-form.service'; +import { UiInputModule } from '@ui/input/input.module'; +import { UiSelectModule } from '@ui/select/select.module'; +import { UiLoaderModule } from '@ui/loader/loader.module'; @NgModule({ schemas: [CUSTOM_ELEMENTS_SCHEMA], @@ -31,11 +32,12 @@ import { SignalFormService } from './signal-form.service'; UiRadiobuttonGroupModule, DigiNgFormDatepickerModule, UiSkeletonModule, + UiSelectModule, + UiLoaderModule, DigiNgDialogModule, - DigiNgFormRangeModule, DigiNgFormValidationMessageModule, - DigiNgFormSelectModule, ReportDescriptionListModule, + UiInputModule, ], providers: [SignalFormService], exports: [SignalFormComponent], diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/signal-form/signal-form.validator.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/signal-form/signal-form.validator.ts index c2fc948..1c81b5d 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/signal-form/signal-form.validator.ts +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/signal-form/signal-form.validator.ts @@ -1,11 +1,11 @@ import { AbstractControl, ValidatorFn } from '@angular/forms'; -import { Signal } from '@msfa-models/signal.model'; +import { SignalFormData } from './signal-form.model'; export class SignalFormValidator { static isSignalValid(): ValidatorFn { return (c: AbstractControl): { [key: string]: string } => { let errors: { [key: string]: string } = null; - const { type, omfattning, percent, startDate } = c.value as Signal; + const { type, omfattning, percent, startDate } = c.value as SignalFormData; if (!type) { errors = { @@ -14,16 +14,15 @@ export class SignalFormValidator { }; } if (type && omfattning === 'deltid') { - if (percent < 5) { + if (percent < 1) { errors = { ...errors, - percent: 'Antal procent måste vara högre än 5%', + percent: 'Omfattning i procent får inte vara mindre än 1% om deltid har valts', }; - } - if (percent > 100) { + } else if (percent > 99) { errors = { ...errors, - percent: 'Antal procent måste vara lägre än 100%', + percent: 'Omfattning i procent får inte vara mer än 99% om deltid har valts', }; } } diff --git a/apps/mina-sidor-fa/src/app/shared/models/signal.model.ts b/apps/mina-sidor-fa/src/app/shared/models/signal.model.ts index 6c60151..acd6069 100644 --- a/apps/mina-sidor-fa/src/app/shared/models/signal.model.ts +++ b/apps/mina-sidor-fa/src/app/shared/models/signal.model.ts @@ -1,11 +1,5 @@ import { SignalResponse } from './api/signal.response.model'; - -export interface Signal { - type: 'arbete' | 'utbildning'; - omfattning: 'heltid' | 'deltid'; - percent: number; - startDate: Date; -} +import { Signal } from '../../pages/deltagare/pages/deltagare-details/pages/report-forms/signal-form/signal-form.model'; export function mapResponseToSignal(data: SignalResponse): Signal { const { typ, startdatum, omfattning, omfattning_procent } = data;