Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import { Pipe, PipeTransform } from '@angular/core';
import { ValidationErrors } from '@angular/forms';
import { TranslateService } from '@ngx-translate/core';
import {
CheckboxElement, InputUIElement, TextFieldElement, UnitUIElement
} from '../../unit';
@Pipe({
name: 'errorTransform'
})
export class ErrorTransformPipe implements PipeTransform {
constructor(private translateService: TranslateService) {}
transform(validationErrors: ValidationErrors, elementModel: UnitUIElement): string {
const validationMessages = this.getValidationMessages(elementModel);
let returnMessage = '';
Object.keys(validationErrors).forEach(errorKey => {
if (returnMessage) {
returnMessage += '; ';
}
const messageKey = errorKey === 'required' && elementModel.type === 'checkbox' ? 'requiredTrue' : errorKey;
returnMessage += validationMessages[messageKey];
});
return returnMessage;
}
private getValidationMessages(elementModel: UnitUIElement): Record<string, string> {
return {
required: (elementModel as InputUIElement).requiredWarnMessage ||
this.translateService.instant('validators.inputRequired'),
requiredTrue: (elementModel as CheckboxElement).requiredWarnMessage ||
this.translateService.instant('validators.inputRequiredTrue'),
minlength: (elementModel as TextFieldElement).minWarnMessage ||
this.translateService.instant('validators.inputTooShort'),
maxlength: (elementModel as TextFieldElement).maxWarnMessage ||
this.translateService.instant('validators.inputTooLong'),
pattern: (elementModel as TextFieldElement).patternWarnMessage ||
this.translateService.instant('validators.wrongPattern')
};
}
}