X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=catalog-ui%2Fsrc%2Fapp%2Fmodels%2Fproperties-inputs%2Fderived-fe-property.ts;h=9df2b2b34109c2a425b57fc55bbe1e99aeb52738;hb=8bb8f3a4a1862104efde7714f6b39402b15feecd;hp=3985b98c9366c93fa91ee18b0a39e984a61f884b;hpb=01482efa58dd30e82e640f237a654b8b079a7554;p=sdc.git diff --git a/catalog-ui/src/app/models/properties-inputs/derived-fe-property.ts b/catalog-ui/src/app/models/properties-inputs/derived-fe-property.ts index 3985b98c93..9df2b2b341 100644 --- a/catalog-ui/src/app/models/properties-inputs/derived-fe-property.ts +++ b/catalog-ui/src/app/models/properties-inputs/derived-fe-property.ts @@ -46,22 +46,36 @@ export class DerivedFEProperty extends PropertyBEModel { 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(); @@ -69,25 +83,49 @@ export class DerivedFEProperty extends PropertyBEModel { 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) { @@ -105,10 +143,23 @@ export class DerivedFEProperty extends PropertyBEModel { 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) { @@ -116,9 +167,17 @@ export class DerivedFEProperty extends PropertyBEModel { } 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() {