Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 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 | 1x 78x 78x 78x 3x 16x 3x 3x 3x 2x 2x 2x 2x 2x 1x | import { Inject, Injectable, Optional } from '@angular/core';
import { DynamicFormControl } from '../dynamic-form-control/dynamic-form-control';
import { DynamicFormControlEvaluator } from '../dynamic-form-control/dynamic-form-control-evaluator';
import { DynamicFormControlEvaluatorType } from '../dynamic-form-control/dynamic-form-control-evaluator-type';
import { DynamicFormControlEvaluatorTypeConfig,
DYNAMIC_FORM_CONTROL_EVALUATOR_TYPE_CONFIG } from '../dynamic-form-control/dynamic-form-control-evaluator-type-config';
import { DynamicFormLibraryService } from '../dynamic-form-library/dynamic-form-library.service';
@Injectable()
export class DynamicFormEvaluationBuilder {
readonly controlEvaluatorTypes: DynamicFormControlEvaluatorType[];
constructor(
private libraryService: DynamicFormLibraryService,
@Optional() @Inject(DYNAMIC_FORM_CONTROL_EVALUATOR_TYPE_CONFIG)
private controlEvaluatorConfig: DynamicFormControlEvaluatorTypeConfig,
) {
this.controlEvaluatorTypes = this.libraryService.filterTypes(this.controlEvaluatorConfig);
}
getControlEvaluatorType(type: string): DynamicFormControlEvaluatorType {
return this.controlEvaluatorTypes.find(f => f.type === type);
}
createControlEvaluators(control: DynamicFormControl): DynamicFormControlEvaluator[] {
return Object.keys(control.definition.evaluators || {}).reduce((result, key) => {
const evaluatorDefinition = control.definition.evaluators[key];
const evaluatorType = this.getControlEvaluatorType(evaluatorDefinition.type);
if (evaluatorType) {
const type = evaluatorType.type;
const inputType = evaluatorType.inputType;
const func = evaluatorType.func;
const evaluator = new DynamicFormControlEvaluator(key, type, inputType, control, func);
return result.concat(evaluator);
}
return result;
}, []);
}
}
|