diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/periodisk-redovisning-form/periodisk-redovisning-form.component.html b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/periodisk-redovisning-form/periodisk-redovisning-form.component.html index 92e4853..cc46089 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/periodisk-redovisning-form/periodisk-redovisning-form.component.html +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/periodisk-redovisning-form/periodisk-redovisning-form.component.html @@ -127,25 +127,18 @@ [afLabel]="activitiesFormArrayMetadata[i].name" >
-
- -
- - {{activityFormGroup.errors.hours}} - -
-
+
0 && Number.isInteger(+hours) && +hours >= 0 && +hours <= 200; + const isValidHours = Number.isInteger(hours) && hours >= 0 && hours <= 200; if (isSelected && !isValidHours) { errors = { 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 { @@ -135,22 +140,14 @@ export class SignalFormComponent { type: requestType, omfattning: requestOmfattning, omfattningPercent: requestOmfattning === SignalRequestOmfattning.Deltid ? percent : null, - startdatum: formatDate(startDate), + startDate: formatDate(startDate), }; } submitAndCloseConfirmDialog(genomforandereferens: number): void { this.submitLoading$.next(true); - const { type, omfattning, startDate, percent } = this.signalFormGroup.value as Signal; - - const postRequest: SignalRequest = { - genomforandereferens, - type, - omfattning, - omfattning_procent: omfattning === 'deltid' ? percent : null, - startdatum: formatDate(startDate), - }; + const postRequest = this._formDataToRequest(genomforandereferens, this.signalFormGroup.value as SignalFormData); this.signalFormService .postSignal$(postRequest) 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; diff --git a/libs/ui/src/input/input.component.ts b/libs/ui/src/input/input.component.ts index fa4f200..f423b59 100644 --- a/libs/ui/src/input/input.component.ts +++ b/libs/ui/src/input/input.component.ts @@ -75,7 +75,7 @@ export class InputComponent implements AfterViewInit, ControlValueAccessor, OnCh } checkForChange(rawValue: string): void { - const value = this.uiType === UiInputType.NUMBER ? +rawValue : rawValue; + const value = this.uiType === UiInputType.NUMBER ? (rawValue !== '' ? +rawValue : null) : rawValue; if (this._value !== value) { if (this.onChange) { this.onChange(value);