Skip to content

Commit cb7b8b3

Browse files
committed
Submission form now displays custom messages for regex validated fields if they exist
1 parent cb70190 commit cb7b8b3

6 files changed

Lines changed: 23 additions & 8 deletions

File tree

src/app/shared/form/builder/parsers/concat-field-parser.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import {
1919
SUBMISSION_ID
2020
} from './field-parser';
2121
import { DsDynamicInputModel, DsDynamicInputModelConfig } from '../ds-dynamic-form-ui/models/ds-dynamic-input.model';
22+
import { TranslateService } from '@ngx-translate/core';
2223

2324
export class ConcatFieldParser extends FieldParser {
2425

@@ -27,10 +28,11 @@ export class ConcatFieldParser extends FieldParser {
2728
@Inject(CONFIG_DATA) configData: FormFieldModel,
2829
@Inject(INIT_FORM_VALUES) initFormValues,
2930
@Inject(PARSER_OPTIONS) parserOptions: ParserOptions,
31+
translate: TranslateService,
3032
protected separator: string,
3133
protected firstPlaceholder: string = null,
3234
protected secondPlaceholder: string = null) {
33-
super(submissionId, configData, initFormValues, parserOptions);
35+
super(submissionId, configData, initFormValues, parserOptions, translate);
3436

3537
this.separator = separator;
3638
this.firstPlaceholder = firstPlaceholder;

src/app/shared/form/builder/parsers/dropdown-field-parser.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import {
1515
import { isNotEmpty } from '../../../empty.util';
1616
import { FormFieldMetadataValueObject } from '../models/form-field-metadata-value.model';
1717
import { ParserOptions } from './parser-options';
18+
import { TranslateService } from '@ngx-translate/core';
1819

1920
export class DropdownFieldParser extends FieldParser {
2021

@@ -23,8 +24,9 @@ export class DropdownFieldParser extends FieldParser {
2324
@Inject(CONFIG_DATA) configData: FormFieldModel,
2425
@Inject(INIT_FORM_VALUES) initFormValues,
2526
@Inject(PARSER_OPTIONS) parserOptions: ParserOptions,
27+
translate: TranslateService
2628
) {
27-
super(submissionId, configData, initFormValues, parserOptions);
29+
super(submissionId, configData, initFormValues, parserOptions, translate);
2830
}
2931

3032
public modelFactory(fieldValue?: FormFieldMetadataValueObject | any, label?: boolean): any {

src/app/shared/form/builder/parsers/field-parser.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import { VocabularyOptions } from '../../../../core/submission/vocabularies/mode
2525
import { ParserType } from './parser-type';
2626
import { isNgbDateStruct } from '../../../date.util';
2727
import { SubmissionScopeType } from '../../../../core/submission/submission-scope-type';
28+
import { TranslateService } from '@ngx-translate/core';
2829

2930
export const SUBMISSION_ID: InjectionToken<string> = new InjectionToken<string>('submissionId');
3031
export const CONFIG_DATA: InjectionToken<FormFieldModel> = new InjectionToken<FormFieldModel>('configData');
@@ -50,7 +51,8 @@ export abstract class FieldParser {
5051
@Inject(SUBMISSION_ID) protected submissionId: string,
5152
@Inject(CONFIG_DATA) protected configData: FormFieldModel,
5253
@Inject(INIT_FORM_VALUES) protected initFormValues: any,
53-
@Inject(PARSER_OPTIONS) protected parserOptions: ParserOptions
54+
@Inject(PARSER_OPTIONS) protected parserOptions: ParserOptions,
55+
protected translate: TranslateService
5456
) {
5557
}
5658

@@ -395,11 +397,14 @@ export abstract class FieldParser {
395397
} else {
396398
regex = new RegExp(this.configData.input.regex);
397399
}
400+
const baseTranslationKey = 'error.validation.pattern';
401+
const fieldranslationKey = `${baseTranslationKey}.${controlModel.id}`;
402+
const fieldTranslationExists = this.translate.instant(fieldranslationKey) !== fieldranslationKey;
398403
controlModel.validators = Object.assign({}, controlModel.validators, { pattern: regex });
399404
controlModel.errorMessages = Object.assign(
400405
{},
401406
controlModel.errorMessages,
402-
{ pattern: 'error.validation.pattern' });
407+
{ pattern: fieldTranslationExists ? fieldranslationKey : baseTranslationKey });
403408
}
404409

405410
protected markAsRequired(controlModel) {

src/app/shared/form/builder/parsers/name-field-parser.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { Inject } from '@angular/core';
2+
import { TranslateService } from '@ngx-translate/core';
23
import { FormFieldModel } from '../models/form-field.model';
34
import { ConcatFieldParser } from './concat-field-parser';
45
import { CONFIG_DATA, INIT_FORM_VALUES, PARSER_OPTIONS, SUBMISSION_ID } from './field-parser';
@@ -10,8 +11,9 @@ export class NameFieldParser extends ConcatFieldParser {
1011
@Inject(SUBMISSION_ID) submissionId: string,
1112
@Inject(CONFIG_DATA) configData: FormFieldModel,
1213
@Inject(INIT_FORM_VALUES) initFormValues,
13-
@Inject(PARSER_OPTIONS) parserOptions: ParserOptions
14+
@Inject(PARSER_OPTIONS) parserOptions: ParserOptions,
15+
translate: TranslateService
1416
) {
15-
super(submissionId, configData, initFormValues, parserOptions, ',', 'form.last-name', 'form.first-name');
17+
super(submissionId, configData, initFormValues, parserOptions, translate, ',', 'form.last-name', 'form.first-name');
1618
}
1719
}

src/app/shared/form/builder/parsers/parser-factory.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,14 @@ import { SeriesFieldParser } from './series-field-parser';
1919
import { TagFieldParser } from './tag-field-parser';
2020
import { TextareaFieldParser } from './textarea-field-parser';
2121
import { DisabledFieldParser } from './disabled-field-parser';
22+
import { TranslateService } from '@ngx-translate/core';
2223

2324
const fieldParserDeps = [
2425
SUBMISSION_ID,
2526
CONFIG_DATA,
2627
INIT_FORM_VALUES,
2728
PARSER_OPTIONS,
29+
TranslateService
2830
];
2931

3032
/**

src/app/shared/form/builder/parsers/series-field-parser.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { Inject } from '@angular/core';
2+
import { TranslateService } from '@ngx-translate/core';
23
import { FormFieldModel } from '../models/form-field.model';
34
import { ConcatFieldParser } from './concat-field-parser';
45
import { CONFIG_DATA, INIT_FORM_VALUES, PARSER_OPTIONS, SUBMISSION_ID } from './field-parser';
@@ -10,8 +11,9 @@ export class SeriesFieldParser extends ConcatFieldParser {
1011
@Inject(SUBMISSION_ID) submissionId: string,
1112
@Inject(CONFIG_DATA) configData: FormFieldModel,
1213
@Inject(INIT_FORM_VALUES) initFormValues,
13-
@Inject(PARSER_OPTIONS) parserOptions: ParserOptions
14+
@Inject(PARSER_OPTIONS) parserOptions: ParserOptions,
15+
translate: TranslateService
1416
) {
15-
super(submissionId, configData, initFormValues, parserOptions, ';');
17+
super(submissionId, configData, initFormValues, parserOptions, translate, ';');
1618
}
1719
}

0 commit comments

Comments
 (0)