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=ac05f19b7b52df209674fd65bdd5b846925921e7;hpb=26e5029d922779fd7e786c1a31b6b37492132388;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 ac05f19b7b..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 @@ -21,6 +21,8 @@ import * as _ from "lodash"; import { SchemaPropertyGroupModel, SchemaProperty } from '../schema-property'; import { DerivedPropertyType, PropertyBEModel, PropertyFEModel } from '../../models'; +import {SubPropertyToscaFunction} from "../sub-property-tosca-function"; +import {ToscaFunction} from "../tosca-function"; import { PROPERTY_TYPES } from 'app/utils'; import { UUID } from "angular2-uuid"; @@ -30,9 +32,11 @@ export class DerivedFEProperty extends PropertyBEModel { valueObjIsValid: boolean; valueObjOrig: any; valueObjIsChanged: boolean; + value: any parentName: string; propertiesName: string; //"network_assignments#ipv4_subnet#use_ipv4 = parentPath + name derivedDataType: DerivedPropertyType; + toscaFunction: ToscaFunction; isDeclared: boolean; isSelected: boolean; isDisabled: boolean; @@ -41,15 +45,37 @@ export class DerivedFEProperty extends PropertyBEModel { canBeDeclared: boolean; 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); + 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(); @@ -57,9 +83,50 @@ export class DerivedFEProperty extends PropertyBEModel { this.propertiesName = parentName + '#' + this.name; if (property.type == PROPERTY_TYPES.LIST) { - this.mapKey = property.schema.property.type.split('.').pop(); + 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 != '') { + parentKey = key; + }else{ + 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(); + } + } + 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) { this.mapKey = key; @@ -69,14 +136,48 @@ export class DerivedFEProperty extends PropertyBEModel { this.mapKeyError = 'Key cannot be empty.'; } this.type = property.type; + if (property.schema.property.type == PROPERTY_TYPES.MAP){ + const schProp = new SchemaProperty(); + schProp.isSimpleType = true; + schProp.isDataType = false; + 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; - this.schema = new SchemaPropertyGroupModel(new SchemaProperty(property.schema.property)); + if (value != null) { + this.value = typeof value == 'object' ? JSON.stringify(value) : value; + } 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() { @@ -97,6 +198,7 @@ export class DerivedFEProperty extends PropertyBEModel { public hasValueObjChanged() { return !_.isEqual(this.valueObj, this.valueObjOrig); } + } export class DerivedFEPropertyMap { [parentPath: string]: Array;