[ADF-1720] Fixed format for min date and max date (#2492)

This commit is contained in:
Vito 2017-10-18 14:22:29 +01:00 committed by Eugenio Romano
parent 643921ae30
commit 5d77060cd4
3 changed files with 39 additions and 4 deletions

View File

@ -159,6 +159,8 @@ export class DateFieldValidator implements FormFieldValidator {
export class MinDateFieldValidator implements FormFieldValidator {
MIN_DATE_FORMAT = 'DD-MM-YYYY';
private supportedTypes = [
FormFieldTypes.DATE
];
@ -184,7 +186,7 @@ export class MinDateFieldValidator implements FormFieldValidator {
} else {
d = field.value;
}
let min = moment(field.minValue, dateFormat);
let min = moment(field.minValue, this.MIN_DATE_FORMAT);
if (d.isBefore(min)) {
field.validationSummary.message = `FORM.FIELD.VALIDATOR.NOT_LESS_THAN`;
@ -198,6 +200,8 @@ export class MinDateFieldValidator implements FormFieldValidator {
export class MaxDateFieldValidator implements FormFieldValidator {
MAX_DATE_FORMAT = 'DD-MM-YYYY';
private supportedTypes = [
FormFieldTypes.DATE
];
@ -223,7 +227,7 @@ export class MaxDateFieldValidator implements FormFieldValidator {
} else {
d = field.value;
}
let max = moment(field.maxValue, dateFormat);
let max = moment(field.maxValue, this.MAX_DATE_FORMAT);
if (d.isAfter(max)) {
field.validationSummary.message = `FORM.FIELD.VALIDATOR.NOT_GREATER_THAN`;

View File

@ -147,6 +147,37 @@ describe('DateWidgetComponent', () => {
});
}));
it('should check correctly the min value with different formats', async(() => {
widget.field.value = '11-30-9999';
widget.field.dateDisplayFormat = 'MM-DD-YYYY';
widget.field.minValue = '30-12-9999';
widget.ngOnInit();
widget.field.validate();
fixture.detectChanges();
fixture.whenStable()
.then(() => {
expect(element.querySelector('#date-field-id')).toBeDefined();
expect(element.querySelector('#date-field-id')).not.toBeNull();
let dateElement: any = element.querySelector('#date-field-id');
expect(dateElement.value).toContain('11-30-9999');
expect(element.querySelector('.adf-error-text').textContent).toBe('FORM.FIELD.VALIDATOR.NOT_LESS_THAN');
});
}));
it('should show the correct format type', async(() => {
widget.field.value = '12-30-9999';
widget.field.dateDisplayFormat = 'MM-DD-YYYY';
widget.ngOnInit();
fixture.detectChanges();
fixture.whenStable()
.then(() => {
expect(element.querySelector('#date-field-id')).toBeDefined();
expect(element.querySelector('#date-field-id')).not.toBeNull();
let dateElement: any = element.querySelector('#date-field-id');
expect(dateElement.value).toContain('12-30-9999');
});
}));
it('should hide not visible date widget', async(() => {
widget.field.isVisible = false;
fixture.detectChanges();

View File

@ -58,11 +58,11 @@ export class DateWidgetComponent extends WidgetComponent implements OnInit {
if (this.field) {
if (this.field.minValue) {
this.minDate = moment(this.field.minValue, this.field.dateDisplayFormat);
this.minDate = moment(this.field.minValue, 'DD/MM/YYYY');
}
if (this.field.maxValue) {
this.maxDate = moment(this.field.maxValue, this.field.dateDisplayFormat);
this.maxDate = moment(this.field.maxValue, 'DD/MM/YYYY');
}
}
this.displayDate = moment(this.field.value, this.field.dateDisplayFormat);