From 2fbf33b641343697202895faff5bc8b4d661b428 Mon Sep 17 00:00:00 2001 From: Kim Shepherd Date: Wed, 4 May 2022 14:53:47 +1200 Subject: [PATCH] [TLC-254] Take config data service out of constructor, make optional --- .../form/builder/form-builder.service.spec.ts | 4 ++-- .../shared/form/builder/form-builder.service.ts | 16 ++++++++++------ 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/app/shared/form/builder/form-builder.service.spec.ts b/src/app/shared/form/builder/form-builder.service.spec.ts index 1f6754e8d1..0a613cbb84 100644 --- a/src/app/shared/form/builder/form-builder.service.spec.ts +++ b/src/app/shared/form/builder/form-builder.service.spec.ts @@ -897,10 +897,10 @@ describe('FormBuilderService test suite', () => { }); it(`should request the ${typeFieldProp} property and set value "dc_type"`, () => { - // This should have been called in the service constructor + const typeValue = service.getTypeField(); expect(configSpy.findByPropertyName).toHaveBeenCalledTimes(1); expect(configSpy.findByPropertyName).toHaveBeenCalledWith(typeFieldProp); - expect(service.getTypeField()).toEqual('dc_type'); + expect(typeValue).toEqual('dc_type'); }); }); diff --git a/src/app/shared/form/builder/form-builder.service.ts b/src/app/shared/form/builder/form-builder.service.ts index 01de94af3d..6d244aad2c 100644 --- a/src/app/shared/form/builder/form-builder.service.ts +++ b/src/app/shared/form/builder/form-builder.service.ts @@ -74,11 +74,6 @@ export class FormBuilderService extends DynamicFormService { super(componentService, validationService); this.formModels = new Map(); this.formGroups = new Map(); - if (hasValue(configService) || true) { - this.setTypeBindFieldFromConfig(); - } else { - this.typeField = 'dc_type'; - } } createDynamicFormControlEvent(control: FormControl, group: FormGroup, model: DynamicFormControlModel, type: string): DynamicFormControlEvent { @@ -285,7 +280,7 @@ export class FormBuilderService extends DynamicFormService { if (rawData.rows && !isEmpty(rawData.rows)) { rawData.rows.forEach((currentRow) => { const rowParsed = this.rowParser.parse(submissionId, currentRow, scopeUUID, sectionData, submissionScope, - readOnly, this.typeField); + readOnly, this.getTypeField()); if (isNotNull(rowParsed)) { if (Array.isArray(rowParsed)) { rows = rows.concat(rowParsed); @@ -518,7 +513,16 @@ export class FormBuilderService extends DynamicFormService { }); } + /** + * Get type field. If the type isn't already set, and a ConfigurationDataService is provided, set (with subscribe) + * from back end. Otherwise, get/set a default "dc_type" value + */ getTypeField(): string { + if (hasValue(this.configService) && hasNoValue(this.typeField)) { + this.setTypeBindFieldFromConfig(); + } else if (hasNoValue(this.typeField)) { + this.typeField = 'dc_type'; + } return this.typeField; }