Fixed issue with concat component

This commit is contained in:
Giuseppe
2018-10-11 11:25:03 +02:00
parent 15315fda39
commit ae9d62d60d
3 changed files with 32 additions and 30 deletions

View File

@@ -1,7 +1,6 @@
import { DynamicFormControlLayout, DynamicFormGroupModel, DynamicFormGroupModelConfig, serializable } from '@ng-dynamic-forms/core'; import { DynamicFormControlLayout, DynamicFormGroupModel, DynamicFormGroupModelConfig, serializable } from '@ng-dynamic-forms/core';
import { isNotEmpty } from '../../../../empty.util'; import { isNotEmpty } from '../../../../empty.util';
import { DsDynamicInputModel } from './ds-dynamic-input.model'; import { DsDynamicInputModel } from './ds-dynamic-input.model';
import { AuthorityValueModel } from '../../../../../core/integration/models/authority-value.model';
import { FormFieldMetadataValueObject } from '../../models/form-field-metadata-value.model'; import { FormFieldMetadataValueObject } from '../../models/form-field-metadata-value.model';
export const CONCAT_GROUP_SUFFIX = '_CONCAT_GROUP'; export const CONCAT_GROUP_SUFFIX = '_CONCAT_GROUP';
@@ -28,8 +27,11 @@ export class DynamicConcatModel extends DynamicFormGroupModel {
get value() { get value() {
const firstValue = (this.get(0) as DsDynamicInputModel).value; const firstValue = (this.get(0) as DsDynamicInputModel).value;
const secondValue = (this.get(1) as DsDynamicInputModel).value; const secondValue = (this.get(1) as DsDynamicInputModel).value;
if (isNotEmpty(firstValue) && isNotEmpty(secondValue)) { if (isNotEmpty(firstValue) && isNotEmpty(secondValue)) {
return new FormFieldMetadataValueObject(firstValue + this.separator + secondValue); return new FormFieldMetadataValueObject(firstValue + this.separator + secondValue);
} else if (isNotEmpty(firstValue)) {
return new FormFieldMetadataValueObject(firstValue);
} else { } else {
return null; return null;
} }
@@ -37,14 +39,24 @@ export class DynamicConcatModel extends DynamicFormGroupModel {
set value(value: string | FormFieldMetadataValueObject) { set value(value: string | FormFieldMetadataValueObject) {
let values; let values;
let tempValue: string;
if (typeof value === 'string') { if (typeof value === 'string') {
values = value ? value.split(this.separator) : [null, null]; tempValue = value;
} else { } else {
values = value ? value.value.split(this.separator) : [null, null]; tempValue = value.value;
} }
if (values.length > 1) { if (tempValue.includes(this.separator)) {
values = tempValue.split(this.separator);
} else {
values = [tempValue, null];
}
if (values[0]) {
(this.get(0) as DsDynamicInputModel).valueUpdates.next(values[0]); (this.get(0) as DsDynamicInputModel).valueUpdates.next(values[0]);
}
if (values[1]) {
(this.get(1) as DsDynamicInputModel).valueUpdates.next(values[1]); (this.get(1) as DsDynamicInputModel).valueUpdates.next(values[1]);
} }
} }

View File

@@ -277,13 +277,17 @@ export class FormBuilderService extends DynamicFormService {
} }
getId(model: DynamicPathable): string { getId(model: DynamicPathable): string {
let tempModel: DynamicFormControlModel;
if (this.isArrayGroup(model as DynamicFormControlModel)) { if (this.isArrayGroup(model as DynamicFormControlModel)) {
return model.index.toString(); return model.index.toString();
} else if (this.isModelInCustomGroup(model as DynamicFormControlModel)) {
tempModel = (model as any).parent;
} else { } else {
return ((model as DynamicFormControlModel).id !== (model as DynamicFormControlModel).name) ? tempModel = (model as any);
(model as DynamicFormControlModel).name :
(model as DynamicFormControlModel).id;
} }
return (tempModel.id !== tempModel.name) ? tempModel.name : tempModel.id;
} }
} }

View File

@@ -31,16 +31,7 @@ export class ConcatFieldParser extends FieldParser {
let clsGroup: DynamicFormControlLayout; let clsGroup: DynamicFormControlLayout;
let clsInput: DynamicFormControlLayout; let clsInput: DynamicFormControlLayout;
let newId: string; const id: string = this.configData.selectableMetadata[0].metadata;
if (this.configData.selectableMetadata[0].metadata.includes('.')) {
newId = this.configData.selectableMetadata[0].metadata
.split('.')
.slice(0, this.configData.selectableMetadata[0].metadata.split('.').length - 1)
.join('.');
} else {
newId = this.configData.selectableMetadata[0].metadata
}
clsInput = { clsInput = {
grid: { grid: {
@@ -48,14 +39,14 @@ export class ConcatFieldParser extends FieldParser {
} }
}; };
const groupId = newId.replace(/\./g, '_') + CONCAT_GROUP_SUFFIX; const groupId = id.replace(/\./g, '_') + CONCAT_GROUP_SUFFIX;
const concatGroup: DynamicConcatModelConfig = this.initModel(groupId, false, false); const concatGroup: DynamicConcatModelConfig = this.initModel(groupId, false, false);
concatGroup.group = []; concatGroup.group = [];
concatGroup.separator = this.separator; concatGroup.separator = this.separator;
const input1ModelConfig: DynamicInputModelConfig = this.initModel(newId + CONCAT_FIRST_INPUT_SUFFIX, label, false, false); const input1ModelConfig: DynamicInputModelConfig = this.initModel(id + CONCAT_FIRST_INPUT_SUFFIX, label, false, false);
const input2ModelConfig: DynamicInputModelConfig = this.initModel(newId + CONCAT_SECOND_INPUT_SUFFIX, label, true, false); const input2ModelConfig: DynamicInputModelConfig = this.initModel(id + CONCAT_SECOND_INPUT_SUFFIX, label, true, false);
if (this.configData.mandatory) { if (this.configData.mandatory) {
input1ModelConfig.required = true; input1ModelConfig.required = true;
@@ -69,16 +60,6 @@ export class ConcatFieldParser extends FieldParser {
input2ModelConfig.placeholder = this.secondPlaceholder; input2ModelConfig.placeholder = this.secondPlaceholder;
} }
// Init values
if (isNotEmpty(fieldValue)) {
const values = fieldValue.value.split(this.separator);
if (values.length > 1) {
input1ModelConfig.value = values[0].trim();
input2ModelConfig.value = values[1].trim();
}
}
// Split placeholder if is like 'placeholder1/placeholder2' // Split placeholder if is like 'placeholder1/placeholder2'
const placeholder = this.configData.label.split('/'); const placeholder = this.configData.label.split('/');
if (placeholder.length === 2) { if (placeholder.length === 2) {
@@ -99,6 +80,11 @@ export class ConcatFieldParser extends FieldParser {
const concatModel = new DynamicConcatModel(concatGroup, clsGroup); const concatModel = new DynamicConcatModel(concatGroup, clsGroup);
concatModel.name = this.getFieldId(); concatModel.name = this.getFieldId();
// Init values
if (isNotEmpty(fieldValue)) {
concatModel.value = fieldValue;
}
return concatModel; return concatModel;
} }