mapKey: string;
mapKeyError: string;
mapInlist: boolean
+ inputName: string;
+ parentMapKey: string;
+ toscaPath: string[];
constructor(property: PropertyBEModel, parentName?: string, createChildOfListOrMap?: boolean, key?:string, value?:any) {
if (!createChildOfListOrMap) { //creating a standard derived prop
super(property);
+ this.toscaPath = [];
this.parentName = parentName ? parentName : null;
this.propertiesName = (parentName) ? parentName + '#' + property.name : property.name;
this.canBeDeclared = true; //defaults to true
+ if (property instanceof DerivedFEProperty) {
+ this.toscaPath = property.toscaPath != null ? property.toscaPath : [];
+ } else {
+ this.toscaPath = property.parentToscaPath != null ? property.parentToscaPath : property.parentToscaPath;
+ }
+ if (this.toscaPath.length == 0 && parentName != null && parentName.indexOf('#') != -1) {
+ let lastparent = parentName.split('#');
+ this.toscaPath.push(lastparent[lastparent.length - 1]);
+ }
+ this.toscaPath.push(property.name);
} else { //creating a direct child of list or map (ie. Item that can be deleted, with UUID instead of name)
super(null);
- if(property.subPropertyToscaFunctions != null){
- property.subPropertyToscaFunctions.forEach((item : SubPropertyToscaFunction) => {
- if(item.subPropertyPath[0] === key){
- this.toscaFunction = item.toscaFunction;
- }
- });
+ let toscaPathCopy = null;
+ if (property instanceof DerivedFEProperty) {
+ toscaPathCopy = property.toscaPath != null ? property.toscaPath .toString() : null;
+ } else {
+ toscaPathCopy = property.parentToscaPath != null ? property.parentToscaPath.toString() : null;
}
+ this.toscaPath = toscaPathCopy != null ? toscaPathCopy.split(",") : [];
this.isChildOfListOrMap = true;
this.canBeDeclared = false;
this.name = UUID.UUID();
this.propertiesName = parentName + '#' + this.name;
if (property.type == PROPERTY_TYPES.LIST) {
- if (property.schemaType != PROPERTY_TYPES.MAP) {
- if(property.value != null) {
- const valueJson = JSON.parse(property.value);
+ let parentKey : string = null;
+ if (property instanceof DerivedFEProperty) {
+ if (property.valueObj != '') {
+ if (key != '') {
+ let listIndex = Number(key);
+ if (!isNaN(listIndex)) {
+ this.toscaPath.push(key);
+ } else {
+ let newIndex = Object.keys(property.valueObj).findIndex(valueKey => (valueKey == key));
+ this.toscaPath.push(newIndex.toString());
+ }
+ } else {
+ let toscaIndex = Object.keys(property.valueObj).sort().reverse()[0];
+ this.toscaPath.push((Number(toscaIndex) + 1).toString());
+ }
+ } else {
+ this.toscaPath.push((property.valueObj.length).toString());
+ }
+ } else {
+ if (property instanceof PropertyFEModel && property.valueObj != '') {
if (key != '') {
- this.mapKey = key;
+ parentKey = key;
}else{
- let indexNumber = Number(Object.keys(valueJson).sort().reverse()[0]) + 1;
- this.mapKey = indexNumber.toString();
+ let toscaIndex = Object.keys(property.valueObj).sort().reverse()[0];
+ parentKey = (Number(toscaIndex) + 1).toString();
+ }
+ } else {
+ parentKey = "0";
+ if (property instanceof PropertyFEModel) {
+ parentKey = (property.flattenedChildren.length).toString();
}
- }else {
- this.mapKey = "0";
}
+ this.toscaPath.push(parentKey);
+ }
+ if (property.schemaType != PROPERTY_TYPES.MAP) {
+ this.mapKey = parentKey;
}
this.mapKeyError = null;
this.type = property.schema.property.type;
if (this.type == PROPERTY_TYPES.MAP){
this.mapInlist = true;
+ this.parentMapKey = parentKey;
}
-
this.schema = new SchemaPropertyGroupModel(new SchemaProperty(property.schema.property));
} else { //map
if (key) {
schProp.simpleType = PROPERTY_TYPES.STRING;
this.schema = new SchemaPropertyGroupModel(schProp);
this.schemaType = PROPERTY_TYPES.STRING;
+ if (property instanceof DerivedFEProperty) {
+ this.parentMapKey = property.parentMapKey;
+ if (value != null && typeof value == 'object') {
+ this.toscaFunction = property.toscaFunction;
+ }
+ }
} else {
this.schema = new SchemaPropertyGroupModel(new SchemaProperty(property.schema.property));
}
-
+ if (this.toscaPath != null) {
+ let lastIndex = this.toscaPath[this.toscaPath.length - 1];
+ if(this.mapKey != lastIndex){
+ this.toscaPath.push(this.mapKey);
+ }
+ } else {
+ this.toscaPath.push(this.mapKey);
+ }
}
this.valueObj = (this.type == PROPERTY_TYPES.JSON && typeof value == 'object') ? JSON.stringify(value) : value;
if (value != null) {
}
this.updateValueObjOrig();
}
- // this.constraints = property ? property.constraints : null;
+ this.parentToscaPath = this.toscaPath;
+ if(property.subPropertyToscaFunctions != null){
+ property.subPropertyToscaFunctions.forEach((item : SubPropertyToscaFunction) => {
+ if(item.subPropertyPath.toString() === this.toscaPath.toString() && this.uniqueId == null){
+ this.toscaFunction = item.toscaFunction;
+ }
+ });
+ }
this.valueObjIsValid = true;
this.derivedDataType = this.getDerivedPropertyType();
+ this.inputName = property.inputName;
}
public getActualMapKey() {