Skip to content
Snippets Groups Projects
error-transform.pipe.ts 1.55 KiB
Newer Older
  • Learn to ignore specific revisions
  • import { Pipe, PipeTransform } from '@angular/core';
    import { ValidationErrors } from '@angular/forms';
    import { TranslateService } from '@ngx-translate/core';
    
    rhenck's avatar
    rhenck committed
    import { UIElement } from '../../models/uI-element';
    
    
    @Pipe({
      name: 'errorTransform'
    })
    export class ErrorTransformPipe implements PipeTransform {
      constructor(private translateService: TranslateService) {}
    
    
    rhenck's avatar
    rhenck committed
      transform(validationErrors: ValidationErrors, elementModel: UIElement): 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;
      }
    
    
    rhenck's avatar
    rhenck committed
      private getValidationMessages(elementModel: UIElement): Record<string, string> {
    
        return {
    
    rhenck's avatar
    rhenck committed
          required: elementModel.requiredWarnMessage ||
    
            this.translateService.instant('validators.inputRequired'),
    
    rhenck's avatar
    rhenck committed
          requiredTrue: elementModel.requiredWarnMessage ||
    
            this.translateService.instant('validators.inputRequiredTrue'),
    
    rhenck's avatar
    rhenck committed
          minlength: elementModel.minWarnMessage ||
    
            this.translateService.instant('validators.inputTooShort'),
    
    rhenck's avatar
    rhenck committed
          maxlength: elementModel.maxWarnMessage ||
    
            this.translateService.instant('validators.inputTooLong'),
    
    rhenck's avatar
    rhenck committed
          pattern: elementModel.patternWarnMessage ||
    
            this.translateService.instant('validators.wrongPattern')
        };
      }
    }