import { PropertyFEModel, DerivedFEProperty, DerivedPropertyType } from "app/models";
import { PROPERTY_TYPES } from 'app/utils';
import { DataTypeService } from "../../../../services/data-type.service";
-import { trigger, state, style, transition, animate } from '@angular/animations';
+import { trigger, style, transition, animate } from '@angular/animations';
import {PropertiesUtils} from "../../../../pages/properties-assignment/services/properties.utils";
import {IUiElementChangeEvent} from "../../../ui/form-components/ui-element-base.component";
import {DynamicElementComponent} from "../../../ui/dynamic-element/dynamic-element.component";
nestedLevel: number;
propertyTestsId: string;
constraints:string[];
+ checkboxDisabled: boolean = false;
@Input() canBeDeclared: boolean;
@Input() property: PropertyFEModel | DerivedFEProperty;
onElementChanged = (event: IUiElementChangeEvent) => {
this.property.updateValueObj(event.value, event.isValid);
+ if (this.property.hasValueObjChanged()) {
+ this.checkboxDisabled = true;
+ }
+ if (event.value === '' || event.value === null || event.value === undefined) {
+ this.checkboxDisabled = false;
+ }
this.emitter.emit();
};
createNewChildProperty = (): void => {
-
- let newProps: Array<DerivedFEProperty> = this.propertiesUtils.createListOrMapChildren(this.property, "", null);
+
+ let mapKeyValue = this.property instanceof DerivedFEProperty ? this.property.mapKey : "";
+ let parentToscaFunction = null;
+ if (this.property.type == PROPERTY_TYPES.LIST && mapKeyValue === "") {
+ if (this.property.value != null) {
+ const valueJson = JSON.parse(this.property.value);
+ if (this.property instanceof PropertyFEModel && this.property.expandedChildPropertyId != null) {
+ let indexNumber = Number(Object.keys(valueJson).sort().reverse()[0]) + 1;
+ mapKeyValue = indexNumber.toString();
+ }else{
+ mapKeyValue = Object.keys(valueJson).sort().reverse()[0];
+ }
+ }else {
+ mapKeyValue = "0";
+ }
+ }
+ if (this.property.type == PROPERTY_TYPES.MAP && this.property instanceof DerivedFEProperty && this.property.mapInlist) {
+ parentToscaFunction = this.property.toscaFunction;
+ this.property.toscaFunction = null;
+ }
+ let newProps: Array<DerivedFEProperty> = this.propertiesUtils.createListOrMapChildren(this.property, mapKeyValue, null);
this.propertiesUtils.assignFlattenedChildrenValues(this.property.valueObj, [newProps[0]], this.property.propertiesName);
if (this.property instanceof PropertyFEModel) {
} else {
this.addChildPropsToParent.emit(newProps);
}
+ this.property.toscaFunction = parentToscaFunction;
}
addChildProps = (newProps: Array<DerivedFEProperty>, childPropName: string) => {
this.expandChildById(newProps[0].propertiesName);
this.updateMapKeyValueOnMainParent(newProps);
- this.emitter.emit();
}
}
deleteListOrMapItem = (item: DerivedFEProperty) => {
if (this.property instanceof PropertyFEModel) {
+ const childMapKey = item.mapKey;
this.removeValueFromParent(item);
this.property.flattenedChildren.splice(this.property.getIndexOfChild(item.propertiesName), this.property.getCountOfChildren(item.propertiesName));
this.expandChildById(item.propertiesName);
+ if (this.property.type == PROPERTY_TYPES.LIST && this.property.schemaType == PROPERTY_TYPES.MAP && childMapKey != null) {
+ let valueObject = JSON.parse(this.property.value);
+ let innerObject = valueObject[item.parentMapKey];
+ delete innerObject[childMapKey];
+ this.property.valueObj = valueObject;
+ this.property.value = JSON.stringify(valueObject);
+ this.property.flattenedChildren[0].valueObj = valueObject;
+ this.property.flattenedChildren[0].value = JSON.stringify(valueObject);
+ this.property.flattenedChildren[0].valueObjIsChanged = true;
+ }
}
}
if (!itemParent) {
return;
}
-
+ let oldKey = item.getActualMapKey();
+ let keyIndex : number = 0;
+ if(item.parentMapKey != null && oldKey != null) {
+ keyIndex = 1;
+ }
+ if(item.parentMapKey != null && oldKey == null) {
+ oldKey = item.parentMapKey;
+ }
+ if (this.property.subPropertyToscaFunctions !== null) {
+ let tempSubToscaFunction: SubPropertyToscaFunction[] = [];
+ this.property.subPropertyToscaFunctions.forEach((subToscaItem : SubPropertyToscaFunction) => {
+ if(subToscaItem.subPropertyPath[keyIndex] != oldKey){
+ tempSubToscaFunction.push(subToscaItem);
+ }
+ });
+ this.property.subPropertyToscaFunctions = tempSubToscaFunction;
+ }
if (item.derivedDataType == DerivedPropertyType.MAP && !item.mapInlist) {
- const oldKey = item.getActualMapKey();
delete itemParent.valueObj[oldKey];
if (itemParent instanceof PropertyFEModel) {
delete itemParent.valueObjValidation[oldKey];
itemParent.valueObjIsValid = itemParent.calculateValueObjIsValid();
}
- if (this.property.subPropertyToscaFunctions !== null) {
- let tempSubToscaFunction: SubPropertyToscaFunction[] = [];
- this.property.subPropertyToscaFunctions.forEach((item : SubPropertyToscaFunction, index) => {
- if(item.subPropertyPath[0] != oldKey){
- tempSubToscaFunction.push(item);
- }
- });
- this.property.subPropertyToscaFunctions = tempSubToscaFunction;
- }
this.property.childPropMapKeyUpdated(item, null); // remove map key
} else {
const itemIndex: number = this.property.flattenedChildren.filter(prop => prop.parentName == item.parentName).map(prop => prop.propertiesName).indexOf(item.propertiesName);
if (this.property instanceof PropertyFEModel) {
let oldKey = childProp.getActualMapKey();
this.property.childPropMapKeyUpdated(childProp, newMapKey);
+ this.property.flattenedChildren.forEach(tempDervObj => {
+ if (childProp.propertiesName === tempDervObj.parentName) {
+ tempDervObj.mapKey = newMapKey;
+ }
+ });
if (this.property.subPropertyToscaFunctions != null) {
this.property.subPropertyToscaFunctions.forEach((item : SubPropertyToscaFunction) => {
if(item.subPropertyPath[0] === oldKey){
}
preventInsertItem = (property:DerivedFEProperty):boolean => {
- if(property.type == PROPERTY_TYPES.MAP && Object.keys(property.valueObj).indexOf('') > -1 ){
+ if(property.type == PROPERTY_TYPES.MAP && property.valueObj != null && Object.keys(property.valueObj).indexOf('') > -1 ){
return true;
}
return false;