BP 778: fixed bug in datepicker validation; adjusted every datepicker
diff --git a/src/app/masterdata-management/components/calendar/calendar.component.html b/src/app/masterdata-management/components/calendar/calendar.component.html
index 3de6d74..ddfa4c2 100644
--- a/src/app/masterdata-management/components/calendar/calendar.component.html
+++ b/src/app/masterdata-management/components/calendar/calendar.component.html
@@ -37,7 +37,7 @@
</div>
<div class="col-md-2">
<div class="form-group">
- <div class="input-group">
+ <div class="input-group" formGroupName="date">
<input class="form-control" placeholder="Datum" name="dp" ngbDatepicker #date="ngbDatepicker"
formControlName="date" id="dateInput" required>
<div class="input-group-append">
@@ -52,7 +52,7 @@
</button>
</div>
</div>
- <ok-error [control]="form.controls['date']"></ok-error>
+ <ok-error [control]="form.controls['date'].controls['date']"></ok-error>
</div>
</div>
</div>
diff --git a/src/app/masterdata-management/components/calendar/calendar.component.ts b/src/app/masterdata-management/components/calendar/calendar.component.ts
index 4628d10..a48f7f2 100644
--- a/src/app/masterdata-management/components/calendar/calendar.component.ts
+++ b/src/app/masterdata-management/components/calendar/calendar.component.ts
@@ -55,7 +55,9 @@
this.form = this.fb.group({
id: '',
name: ['', Validators.required],
- date: ['', Validators.required]
+ date: this.fb.group({
+ date: ['', Validators.required]
+ })
});
}
/**
diff --git a/src/app/masterdata-management/components/standbygroup/standbygroup.component.ts b/src/app/masterdata-management/components/standbygroup/standbygroup.component.ts
index 15a801e..14a2d00 100644
--- a/src/app/masterdata-management/components/standbygroup/standbygroup.component.ts
+++ b/src/app/masterdata-management/components/standbygroup/standbygroup.component.ts
@@ -351,8 +351,10 @@
if (dataToMove.length === 1) {
this.userModalRef.componentInstance.form.patchValue(
{
- validFrom: this.ngbDateParserFormatter.parse(dataToMove[0].validFrom),
- validTo: this.ngbDateParserFormatter.parse(dataToMove[0].validTo),
+ date: {
+ validFrom: this.ngbDateParserFormatter.parse(dataToMove[0].validFrom),
+ validTo: this.ngbDateParserFormatter.parse(dataToMove[0].validTo),
+ },
position: dataToMove[0].position
}
);
diff --git a/src/app/masterdata-management/components/user/user.component.html b/src/app/masterdata-management/components/user/user.component.html
index 3450033..7590fda 100644
--- a/src/app/masterdata-management/components/user/user.component.html
+++ b/src/app/masterdata-management/components/user/user.component.html
@@ -11,7 +11,8 @@
-->
<div class="container-fluid">
<form class="mt-3" [formGroup]="form" novalidate>
- <div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-3 pb-2 mb-3 border-bottom stick-headlines" *ngIf="!isModal">
+ <div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-3 pb-2 mb-3 border-bottom stick-headlines"
+ *ngIf="!isModal">
<h1 class="h2">Mitarbeiter verwalten</h1>
<div class="btn-toolbar mb-2 mb-md-0">
<button *ngIf="authService.userHasRoles(['BP_Sachbearbeiter','BP_Admin'])" class="btn btn-success mr-1" (click)="saveUser()"
@@ -47,7 +48,7 @@
</div>
<div class="row">
<div [ngClass]="{'col-md-6': !isModal, 'col-md-12': isModal}">
- <div class="row">
+ <div class="row" formGroupName="date">
<label class="form-check-label col-form-label col-md-3">
Gültigkeit
</label>
@@ -67,8 +68,9 @@
<i class="fa fa-clock-o" aria-hidden="true"></i>
</button>
</div>
+ <ok-error [control]="form.controls['date'].controls['validFrom']" class="w-100"></ok-error>
</div>
- <ok-error [control]="form.controls['validTo']"></ok-error>
+ <ok-error [control]="form.controls['date']"></ok-error>
</div>
</div>
<div class="col-md-4">
@@ -87,6 +89,7 @@
<i class="fa fa-clock-o" aria-hidden="true"></i>
</button>
</div>
+ <ok-error [control]="form.controls['date'].controls['validTo']" class="w-100"></ok-error>
</div>
</div>
</div>
diff --git a/src/app/masterdata-management/components/user/user.component.spec.ts b/src/app/masterdata-management/components/user/user.component.spec.ts
index 9ed21df..d1f8fd0 100644
--- a/src/app/masterdata-management/components/user/user.component.spec.ts
+++ b/src/app/masterdata-management/components/user/user.component.spec.ts
@@ -7,8 +7,7 @@
*
* SPDX-License-Identifier: EPL-2.0
********************************************************************************/
-import { async, ComponentFixture, TestBed, inject } from '@angular/core/testing';
-import { FormControl, Validators, FormGroup } from '@angular/forms';
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { RouterTestingModule } from '@angular/router/testing';
import { of } from 'rxjs';
import { ActivatedRoute, Routes, Router } from '@angular/router';
@@ -117,8 +116,10 @@
component.form.patchValue({
firstname: 'test',
lastname: 'test',
- validFrom: { day: 1, month: 1, year: 2018 },
- validTo: { day: 1, month: 1, year: 2018 }
+ date: {
+ validFrom: { day: 1, month: 1, year: 2018 },
+ validTo: { day: 1, month: 1, year: 2018 }
+ }
});
expect(component.saveUser()).toBeTruthy();
});
@@ -128,8 +129,10 @@
component.form.patchValue({
firstname: 'test',
lastname: 'test',
- validFrom: { day: 1, month: 1, year: 2018 },
- validTo: { day: 1, month: 1, year: 2018 }
+ date: {
+ validFrom: { day: 1, month: 1, year: 2018 },
+ validTo: { day: 1, month: 1, year: 2018 }
+ }
});
component.isModal = true;
component.saveUser();
@@ -157,7 +160,7 @@
it('should set validFrom to current day', () => {
const date = new Date();
component.setDefaultDate('validFrom');
- expect(component.form.controls.validFrom.value).toEqual({
+ expect(component.form.get('validFrom').value).toEqual({
day: date.getDate(), month: date.getMonth() + 1, year: date.getFullYear()
});
});
@@ -165,7 +168,7 @@
it('should set validTo to current day + 15 years', () => {
const date = new Date();
component.setDefaultDate('validTo');
- expect(component.form.controls.validTo.value).toEqual({
+ expect(component.form.get('validTo').value).toEqual({
day: date.getDate(), month: date.getMonth() + 1, year: date.getFullYear() + 15
});
});
diff --git a/src/app/masterdata-management/components/user/user.component.ts b/src/app/masterdata-management/components/user/user.component.ts
index efdacba..7ff43d6 100644
--- a/src/app/masterdata-management/components/user/user.component.ts
+++ b/src/app/masterdata-management/components/user/user.component.ts
@@ -89,8 +89,10 @@
if (this.instanceId) {
this.user$ = this.masterDataService.getUser(this.instanceId).subscribe(
data => {
- data.validFrom = this.ngbDateParserFormatter.parse(data.validFrom);
- data.validTo = this.ngbDateParserFormatter.parse(data.validTo);
+ data.date = {
+ validFrom: this.ngbDateParserFormatter.parse(data.validFrom),
+ validTo: this.ngbDateParserFormatter.parse(data.validTo)
+ };
this.form.patchValue(data);
this.targetRegion = data.lsUserInRegions;
this.targetFunction = data.lsUserFunctions;
@@ -148,8 +150,10 @@
businessContactData: this.createBusinessContact(),
privateContactData: this.createPrivateContact(),
privateAddress: this.createAddress(),
- validFrom: ['', Validators.required],
- validTo: ['', [Validators.required, DatepickerValidator.dateRangeTo('validFrom')]],
+ date: this.fb.group({
+ validFrom: ['', Validators.required],
+ validTo: ['', Validators.required],
+ }, { validator: [DatepickerValidator.dateRangeTo('')] }),
modificationDate: '',
notes: '',
hrNumber: '',
@@ -163,8 +167,10 @@
firstname: ['', Validators.required],
lastname: ['', Validators.required],
isCompany: false,
- validFrom: ['', Validators.required],
- validTo: ['', [Validators.required, DatepickerValidator.dateRangeTo('validFrom')]],
+ date: this.fb.group({
+ validFrom: ['', Validators.required],
+ validTo: ['', [Validators.required, DatepickerValidator.dateRangeTo('validFrom')]],
+ }, { validator: [DatepickerValidator.dateRangeTo('')] }),
notes: '',
hrNumber: '',
userKey: ''
diff --git a/src/app/masterdata-management/selection-dialogs/validity-dialog/validity-dialog.component.html b/src/app/masterdata-management/selection-dialogs/validity-dialog/validity-dialog.component.html
index 33b4f91..f871e4d 100644
--- a/src/app/masterdata-management/selection-dialogs/validity-dialog/validity-dialog.component.html
+++ b/src/app/masterdata-management/selection-dialogs/validity-dialog/validity-dialog.component.html
@@ -17,7 +17,7 @@
</div>
<div class="modal-body">
<form class="mt-3" [formGroup]="form" novalidate>
- <div class="row">
+ <div class="row" formGroupName="date">
<label class="form-check-label col-form-label col-md-3">
Gültigkeit
</label>
@@ -37,8 +37,9 @@
<i class="fa fa-clock-o" aria-hidden="true"></i>
</button>
</div>
+ <ok-error [control]="form.controls['date'].controls['validFrom']" class="w-100"></ok-error>
</div>
- <ok-error [control]="form.controls['validTo']"></ok-error>
+ <ok-error [control]="form.controls['date']"></ok-error>
</div>
</div>
<div class="col-md-4">
@@ -57,6 +58,7 @@
<i class="fa fa-clock-o" aria-hidden="true"></i>
</button>
</div>
+ <ok-error [control]="form.controls['date'].controls['validTo']" class="w-100"></ok-error>
</div>
</div>
</div>
diff --git a/src/app/masterdata-management/selection-dialogs/validity-dialog/validity-dialog.component.spec.ts b/src/app/masterdata-management/selection-dialogs/validity-dialog/validity-dialog.component.spec.ts
index 3f54f69..fb27778 100644
--- a/src/app/masterdata-management/selection-dialogs/validity-dialog/validity-dialog.component.spec.ts
+++ b/src/app/masterdata-management/selection-dialogs/validity-dialog/validity-dialog.component.spec.ts
@@ -44,7 +44,12 @@
describe('decide()', () => {
it('should prepare the data and call decide', () => {
- component.form.patchValue({ validFrom: { day: 1, month: 1, year: 2018 }, validTo: { day: 1, month: 1, year: 2018 } });
+ component.form.patchValue({
+ date: {
+ validFrom: { day: 1, month: 1, year: 2018 },
+ validTo: { day: 1, month: 1, year: 2018 }
+ }
+ });
component.decide(true);
});
it('should validate form fields if decision is true and form fields are invalid', () => {
@@ -57,7 +62,7 @@
it('should set validFrom to current day', () => {
const date = new Date();
component.setDefaultDate('validFrom');
- expect(component.form.controls.validFrom.value).toEqual({
+ expect(component.form.get('validFrom').value).toEqual({
day: date.getDate(), month: date.getMonth() + 1, year: date.getFullYear()
});
});
@@ -65,7 +70,7 @@
it('should set validTo to current day + 15 years', () => {
const date = new Date();
component.setDefaultDate('validTo');
- expect(component.form.controls.validTo.value).toEqual({
+ expect(component.form.get('validTo').value).toEqual({
day: date.getDate(), month: date.getMonth() + 1, year: date.getFullYear() + 15
});
});
diff --git a/src/app/masterdata-management/selection-dialogs/validity-dialog/validity-dialog.component.ts b/src/app/masterdata-management/selection-dialogs/validity-dialog/validity-dialog.component.ts
index b6a1652..31824c1 100644
--- a/src/app/masterdata-management/selection-dialogs/validity-dialog/validity-dialog.component.ts
+++ b/src/app/masterdata-management/selection-dialogs/validity-dialog/validity-dialog.component.ts
@@ -26,8 +26,10 @@
saveButtonLabel = 'Verschieben';
form: FormGroup = this.fb.group({
- validFrom: ['', Validators.required],
- validTo: ['', [Validators.required, DatepickerValidator.dateRangeTo('validFrom')]],
+ date: this.fb.group({
+ validFrom: ['', Validators.required],
+ validTo: ['', [Validators.required]],
+ }, { validator: [DatepickerValidator.dateRangeTo('')] }),
position: ''
});
constructor(
diff --git a/src/app/reporting/components/dashboard/dashboard.component.html b/src/app/reporting/components/dashboard/dashboard.component.html
index 5defa66..d7c9c12 100644
--- a/src/app/reporting/components/dashboard/dashboard.component.html
+++ b/src/app/reporting/components/dashboard/dashboard.component.html
@@ -33,7 +33,7 @@
<label class="form-check-label col-form-label col-md-3">
Abfragezeit
</label>
- <div class="input-group col-md-5">
+ <div class="input-group col-md-5" formGroupName="date">
<input class="form-control" placeholder="von" name="dp" ngbDatepicker #dateIndex="ngbDatepicker"
formControlName="dateIndex" required id="validityDateFromInput">
<div class="input-group-append">
@@ -47,12 +47,12 @@
<i class="fa fa-clock-o" aria-hidden="true"></i>
</button>
</div>
+ <ok-error [control]="form.controls['date'].controls['dateIndex']" class="w-100"></ok-error>
</div>
<div class="col-md-3">
<ngb-timepicker formControlName="timeIndex" id="moveTimePickerFrom"></ngb-timepicker>
<ok-error [control]="form.controls['timeIndex']"></ok-error>
</div>
- <ok-error [control]="form.controls['validTo']"></ok-error>
</div>
</div>
<div class="col-md-12 col-sm-12 col-xl-6">
@@ -123,8 +123,8 @@
<ng-container *ngFor="let row of rowData">
<tr>
<td><button class="btn btn-primary btn-sm" (click)="row.isCollapsed = !row.isCollapsed" title="Details anzeigen">
- <i class="fa fa-eye" aria-hidden="true"></i>
- </button></td>
+ <i class="fa fa-eye" aria-hidden="true"></i>
+ </button></td>
<td scope="row">{{row.standbyGroup?.title}}</td>
<td scope="row">{{row.user?.organisation?.orgaName}}</td>
<td scope="row">{{row.user?.firstname}}</td>
diff --git a/src/app/reporting/components/dashboard/dashboard.component.ts b/src/app/reporting/components/dashboard/dashboard.component.ts
index 7b20ee5..c134888 100644
--- a/src/app/reporting/components/dashboard/dashboard.component.ts
+++ b/src/app/reporting/components/dashboard/dashboard.component.ts
@@ -57,7 +57,9 @@
createForm() {
let now = new Date();
this.form = this.fb.group({
- dateIndex: ['', Validators.required],
+ date: this.fb.group({
+ dateIndex: ['', Validators.required],
+ }),
timeIndex: {
hour: now.getHours(),
minute: now.getMinutes(),
diff --git a/src/app/reporting/components/standby-reporting/standby-reporting.component.html b/src/app/reporting/components/standby-reporting/standby-reporting.component.html
index 1b237ce..572eea6 100644
--- a/src/app/reporting/components/standby-reporting/standby-reporting.component.html
+++ b/src/app/reporting/components/standby-reporting/standby-reporting.component.html
@@ -68,7 +68,7 @@
</div>
<div class="row">
<div class="col-md-12 col-sm-12 col-xl-6">
- <div class="row">
+ <div class="row" formGroupName="date">
<label class="form-check-label col-form-label col-md-3">
Gültigkeit
</label>
@@ -88,8 +88,9 @@
<i class="fa fa-clock-o" aria-hidden="true"></i>
</button>
</div>
+ <ok-error [control]="form.controls['date'].controls['validFrom']" class="w-100"></ok-error>
</div>
- <ok-error [control]="form.controls['validFrom']"></ok-error>
+ <ok-error [control]="form.controls['date']"></ok-error>
</div>
</div>
<div class="col-sm-1">
@@ -111,8 +112,8 @@
<i class="fa fa-clock-o" aria-hidden="true"></i>
</button>
</div>
+ <ok-error [control]="form.controls['date'].controls['validTo']" class="w-100"></ok-error>
</div>
- <ok-error [control]="form.controls['validTo']"></ok-error>
</div>
</div>
</div>
diff --git a/src/app/reporting/components/standby-reporting/standby-reporting.component.spec.ts b/src/app/reporting/components/standby-reporting/standby-reporting.component.spec.ts
index 17f71de..3395160 100644
--- a/src/app/reporting/components/standby-reporting/standby-reporting.component.spec.ts
+++ b/src/app/reporting/components/standby-reporting/standby-reporting.component.spec.ts
@@ -92,7 +92,7 @@
it('should set validFrom to current day', () => {
const date = new Date();
component.setDefaultDate('validFrom');
- expect(component.form.controls.validFrom.value).toEqual({
+ expect(component.form.get('validFrom').value).toEqual({
day: date.getDate(), month: date.getMonth() + 1, year: date.getFullYear()
});
});
@@ -100,7 +100,7 @@
it('should set validTo to current day + 15 years', () => {
const date = new Date();
component.setDefaultDate('validTo');
- expect(component.form.controls.validTo.value).toEqual({
+ expect(component.form.get('validTo').value).toEqual({
day: date.getDate(), month: date.getMonth() + 1, year: date.getFullYear() + 15
});
});
diff --git a/src/app/reporting/components/standby-reporting/standby-reporting.component.ts b/src/app/reporting/components/standby-reporting/standby-reporting.component.ts
index 4a625eb..2d52a5b 100644
--- a/src/app/reporting/components/standby-reporting/standby-reporting.component.ts
+++ b/src/app/reporting/components/standby-reporting/standby-reporting.component.ts
@@ -97,8 +97,10 @@
this.form = this.fb.group({
standById: ['', Validators.required],
reportName: ['', Validators.required],
- validFrom: ['', [Validators.required]],
- validTo: ['', [Validators.required, DatepickerValidator.dateRangeTo('validFrom')]],
+ date: this.fb.group({
+ validFrom: ['', Validators.required],
+ validTo: ['', Validators.required],
+ }, { validator: [DatepickerValidator.dateRangeTo('')] }),
printFormat: ['', Validators.required],
reportLevel: ['Ist-Ebene', Validators.required],
statusId: 1
@@ -123,11 +125,11 @@
if (clicked) {
const days = 7;
- const validFromDate: Date = new Date(formValue.validFrom.year, formValue.validFrom.month - 1, formValue.validFrom.day);
+ const validFromDate: Date = new Date(formValue.date.validFrom.year, formValue.date.validFrom.month - 1, formValue.date.validFrom.day);
FormUtil.setDefaultReportDate(this.form, 'validTo', days, validFromDate);
} else {
const days = 1;
- const validFromDate: Date = new Date(formValue.validFrom.year, formValue.validFrom.month - 1, formValue.validFrom.day);
+ const validFromDate: Date = new Date(formValue.date.validFrom.year, formValue.date.validFrom.month - 1, formValue.date.validFrom.day);
FormUtil.setDefaultReportDate(this.form, 'validTo', days, validFromDate);
}
}
diff --git a/src/app/shared/model/ArchiveObject.ts b/src/app/shared/model/ArchiveObject.ts
index b3cecfd..e0f4485 100644
--- a/src/app/shared/model/ArchiveObject.ts
+++ b/src/app/shared/model/ArchiveObject.ts
@@ -16,6 +16,10 @@
modifiedCause: string;
title: string;
jsonPlan: string;
+ date?: {
+ validFrom: any;
+ validTo: any;
+ };
validFrom: any;
validTo: any;
}
diff --git a/src/app/shared/model/UserObject.ts b/src/app/shared/model/UserObject.ts
index 9d1c69a..e648727 100644
--- a/src/app/shared/model/UserObject.ts
+++ b/src/app/shared/model/UserObject.ts
@@ -42,6 +42,10 @@
};
lsUserInRegions: Array<RegionObject>;
lsUserFunctions: Array<FunctionObject>;
+ date?: {
+ validFrom: any;
+ validTo: any;
+ };
validFrom: any; // has to be any since the datepicker uses a different format than the rest service
validTo: any; // has to be any since the datepicker uses a different format than the rest service
modificationDate: string;
diff --git a/src/app/shared/utils/form.util.ts b/src/app/shared/utils/form.util.ts
index fb00ec8..fe527b6 100644
--- a/src/app/shared/utils/form.util.ts
+++ b/src/app/shared/utils/form.util.ts
@@ -65,7 +65,10 @@
if (field === 'validTo') {
date.setFullYear(date.getFullYear() + 15);
}
- form.get(field).setValue(ngbDateFormatter.parse(datePipe.transform(date, 'yyyy-MM-dd')));
+ console.log(form);
+ console.log(field);
+ console.log(form.get('date').get(field));
+ form.get('date').get(field).setValue(ngbDateFormatter.parse(datePipe.transform(date, 'yyyy-MM-dd')));
}
static setDefaultReportDate(form: FormGroup, field: string, days: number, date: Date) {
@@ -73,7 +76,7 @@
const datePipe = new DatePipe('en-US');
const ngbDateFormatter = new NgbDateStringParserFormatter();
- form.get(field).setValue(ngbDateFormatter.parse(datePipe.transform(incrementedDate, 'yyyy-MM-dd')));
+ form.get('date').get(field).setValue(ngbDateFormatter.parse(datePipe.transform(incrementedDate, 'yyyy-MM-dd')));
}
static addDays(days: number, dateToIncrement: Date): Date {
@@ -85,8 +88,10 @@
static setInitialDate(form: FormGroup) {
const date = new Date();
form.patchValue({
- validFrom: { day: 1, month: 1, year: date.getFullYear() + 1 },
- validTo: { day: 31, month: 12, year: date.getFullYear() + 1 }
+ date: {
+ validFrom: { day: 1, month: 1, year: date.getFullYear() + 1 },
+ validTo: { day: 31, month: 12, year: date.getFullYear() + 1 }
+ }
});
}
@@ -94,7 +99,7 @@
const date = new Date();
const patchObj = {};
patchObj[field] = { day: 31, month: 12, year: date.getFullYear() + 1 };
- form.patchValue(patchObj);
+ form.get('date').patchValue(patchObj);
}
static convertToNgbTime(dateString: string): NgbTimeStruct {
@@ -110,13 +115,14 @@
static formatDates(obj: Object, properties: Array<any>): void {
for (let i = 0; i < properties.length; i++) {
- if (obj.hasOwnProperty(properties[i])) {
- const date: NgbDateStruct = obj[properties[i]];
- if (date.year && date.month && date.day) {
+ if (obj['date'].hasOwnProperty(properties[i])) {
+ const date: NgbDateStruct = obj['date'][properties[i]];
+ if (date && date.year && date.month && date.day) {
obj[properties[i]] = `${date.year}-${date.month}-${date.day}`;
}
}
}
+ delete obj['date'];
}
static dateToISOString(date: Date) {
diff --git a/src/app/shared/validators/datepicker.validator.ts b/src/app/shared/validators/datepicker.validator.ts
index 1b52166..0dd8bde 100644
--- a/src/app/shared/validators/datepicker.validator.ts
+++ b/src/app/shared/validators/datepicker.validator.ts
@@ -7,16 +7,14 @@
*
* SPDX-License-Identifier: EPL-2.0
********************************************************************************/
-import { ValidatorFn, AbstractControl } from '@angular/forms';
+import { ValidatorFn, AbstractControl, FormGroup } from '@angular/forms';
export class DatepickerValidator {
- static dateRangeTo(otherControlName: string): ValidatorFn {
- return (validTo: AbstractControl): { [key: string]: boolean } | null => {
- const validFrom: AbstractControl = validTo.root.get(otherControlName);
+ static dateRangeTo(test: string): ValidatorFn {
+ return (form: FormGroup): { [key: string]: boolean } | null => {
+ const validFrom: AbstractControl = form.get('validFrom');
+ const validTo: AbstractControl = form.get('validTo');
if (validFrom && validFrom.value && validTo.value) {
- validFrom.valueChanges.subscribe(() => {
- validTo.updateValueAndValidity({ onlySelf: true });
- });
const validFromValue = validFrom.value;
const validFromDateObj = new Date(validFromValue.year, validFromValue.month - 1, validFromValue.day, 0, 0, 0, 0);
const validToValue = validTo.value;
diff --git a/src/app/standby-schedule/components/archive/archive.component.html b/src/app/standby-schedule/components/archive/archive.component.html
index 56e1c20..2448f97 100644
--- a/src/app/standby-schedule/components/archive/archive.component.html
+++ b/src/app/standby-schedule/components/archive/archive.component.html
@@ -48,7 +48,7 @@
</div>
<div class="row">
<div class="col-md-6">
- <div class="row">
+ <div class="row" formGroupName="date">
<label class="form-check-label col-form-label col-md-3">
Zeitraum
</label>
diff --git a/src/app/standby-schedule/components/archive/archive.component.ts b/src/app/standby-schedule/components/archive/archive.component.ts
index a327a40..6bbeb03 100644
--- a/src/app/standby-schedule/components/archive/archive.component.ts
+++ b/src/app/standby-schedule/components/archive/archive.component.ts
@@ -46,8 +46,10 @@
data => {
this.plan = JSON.parse(data.jsonPlan);
data.modificationDate = this.ngbDateParserFormatter.parse(data.modificationDate);
- data.validFrom = this.ngbDateParserFormatter.parse(data.validFrom);
- data.validTo = this.ngbDateParserFormatter.parse(data.validTo);
+ data.date = {
+ validFrom: this.ngbDateParserFormatter.parse(data.validFrom),
+ validTo: this.ngbDateParserFormatter.parse(data.validTo)
+ };
this.form.patchValue(data);
}
);
@@ -64,8 +66,10 @@
modificationDate: { value: '', disabled: true },
modifiedBy: { value: '', disabled: true },
modifiedCause: { value: '', disabled: true },
- validFrom: { value: '', disabled: true },
- validTo: { value: '', disabled: true }
+ date: this.fb.group({
+ validFrom: { value: '', disabled: true },
+ validTo: { value: '', disabled: true }
+ })
});
}
diff --git a/src/app/standby-schedule/components/archivelist/archivelist.component.html b/src/app/standby-schedule/components/archivelist/archivelist.component.html
index a08e3d0..202f66d 100644
--- a/src/app/standby-schedule/components/archivelist/archivelist.component.html
+++ b/src/app/standby-schedule/components/archivelist/archivelist.component.html
@@ -32,7 +32,7 @@
</label>
<div class="col-md-4">
<div class="form-group">
- <div class="input-group">
+ <div class="input-group" formGroupName="date">
<input class="form-control" placeholder="von" name="dp" ngbDatepicker #dateIndex="ngbDatepicker"
formControlName="dateIndex" id="dateFromInput" required>
<div class="input-group-append">
diff --git a/src/app/standby-schedule/components/archivelist/archivelist.component.spec.ts b/src/app/standby-schedule/components/archivelist/archivelist.component.spec.ts
index 9291828..f86669d 100644
--- a/src/app/standby-schedule/components/archivelist/archivelist.component.spec.ts
+++ b/src/app/standby-schedule/components/archivelist/archivelist.component.spec.ts
@@ -73,18 +73,27 @@
describe('search()', () => {
it('should search if form is valid', () => {
- component.form.patchValue({ dateIndex: '2018-01-01' });
+ component.form.patchValue({
+ date: { dateIndex: '2018-01-01' }
+ });
component.search();
});
it('shouldn´t search if form is invalid', () => {
- component.form.patchValue({ dateIndex: '', city: '' });
+ component.form.patchValue({
+ date: { dateIndex: '' },
+ city: ''
+ });
component.search();
});
});
describe('clear()', () => {
it('should clear the form', () => {
- component.form.patchValue({ dateIndex: '2018-01-01' });
+ component.form.patchValue({
+ date: {
+ dateIndex: '2018-01-01'
+ }
+ });
component.clear();
expect(component.form.getRawValue().dateIndex).toBe(null);
});
diff --git a/src/app/standby-schedule/components/archivelist/archivelist.component.ts b/src/app/standby-schedule/components/archivelist/archivelist.component.ts
index d085ccc..24b34be 100644
--- a/src/app/standby-schedule/components/archivelist/archivelist.component.ts
+++ b/src/app/standby-schedule/components/archivelist/archivelist.component.ts
@@ -70,7 +70,9 @@
createForm() {
this.form = this.fb.group({
- dateIndex: ['', Validators.required]
+ date: this.fb.group({
+ dateIndex: ['', Validators.required]
+ })
});
}
diff --git a/src/app/standby-schedule/components/planninglist/planninglist.component.html b/src/app/standby-schedule/components/planninglist/planninglist.component.html
index 892c083..256e30b 100644
--- a/src/app/standby-schedule/components/planninglist/planninglist.component.html
+++ b/src/app/standby-schedule/components/planninglist/planninglist.component.html
@@ -40,7 +40,7 @@
</div>
<div class="row">
<div class="col-md-12 col-sm-12 col-xl-8">
- <div class="row">
+ <div class="row" formGroupName="date">
<label class="form-check-label col-form-label col-md-3">
Gültigkeit
</label>
@@ -60,8 +60,9 @@
<i class="fa fa-clock-o" aria-hidden="true"></i>
</button>
</div>
+ <ok-error [control]="form.controls['date'].controls['validFrom']" class="w-100"></ok-error>
</div>
- <ok-error [control]="form.controls['validTo']"></ok-error>
+ <ok-error [control]="form.controls['date']"></ok-error>
</div>
</div>
<div class="col-md-3">
@@ -80,6 +81,7 @@
<i class="fa fa-clock-o" aria-hidden="true"></i>
</button>
</div>
+ <ok-error [control]="form.controls['date'].controls['validTo']" class="w-100"></ok-error>
</div>
</div>
</div>
@@ -87,7 +89,8 @@
<div class="btn-group mr-3 w-99">
<button type="button" class="btn btn-primary w-99" (click)="prepareDataAndCall('search')" id="btnSearch">Suchen</button>
<div class="btn-group" ngbDropdown placement="bottom-right" role="group" aria-label="Button group with nested dropdown">
- <button class="btn btn-primary dropdown-toggle-split border-left" id="splitButton" ngbDropdownToggle></button>
+ <button class="btn btn-primary dropdown-toggle-split border-left" id="splitButton"
+ ngbDropdownToggle></button>
<div class="dropdown-menu dropdown-menu-right" ngbDropdownMenu>
<button *ngIf="authService.userHasRoles(['BP_Sachbearbeiter','BP_Admin'])" class="dropdown-item pointer"
routerLink="/planung/transfer" id="btnPlan">Ansicht Pläne transferieren</button>
@@ -117,7 +120,8 @@
<i class="fa fa-calculator" aria-hidden="true"></i>
</button>
<a class="btn btn-xs ml-1 btn-primary" target="_blank" *ngIf="authService.userHasRoles(['BP_Sachbearbeiter', 'BP_Admin'])"
- [routerLink]="['/stammdatenverwaltung/bereitschaftsgruppe', group.id]" [id]="['btnEditGroup' + group.id]" title="Bereitschaftsgruppe bearbeiten">
+ [routerLink]="['/stammdatenverwaltung/bereitschaftsgruppe', group.id]" [id]="['btnEditGroup' + group.id]"
+ title="Bereitschaftsgruppe bearbeiten">
<i class="fa fa-pencil" aria-hidden="true"></i>
</a>
<button class="btn btn-xs ml-1 btn-primary" (click)="validatePlan(group.id)" [id]="['btnValidate' + group.id]"
diff --git a/src/app/standby-schedule/components/planninglist/planninglist.component.spec.ts b/src/app/standby-schedule/components/planninglist/planninglist.component.spec.ts
index d731726..ba0e28c 100644
--- a/src/app/standby-schedule/components/planninglist/planninglist.component.spec.ts
+++ b/src/app/standby-schedule/components/planninglist/planninglist.component.spec.ts
@@ -118,8 +118,10 @@
it('should open a modal and start calculation if the action is "calculate"', () => {
component.form.patchValue({
standbyListId: 1,
- validFrom: { day: 1, month: 10, year: 2018 },
- validTo: { day: 2, month: 10, year: 2018 },
+ date: {
+ validFrom: { day: 1, month: 10, year: 2018 },
+ validTo: { day: 2, month: 10, year: 2018 },
+ },
statusId: 1
});
component.openCalculationModal(1);
@@ -128,8 +130,10 @@
it('shouldn´t start a calculation if the action is not "calculate"', () => {
component.form.patchValue({
standbyListId: 1,
- validFrom: { day: 1, month: 10, year: 2018 },
- validTo: { day: 2, month: 10, year: 2018 },
+ date: {
+ validFrom: { day: 1, month: 10, year: 2018 },
+ validTo: { day: 2, month: 10, year: 2018 },
+ },
statusId: 1
});
component.openCalculationModal(1);
@@ -140,8 +144,10 @@
it('should search for bodies', () => {
component.form.patchValue({
standbyListId: 1,
- validFrom: { day: 1, month: 10, year: 2018 },
- validTo: { day: 2, month: 10, year: 2018 }
+ date: {
+ validFrom: { day: 1, month: 10, year: 2018 },
+ validTo: { day: 2, month: 10, year: 2018 }
+ }
});
component.prepareDataAndCall('search');
});
@@ -149,8 +155,10 @@
it('shouldn´t search for bodies as form is invalid', () => {
component.form.patchValue({
standbyListId: 1,
- validFrom: '',
- validTo: ''
+ date: {
+ validFrom: '',
+ validTo: ''
+ }
});
component.prepareDataAndCall('search');
});
@@ -160,8 +168,10 @@
it('should archive bodies', () => {
component.form.patchValue({
standbyListId: 1,
- validFrom: { day: 1, month: 10, year: 2018 },
- validTo: { day: 2, month: 10, year: 2018 }
+ date: {
+ validFrom: { day: 1, month: 10, year: 2018 },
+ validTo: { day: 2, month: 10, year: 2018 }
+ }
});
component.prepareDataAndCall('archive');
});
@@ -169,8 +179,10 @@
it('shouldn´t archive bodies as form is invalid', () => {
component.form.patchValue({
standbyListId: 1,
- validFrom: '',
- validTo: '',
+ date: {
+ validFrom: '',
+ validTo: '',
+ },
statusId: 1
});
component.prepareDataAndCall('archive');
@@ -185,8 +197,10 @@
it('should open archive modal and archive plan if decision is true and data is returned', () => {
component.form.patchValue({
standbyListId: 1,
- validFrom: { day: 1, month: 10, year: 2018 },
- validTo: { day: 2, month: 10, year: 2018 }
+ date: {
+ validFrom: { day: 1, month: 10, year: 2018 },
+ validTo: { day: 2, month: 10, year: 2018 }
+ }
});
component.prepareDataAndCall('archive');
component.archiveModalRef.componentInstance.decision.next({ title: 'test', comment: 'test' });
@@ -195,8 +209,10 @@
it('should close the modal without any rest call if the data is undefined', () => {
component.form.patchValue({
standbyListId: 1,
- validFrom: { day: 1, month: 10, year: 2018 },
- validTo: { day: 2, month: 10, year: 2018 }
+ date: {
+ validFrom: { day: 1, month: 10, year: 2018 },
+ validTo: { day: 2, month: 10, year: 2018 }
+ }
});
component.prepareDataAndCall('archive');
component.archiveModalRef.componentInstance.decision.next(undefined);
@@ -273,7 +289,7 @@
it('should set validFrom to current day', () => {
const date = new Date();
component.setDefaultDate('validFrom');
- expect(component.form.controls.validFrom.value).toEqual({
+ expect(component.form.get('date').get('validFrom').value).toEqual({
day: date.getDate(), month: date.getMonth() + 1, year: date.getFullYear()
});
});
@@ -281,7 +297,7 @@
it('should set validTo to current day + 15 years', () => {
const date = new Date();
component.setDefaultDate('validTo');
- expect(component.form.controls.validTo.value).toEqual({
+ expect(component.form.get('date').get('validTo').value).toEqual({
day: date.getDate(), month: date.getMonth() + 1, year: date.getFullYear() + 15
});
});
@@ -291,8 +307,10 @@
it('should validate whole plan with all the groups in a standbylist', () => {
component.form.patchValue({
standbyListId: 1,
- validFrom: { day: 1, month: 10, year: 2018 },
- validTo: { day: 2, month: 10, year: 2018 }
+ date: {
+ validFrom: { day: 1, month: 10, year: 2018 },
+ validTo: { day: 2, month: 10, year: 2018 }
+ }
});
component.validatePlan(undefined);
});
@@ -300,8 +318,10 @@
it('should validate the given group', () => {
component.form.patchValue({
standbyListId: '',
- validFrom: { day: 1, month: 10, year: 2018 },
- validTo: { day: 2, month: 10, year: 2018 }
+ date: {
+ validFrom: { day: 1, month: 10, year: 2018 },
+ validTo: { day: 2, month: 10, year: 2018 }
+ }
});
component.validatePlan(1);
});
@@ -311,8 +331,10 @@
it('should import into planning', () => {
component.form.patchValue({
standbyListId: 1,
- validFrom: { day: 1, month: 10, year: 2018 },
- validTo: { day: 2, month: 10, year: 2018 }
+ date: {
+ validFrom: { day: 1, month: 10, year: 2018 },
+ validTo: { day: 2, month: 10, year: 2018 }
+ }
});
component.deletePlan();
component.deleteModalWarningRef.componentInstance.decision.next(true);
@@ -322,8 +344,10 @@
it('shouldn´t import into planning', () => {
component.form.patchValue({
standbyListId: 1,
- validFrom: { day: 1, month: 10, year: 2018 },
- validTo: { day: 2, month: 10, year: 2018 }
+ date: {
+ validFrom: { day: 1, month: 10, year: 2018 },
+ validTo: { day: 2, month: 10, year: 2018 }
+ }
});
component.deletePlan();
component.deleteModalWarningRef.componentInstance.decision.next(false);
@@ -333,8 +357,10 @@
it('should return false on validating the form', () => {
component.form.patchValue({
standbyListId: '',
- validFrom: { day: 1, month: 10, year: 2018 },
- validTo: { day: 2, month: 10, year: 2018 }
+ date: {
+ validFrom: { day: 1, month: 10, year: 2018 },
+ validTo: { day: 2, month: 10, year: 2018 }
+ }
});
component.deletePlan();
});
diff --git a/src/app/standby-schedule/components/planninglist/planninglist.component.ts b/src/app/standby-schedule/components/planninglist/planninglist.component.ts
index 3b9c7e5..99fd249 100644
--- a/src/app/standby-schedule/components/planninglist/planninglist.component.ts
+++ b/src/app/standby-schedule/components/planninglist/planninglist.component.ts
@@ -117,8 +117,11 @@
createForm() {
this.form = this.fb.group({
standbyListId: ['', Validators.required],
- validFrom: ['', [Validators.required]],
- validTo: ['', [Validators.required, DatepickerValidator.dateRangeTo('validFrom')]]
+ date: this.fb.group({
+ validFrom: ['', [Validators.required]],
+ validTo: ['', [Validators.required]]
+ }, { validator: [DatepickerValidator.dateRangeTo('')] }
+ )
});
}
@@ -173,8 +176,8 @@
this.modalCalculationRef.componentInstance.form.patchValue({
standbyListId: currentForm.standbyListId,
standbyGroupId: standbyGroupId,
- validFrom: currentForm.validFrom,
- validTo: currentForm.validTo
+ validFrom: currentForm.date.validFrom,
+ validTo: currentForm.date.validTo
});
const modalAction: Subscription = this.modalCalculationRef.componentInstance.modalAction.subscribe((res: ModalTransferObject) => {
if (res.action === 'calculate') {
@@ -243,8 +246,10 @@
statusId: this.planStatusId,
standbyGroupId: this.currentStandby.standbyGroup.id,
currentUserId: this.currentStandby.user.id,
- validFrom: this.ngbDateParserFormatter.parse(this.currentStandby.validFrom),
- validTo: this.ngbDateParserFormatter.parse(this.currentStandby.validTo),
+ date: {
+ validFrom: this.ngbDateParserFormatter.parse(this.currentStandby.validFrom),
+ validTo: this.ngbDateParserFormatter.parse(this.currentStandby.validTo)
+ },
validFromTime: FormUtil.convertToNgbTime(this.currentStandby.validFrom),
validToTime: FormUtil.convertToNgbTime(this.currentStandby.validTo)
});
@@ -271,8 +276,10 @@
scheduleBodyId: this.currentStandby.id,
newUserId: this.currentStandby.user.id,
statusId: this.planStatusId,
- validFrom: this.ngbDateParserFormatter.parse(this.currentStandby.validFrom),
- validTo: this.ngbDateParserFormatter.parse(this.currentStandby.validTo),
+ date: {
+ validFrom: this.ngbDateParserFormatter.parse(this.currentStandby.validFrom),
+ validTo: this.ngbDateParserFormatter.parse(this.currentStandby.validTo)
+ },
validFromTime: FormUtil.convertToNgbTime(this.currentStandby.validFrom),
validToTime: FormUtil.convertToNgbTime(this.currentStandby.validTo)
});
diff --git a/src/app/standby-schedule/dialogs/calculate-dialog/calculate-dialog.component.html b/src/app/standby-schedule/dialogs/calculate-dialog/calculate-dialog.component.html
index 31244d8..b8e49fa 100644
--- a/src/app/standby-schedule/dialogs/calculate-dialog/calculate-dialog.component.html
+++ b/src/app/standby-schedule/dialogs/calculate-dialog/calculate-dialog.component.html
@@ -20,7 +20,8 @@
<div class="col-sm-9">
<select class="form-control" id="startIdOfUser" formControlName="startIdOfUser" required>
<option value=""></option>
- <option *ngFor="let user of listOfStandbyUsers" [value]="user.id">{{user.firstname + ' ' + user.lastname}}</option>
+ <option *ngFor="let user of listOfStandbyUsers" [value]="user.id">{{user.firstname + ' ' +
+ user.lastname}}</option>
</select>
<ok-error [control]="form.controls['startIdOfUser']"></ok-error>
</div>
@@ -29,15 +30,15 @@
</div>
<div class="row">
<div class="col-md-12 col-sm-12 col-xl-12">
- <div class="row">
+ <div class="row" formGroupName="date">
<label class="form-check-label col-form-label col-md-3">
Gültigkeit
</label>
<div class="col-md-4">
<div class="form-group">
<div class="input-group">
- <input class="form-control" placeholder="von" name="dp" ngbDatepicker #validFrom="ngbDatepicker" formControlName="validFrom"
- required id="CalcDateFromInput">
+ <input class="form-control" placeholder="von" name="dp" ngbDatepicker #validFrom="ngbDatepicker"
+ formControlName="validFrom" required id="CalcDateFromInput">
<div class="input-group-append">
<button class="btn btn-outline-secondary" (click)="validFrom.toggle()" type="button" id="CalcDateFromPicker">
<i class="fa fa-calendar" aria-hidden="true"></i>
@@ -49,15 +50,16 @@
<i class="fa fa-clock-o" aria-hidden="true"></i>
</button>
</div>
+ <ok-error [control]="form.controls['date'].controls['validFrom']" class="w-100"></ok-error>
</div>
- <ok-error [control]="form.controls['validTo']"></ok-error>
+ <ok-error [control]="form.controls['date']"></ok-error>
</div>
</div>
<div class="col-md-4">
<div class="form-group">
<div class="input-group">
- <input class="form-control" placeholder="bis" name="dp" ngbDatepicker #validTo="ngbDatepicker" formControlName="validTo"
- required id="CalcDateToInput">
+ <input class="form-control" placeholder="bis" name="dp" ngbDatepicker #validTo="ngbDatepicker"
+ formControlName="validTo" required id="CalcDateToInput">
<div class="input-group-append">
<button class="btn btn-outline-secondary" (click)="validTo.toggle()" type="button" id="CalcDateToPicker">
<i class="fa fa-calendar" aria-hidden="true"></i>
@@ -69,6 +71,7 @@
<i class="fa fa-clock-o" aria-hidden="true"></i>
</button>
</div>
+ <ok-error [control]="form.controls['date'].controls['validTo']" class="w-100"></ok-error>
</div>
</div>
</div>
diff --git a/src/app/standby-schedule/dialogs/calculate-dialog/calculate-dialog.component.spec.ts b/src/app/standby-schedule/dialogs/calculate-dialog/calculate-dialog.component.spec.ts
index 50f2357..22a6dd7 100644
--- a/src/app/standby-schedule/dialogs/calculate-dialog/calculate-dialog.component.spec.ts
+++ b/src/app/standby-schedule/dialogs/calculate-dialog/calculate-dialog.component.spec.ts
@@ -45,7 +45,12 @@
});
it('should send calculation data to parent component if the form is valid', () => {
- component.form.patchValue({ validFrom: '2023-05-08T05:05:05.789Z', validTo: '2023-05-08T05:05:05.789Z' });
+ component.form.patchValue({
+ date: {
+ validFrom: '2023-05-08T05:05:05.789Z',
+ validTo: '2023-05-08T05:05:05.789Z'
+ }
+ });
component.calculate();
component.modalAction.subscribe((transferData: ModalTransferObject) => {
expect(transferData.action).toBe('calculate');
@@ -56,7 +61,7 @@
it('should set validFrom to current day', () => {
const date = new Date();
component.setDefaultDate('validFrom');
- expect(component.form.controls.validFrom.value).toEqual({
+ expect(component.form.get('validFrom').value).toEqual({
day: date.getDate(), month: date.getMonth() + 1, year: date.getFullYear()
});
});
@@ -64,7 +69,7 @@
it('should set validTo to current day + 15 years', () => {
const date = new Date();
component.setDefaultDate('validTo');
- expect(component.form.controls.validTo.value).toEqual({
+ expect(component.form.get('validTo').value).toEqual({
day: date.getDate(), month: date.getMonth() + 1, year: date.getFullYear() + 15
});
});
diff --git a/src/app/standby-schedule/dialogs/calculate-dialog/calculate-dialog.component.ts b/src/app/standby-schedule/dialogs/calculate-dialog/calculate-dialog.component.ts
index c6d8e7b..b930651 100644
--- a/src/app/standby-schedule/dialogs/calculate-dialog/calculate-dialog.component.ts
+++ b/src/app/standby-schedule/dialogs/calculate-dialog/calculate-dialog.component.ts
@@ -55,8 +55,10 @@
createForm() {
this.form = this.fb.group({
- validFrom: ['', Validators.required],
- validTo: ['', [Validators.required, DatepickerValidator.dateRangeTo('validFrom')]],
+ date: this.fb.group({
+ validFrom: ['', Validators.required],
+ validTo: ['', Validators.required],
+ }, { validator: [DatepickerValidator.dateRangeTo('')] }),
startIdOfUser: ['', Validators.required],
standbyGroupId: '',
standbyListId: ''
diff --git a/src/app/standby-schedule/dialogs/move-dialog/move-dialog.component.html b/src/app/standby-schedule/dialogs/move-dialog/move-dialog.component.html
index a0d730b..a353e82 100644
--- a/src/app/standby-schedule/dialogs/move-dialog/move-dialog.component.html
+++ b/src/app/standby-schedule/dialogs/move-dialog/move-dialog.component.html
@@ -23,7 +23,7 @@
<label class="form-check-label col-form-label col-md-5">
Von
</label>
- <div class="input-group col-md-7">
+ <div class="input-group col-md-7" formGroupName="date">
<input class="form-control" placeholder="von" name="dp" ngbDatepicker #validFrom="ngbDatepicker"
formControlName="validFrom" required id="validityDateFromInput">
<div class="input-group-append">
@@ -37,8 +37,9 @@
<i class="fa fa-clock-o" aria-hidden="true"></i>
</button>
</div>
+ <ok-error [control]="form.controls['date']" class="w-100"></ok-error>
+ <ok-error [control]="form.controls['date'].controls['validFrom']" class="w-100"></ok-error>
</div>
- <ok-error [control]="form.controls['validTo']"></ok-error>
</div>
</div>
<div class="col-md-3">
@@ -51,7 +52,7 @@
<label class="form-check-label col-form-label col-md-5">
Bis
</label>
- <div class="input-group col-md-7">
+ <div class="input-group col-md-7" formGroupName="date">
<input class="form-control" placeholder="bis" name="dp" ngbDatepicker #validTo="ngbDatepicker"
formControlName="validTo" required id="validityDateToInput">
<div class="input-group-append">
@@ -65,6 +66,7 @@
<i class="fa fa-clock-o" aria-hidden="true"></i>
</button>
</div>
+ <ok-error [control]="form.controls['date'].controls['validTo']" class="w-100"></ok-error>
</div>
</div>
</div>
diff --git a/src/app/standby-schedule/dialogs/move-dialog/move-dialog.component.spec.ts b/src/app/standby-schedule/dialogs/move-dialog/move-dialog.component.spec.ts
index 6b895e9..b167206 100644
--- a/src/app/standby-schedule/dialogs/move-dialog/move-dialog.component.spec.ts
+++ b/src/app/standby-schedule/dialogs/move-dialog/move-dialog.component.spec.ts
@@ -14,7 +14,6 @@
import { MoveDialogComponent } from './move-dialog.component';
import { SharedModule } from '@shared/shared.module';
-import { FormUtil } from '@shared/utils/form.util';
describe('MoveDialogComponent', () => {
let component: MoveDialogComponent;
@@ -46,11 +45,21 @@
describe('decide()', () => {
it('should prepare the data and call decide', () => {
- component.form.patchValue({ validFrom: { day: 1, month: 1, year: 2018 }, validTo: { day: 1, month: 1, year: 2018 } });
+ component.form.patchValue({
+ date: {
+ validFrom: { day: 1, month: 1, year: 2018 },
+ validTo: { day: 1, month: 1, year: 2018 }
+ }
+ });
component.decide(true);
});
it('should validate form fields if decision is true and form fields are invalid', () => {
- component.form.patchValue({ validFrom: '', validTo: '' });
+ component.form.patchValue({
+ date: {
+ validFrom: '',
+ validTo: ''
+ }
+ });
component.decide(true);
expect(component.form.valid).toBeFalsy();
});
@@ -60,7 +69,7 @@
it('should set validFrom to current day', () => {
const date = new Date();
component.setDefaultDate('validFrom');
- expect(component.form.controls.validFrom.value).toEqual({
+ expect(component.form.get('validFrom').value).toEqual({
day: date.getDate(), month: date.getMonth() + 1, year: date.getFullYear()
});
});
@@ -68,7 +77,7 @@
it('should set validTo to current day + 15 years', () => {
const date = new Date();
component.setDefaultDate('validTo');
- expect(component.form.controls.validTo.value).toEqual({
+ expect(component.form.get('validTo').value).toEqual({
day: date.getDate(), month: date.getMonth() + 1, year: date.getFullYear() + 15
});
});
diff --git a/src/app/standby-schedule/dialogs/move-dialog/move-dialog.component.ts b/src/app/standby-schedule/dialogs/move-dialog/move-dialog.component.ts
index b285f02..7dba4fb 100644
--- a/src/app/standby-schedule/dialogs/move-dialog/move-dialog.component.ts
+++ b/src/app/standby-schedule/dialogs/move-dialog/move-dialog.component.ts
@@ -28,8 +28,10 @@
standbyGroupList: Array<StandbygroupObject>;
form: FormGroup = this.fb.group({
- validFrom: ['', Validators.required],
- validTo: ['', [Validators.required, DatepickerValidator.dateRangeTo('validFrom')]],
+ date: this.fb.group({
+ validFrom: ['', Validators.required],
+ validTo: ['', Validators.required],
+ }, { validator: [DatepickerValidator.dateRangeTo('')] }),
validFromTime: '',
validToTime: '',
standbyGroupId: ['', Validators.required],
diff --git a/src/app/standby-schedule/dialogs/replace-dialog/replace-dialog.component.html b/src/app/standby-schedule/dialogs/replace-dialog/replace-dialog.component.html
index c3d158a..715b020 100644
--- a/src/app/standby-schedule/dialogs/replace-dialog/replace-dialog.component.html
+++ b/src/app/standby-schedule/dialogs/replace-dialog/replace-dialog.component.html
@@ -17,63 +17,56 @@
</div>
<div class="modal-body">
<form class="mt-3" [formGroup]="form" novalidate>
- <div class="form-group row d-flex align-items-center h-100">
- <label class="form-check-label col-form-label col-md-3">
- Von
- </label>
- <div class="input-group col-md-6">
- <input class="form-control" placeholder="von" name="dp" ngbDatepicker #validFrom="ngbDatepicker"
- formControlName="validFrom" required id="validityDateFromInput">
- <div class="input-group-append">
- <button class="btn btn-outline-secondary" (click)="validFrom.toggle()" type="button" id="validityDateFromPicker">
- <i class="fa fa-calendar" aria-hidden="true"></i>
- </button>
+ <div>
+ <div class="form-group row d-flex align-items-center h-100">
+ <label class="form-check-label col-form-label col-md-3">
+ Von
+ </label>
+ <div class="input-group col-md-6" formGroupName="date">
+ <input class="form-control" placeholder="von" name="dp" ngbDatepicker #validFrom="ngbDatepicker"
+ formControlName="validFrom" required id="validityDateFromInput">
+ <div class="input-group-append">
+ <button class="btn btn-outline-secondary" (click)="validFrom.toggle()" type="button" id="validityDateFromPicker">
+ <i class="fa fa-calendar" aria-hidden="true"></i>
+ </button>
+ </div>
+ <div class="input-group-append">
+ <button class="btn btn-outline-secondary" (click)="setDefaultDate('validFrom')" type="button" id="validityDateFromDefault"
+ data-toggle="tooltip" data-placement="bottom" title="Auf Standardwert setzen">
+ <i class="fa fa-clock-o" aria-hidden="true"></i>
+ </button>
+ </div>
+ <ok-error [control]="form.controls['date'].controls['validFrom']" class="w-100"></ok-error>
+ <ok-error [control]="form.controls['date']"></ok-error>
</div>
- <div class="input-group-append">
- <button class="btn btn-outline-secondary" (click)="setDefaultDate('validFrom')" type="button" id="validityDateFromDefault"
- data-toggle="tooltip" data-placement="bottom" title="Auf Standardwert setzen">
- <i class="fa fa-clock-o" aria-hidden="true"></i>
- </button>
+ <div class="col-md-3">
+ <ngb-timepicker formControlName="validFromTime" id="moveTimePickerFrom"></ngb-timepicker>
</div>
</div>
- <div class="col-md-3">
- <ngb-timepicker formControlName="validFromTime" id="moveTimePickerFrom"></ngb-timepicker>
- </div>
- </div>
- <div class="row">
- <div class="col-md-12">
- <ok-error [control]="form.controls['validFrom']"></ok-error>
- <ok-error [control]="form.controls['validFromTime']"></ok-error>
- </div>
- </div>
- <div class="form-group row d-flex align-items-center h-100">
- <label class="form-check-label col-form-label col-md-3">
- Bis
- </label>
- <div class="input-group col-md-6">
- <input class="form-control" placeholder="bis" name="dp" ngbDatepicker #validTo="ngbDatepicker" formControlName="validTo"
- required id="validityDateToInput">
- <div class="input-group-append">
- <button class="btn btn-outline-secondary" (click)="validTo.toggle()" type="button" id="validityDateToPicker">
- <i class="fa fa-calendar" aria-hidden="true"></i>
- </button>
+ <div class="form-group row d-flex align-items-center h-100">
+ <label class="form-check-label col-form-label col-md-3">
+ Bis
+ </label>
+ <div class="input-group col-md-6" formGroupName="date">
+ <input class="form-control" placeholder="bis" name="dp" ngbDatepicker #validTo="ngbDatepicker"
+ formControlName="validTo" required id="validityDateToInput">
+ <div class="input-group-append">
+ <button class="btn btn-outline-secondary" (click)="validTo.toggle()" type="button" id="validityDateToPicker">
+ <i class="fa fa-calendar" aria-hidden="true"></i>
+ </button>
+ </div>
+ <div class="input-group-append">
+ <button class="btn btn-outline-secondary" (click)="setDefaultDate('validTo')" type="button" id="validityDateToDefault"
+ data-toggle="tooltip" data-placement="bottom" title="Auf Standardwert setzen">
+ <i class="fa fa-clock-o" aria-hidden="true"></i>
+ </button>
+ </div>
+ <ok-error [control]="form.controls['date'].controls['validTo']" class="w-100"></ok-error>
</div>
- <div class="input-group-append">
- <button class="btn btn-outline-secondary" (click)="setDefaultDate('validTo')" type="button" id="validityDateToDefault"
- data-toggle="tooltip" data-placement="bottom" title="Auf Standardwert setzen">
- <i class="fa fa-clock-o" aria-hidden="true"></i>
- </button>
+ <div class="col-md-3">
+ <ngb-timepicker formControlName="validToTime" id="moveTimePickerTo"></ngb-timepicker>
</div>
</div>
- <div class="col-md-3">
- <ngb-timepicker formControlName="validToTime" id="moveTimePickerTo"></ngb-timepicker>
- </div>
- </div>
- <div class="row">
- <div class="col-md-12">
- <ok-error [control]="form.controls['validTo']"></ok-error>
- <ok-error [control]="form.controls['validToTime']"></ok-error>
- </div>
</div>
<div class="form-group row">
<label for="currentUser" class="col-sm-3 col-form-label">Aktuelle Bereitschaft</label>
diff --git a/src/app/standby-schedule/dialogs/replace-dialog/replace-dialog.component.spec.ts b/src/app/standby-schedule/dialogs/replace-dialog/replace-dialog.component.spec.ts
index a3157b6..bebe9ef 100644
--- a/src/app/standby-schedule/dialogs/replace-dialog/replace-dialog.component.spec.ts
+++ b/src/app/standby-schedule/dialogs/replace-dialog/replace-dialog.component.spec.ts
@@ -62,11 +62,21 @@
describe('decide()', () => {
it('should prepare the data and call decide', () => {
- component.form.patchValue({ validFrom: { day: 1, month: 1, year: 2018 }, validTo: { day: 1, month: 1, year: 2018 } });
+ component.form.patchValue({
+ date: {
+ validFrom: { day: 1, month: 1, year: 2018 },
+ validTo: { day: 1, month: 1, year: 2018 }
+ }
+ });
component.decide(true);
});
it('should validate form fields if decision is true and form fields are invalid', () => {
- component.form.patchValue({ validFrom: '', validTo: '' });
+ component.form.patchValue({
+ date: {
+ validFrom: '',
+ validTo: ''
+ }
+ });
component.decide(true);
expect(component.form.valid).toBeFalsy();
});
@@ -76,7 +86,7 @@
it('should set validFrom to current day', () => {
const date = new Date();
component.setDefaultDate('validFrom');
- expect(component.form.controls.validFrom.value).toEqual({
+ expect(component.form.get('validFrom').value).toEqual({
day: date.getDate(), month: date.getMonth() + 1, year: date.getFullYear()
});
});
@@ -84,7 +94,7 @@
it('should set validTo to current day + 15 years', () => {
const date = new Date();
component.setDefaultDate('validTo');
- expect(component.form.controls.validTo.value).toEqual({
+ expect(component.form.get('validTo').value).toEqual({
day: date.getDate(), month: date.getMonth() + 1, year: date.getFullYear() + 15
});
});
diff --git a/src/app/standby-schedule/dialogs/replace-dialog/replace-dialog.component.ts b/src/app/standby-schedule/dialogs/replace-dialog/replace-dialog.component.ts
index b5c8976..4e378e9 100644
--- a/src/app/standby-schedule/dialogs/replace-dialog/replace-dialog.component.ts
+++ b/src/app/standby-schedule/dialogs/replace-dialog/replace-dialog.component.ts
@@ -25,8 +25,10 @@
userList: Array<UserDropdownObject>;
form: FormGroup = this.fb.group({
- validFrom: ['', Validators.required],
- validTo: ['', [Validators.required, DatepickerValidator.dateRangeTo('validFrom')]],
+ date: this.fb.group({
+ validFrom: ['', Validators.required],
+ validTo: ['', Validators.required],
+ }, { validator: [DatepickerValidator.dateRangeTo('')] }),
validFromTime: ['', Validators.required],
validToTime: ['', Validators.required],
statusId: '',
diff --git a/src/app/standby-schedule/dialogs/transfer-dialog/transfer-dialog.component.html b/src/app/standby-schedule/dialogs/transfer-dialog/transfer-dialog.component.html
index 7bc6a8d..3a7e56d 100644
--- a/src/app/standby-schedule/dialogs/transfer-dialog/transfer-dialog.component.html
+++ b/src/app/standby-schedule/dialogs/transfer-dialog/transfer-dialog.component.html
@@ -17,7 +17,7 @@
</div>
<div class="modal-body">
<form class="mt-3" [formGroup]="form" novalidate>
- <div class="row">
+ <div class="row" formGroupName="date">
<label class="form-check-label col-form-label col-md-3">
Gültigkeit
</label>
@@ -37,8 +37,9 @@
<i class="fa fa-clock-o" aria-hidden="true"></i>
</button>
</div>
+ <ok-error [control]="form.controls['date'].controls['validFrom']" class="w-100"></ok-error>
</div>
- <ok-error [control]="form.controls['validTo']"></ok-error>
+ <ok-error [control]="form.controls['date']"></ok-error>
</div>
</div>
<div class="col-md-4">
@@ -57,6 +58,7 @@
<i class="fa fa-clock-o" aria-hidden="true"></i>
</button>
</div>
+ <ok-error [control]="form.controls['date'].controls['validTo']" class="w-100"></ok-error>
</div>
</div>
</div>
diff --git a/src/app/standby-schedule/dialogs/transfer-dialog/transfer-dialog.component.spec.ts b/src/app/standby-schedule/dialogs/transfer-dialog/transfer-dialog.component.spec.ts
index 54645d3..824a6a3 100644
--- a/src/app/standby-schedule/dialogs/transfer-dialog/transfer-dialog.component.spec.ts
+++ b/src/app/standby-schedule/dialogs/transfer-dialog/transfer-dialog.component.spec.ts
@@ -44,11 +44,21 @@
describe('decide()', () => {
it('should prepare the data and call decide', () => {
- component.form.patchValue({ validFrom: { day: 1, month: 1, year: 2018 }, validTo: { day: 1, month: 1, year: 2018 } });
+ component.form.patchValue({
+ date: {
+ validFrom: { day: 1, month: 1, year: 2018 },
+ validTo: { day: 1, month: 1, year: 2018 }
+ }
+ });
component.decide(true);
});
it('should validate form fields if decision is true and form fields are invalid', () => {
- component.form.patchValue({ validFrom: '', validTo: '' });
+ component.form.patchValue({
+ date: {
+ validFrom: '',
+ validTo: ''
+ }
+ });
component.decide(true);
expect(component.form.valid).toBeFalsy();
});
@@ -58,7 +68,7 @@
it('should set validFrom to current day', () => {
const date = new Date();
component.setDefaultDate('validFrom');
- expect(component.form.controls.validFrom.value).toEqual({
+ expect(component.form.get('validFrom').value).toEqual({
day: date.getDate(), month: date.getMonth() + 1, year: date.getFullYear()
});
});
@@ -66,7 +76,7 @@
it('should set validTo to current day + 15 years', () => {
const date = new Date();
component.setDefaultDate('validTo');
- expect(component.form.controls.validTo.value).toEqual({
+ expect(component.form.get('validTo').value).toEqual({
day: date.getDate(), month: date.getMonth() + 1, year: date.getFullYear() + 15
});
});
diff --git a/src/app/standby-schedule/dialogs/transfer-dialog/transfer-dialog.component.ts b/src/app/standby-schedule/dialogs/transfer-dialog/transfer-dialog.component.ts
index 27a410e..30ee621 100644
--- a/src/app/standby-schedule/dialogs/transfer-dialog/transfer-dialog.component.ts
+++ b/src/app/standby-schedule/dialogs/transfer-dialog/transfer-dialog.component.ts
@@ -39,8 +39,10 @@
createForm() {
this.form = this.fb.group({
- validFrom: ['', Validators.required],
- validTo: ['', [Validators.required, DatepickerValidator.dateRangeTo('validFrom')]],
+ date: this.fb.group({
+ validFrom: ['', Validators.required],
+ validTo: ['', Validators.required],
+ }, { validator: [DatepickerValidator.dateRangeTo('')] }),
overwrite: false
});
}
diff --git a/src/styles.scss b/src/styles.scss
index f5da765..c947a48 100644
--- a/src/styles.scss
+++ b/src/styles.scss
@@ -68,6 +68,9 @@
min-width: 160px;
}
+
+
+
.ng-valid[required]:not(p-dropdown),
.ng-valid.required:not(p-dropdown) {
border-left: 5px solid #42A948;
@@ -79,6 +82,12 @@
/* red */
}
+/* for date range pickers */
+.ng-invalid:not(form):not(ngb-timepicker):not(p-dropdown) input {
+ border-left: 5px solid #a94442 !important;
+ /* red */
+}
+
/* Fix for primeNG dropdown */
p-dropdown.ng-invalid:not(form):not(div):not(ngb-timepicker)>div {