summaryrefslogtreecommitdiffstats
path: root/catalog-ui/src/app/ng2/pages
diff options
context:
space:
mode:
authorimamSidero <imam.hussain@est.tech>2023-03-23 11:25:23 +0000
committerImam hussain <imam.hussain@est.tech>2023-04-03 11:13:18 +0000
commit7565f810f9fa50c8140843b2f81e8fb428815154 (patch)
tree5ff3ef43bd7434db7c0bd462db295a2726052c61 /catalog-ui/src/app/ng2/pages
parent3dff1c221e58de6a81cf6bbdfb84fdf97665e484 (diff)
Provide tosca function capability to all nested levels
Tosca function capability is provided to all nested levels of list, map and custom types Issue-ID: SDC-4445 Signed-off-by: Imam hussain <imam.hussain@est.tech> Change-Id: I29907bdac83d3cadf90aa0a2ed538002132b4789
Diffstat (limited to 'catalog-ui/src/app/ng2/pages')
-rw-r--r--catalog-ui/src/app/ng2/pages/properties-assignment/properties-assignment.page.component.ts51
-rw-r--r--catalog-ui/src/app/ng2/pages/properties-assignment/services/properties.utils.ts33
-rw-r--r--catalog-ui/src/app/ng2/pages/properties-assignment/tosca-function/tosca-function.component.ts11
-rw-r--r--catalog-ui/src/app/ng2/pages/properties-assignment/tosca-function/tosca-get-function/tosca-get-function.component.ts35
4 files changed, 65 insertions, 65 deletions
diff --git a/catalog-ui/src/app/ng2/pages/properties-assignment/properties-assignment.page.component.ts b/catalog-ui/src/app/ng2/pages/properties-assignment/properties-assignment.page.component.ts
index 17bb1a63cc..0e3e13917a 100644
--- a/catalog-ui/src/app/ng2/pages/properties-assignment/properties-assignment.page.component.ts
+++ b/catalog-ui/src/app/ng2/pages/properties-assignment/properties-assignment.page.component.ts
@@ -585,6 +585,18 @@ export class PropertiesAssignmentComponent {
modal.instance.open();
}
+ private deleteToscaValue(valueJson : any, currentKey: string[]) {
+ if(currentKey.length == 1) {
+ if (Array.isArray(valueJson) && !isNaN(Number(currentKey[0]))) {
+ valueJson.splice(Number(currentKey[0]),1);
+ } else {
+ delete valueJson[currentKey[0]];
+ }
+ } else {
+ this.deleteToscaValue(valueJson[currentKey[0]],currentKey.splice(1,currentKey.length -1));
+ }
+ }
+
private clearCheckedInstancePropertyValue() {
const checkedInstanceProperty: PropertyBEModel = this.buildCheckedInstanceProperty();
const currentValue : any = checkedInstanceProperty.value;
@@ -594,37 +606,15 @@ export class PropertiesAssignmentComponent {
if (checkedInstanceProperty instanceof PropertyDeclareAPIModel && (<PropertyDeclareAPIModel>checkedInstanceProperty).propertiesName){
const propertiesNameArray = (<PropertyDeclareAPIModel>checkedInstanceProperty).propertiesName;
const parts = propertiesNameArray.split("#");
- let currentKey = [];
- if (this.isListOrMap(checkedInstanceProperty.type)) {
- if (checkedInstanceProperty.schemaType == PROPERTY_TYPES.MAP) {
- currentKey.push((<DerivedFEProperty>checkedInstanceProperty.input).parentMapKey);
- }
- currentKey.push((<DerivedFEProperty>checkedInstanceProperty.input).mapKey);
- if (checkedInstanceProperty.schemaType != PROPERTY_TYPES.MAP && this.isComplexSchemaType(checkedInstanceProperty.schemaType)) {
- currentKey.push(parts.reverse()[0]);
- }
- }
+ let currentKey = (<DerivedFEProperty>checkedInstanceProperty.input).toscaPath;
if (propertiesNameArray.length > 1){
const index = checkedInstanceProperty.subPropertyToscaFunctions.findIndex(existingSubPropertyToscaFunction => this.areEqual(existingSubPropertyToscaFunction.subPropertyPath, currentKey.length > 0 ? currentKey : parts.slice(1)));
checkedInstanceProperty.subPropertyToscaFunctions.splice(index, 1);
}
if(currentValue !== null && currentKey.length > 0){
let valueJson = JSON.parse(currentValue);
- if(currentKey.length >1){
- let innerObj = valueJson[currentKey[0]];
- delete innerObj[currentKey[1]];
- valueJson[currentKey[0]] = innerObj;
- }else{
- delete valueJson[currentKey[0]];
- }
- if (checkedInstanceProperty.type == PROPERTY_TYPES.LIST && currentKey.length == 1) {
- let listValue = valueJson.filter(function (item) {
- return item != null && item != '';
- });
- checkedInstanceProperty.value = JSON.stringify(listValue);
- } else {
- checkedInstanceProperty.value = JSON.stringify(valueJson);
- }
+ this.deleteToscaValue(valueJson, currentKey);
+ checkedInstanceProperty.value = JSON.stringify(valueJson);
}
}
if (this.selectedInstanceData instanceof ComponentInstance) {
@@ -648,16 +638,7 @@ export class PropertiesAssignmentComponent {
if (checkedProperty instanceof PropertyDeclareAPIModel && (<PropertyDeclareAPIModel>checkedProperty).propertiesName){
const propertiesName = (<PropertyDeclareAPIModel>checkedProperty).propertiesName;
const parts = propertiesName.split("#");
- let currentKey = [];
- if (this.isListOrMap(checkedProperty.type)) {
- if (checkedProperty.schemaType == PROPERTY_TYPES.MAP) {
- currentKey.push((<DerivedFEProperty>checkedProperty.input).parentMapKey);
- }
- currentKey.push((<DerivedFEProperty>checkedProperty.input).mapKey);
- if (checkedProperty.schemaType != PROPERTY_TYPES.MAP && this.isComplexSchemaType(checkedProperty.schemaType)) {
- currentKey.push(parts.reverse()[0]);
- }
- }
+ let currentKey = (<DerivedFEProperty>checkedProperty.input).toscaPath;
if (checkedProperty.subPropertyToscaFunctions == null){
checkedProperty.subPropertyToscaFunctions = [];
}
diff --git a/catalog-ui/src/app/ng2/pages/properties-assignment/services/properties.utils.ts b/catalog-ui/src/app/ng2/pages/properties-assignment/services/properties.utils.ts
index bc5345c386..8dd4ca96ec 100644
--- a/catalog-ui/src/app/ng2/pages/properties-assignment/services/properties.utils.ts
+++ b/catalog-ui/src/app/ng2/pages/properties-assignment/services/properties.utils.ts
@@ -105,15 +105,14 @@ export class PropertiesUtils {
newProps.push(parentProp);
if (!property.schema.property.isSimpleType) {
- let additionalChildren:Array<DerivedFEProperty> = this.createFlattenedChildren(property.schema.property.type, parentProp.propertiesName, key);
+ let additionalChildren:Array<DerivedFEProperty> = this.createFlattenedChildren(property.schema.property.type, parentProp.propertiesName, key, parentProp.toscaPath);
this.assignFlattenedChildrenValues(parentProp.valueObj, additionalChildren, parentProp.propertiesName);
additionalChildren.forEach(prop => {
prop.canBeDeclared = false;
if (property.subPropertyToscaFunctions != null) {
const subToscaFunctArray : SubPropertyToscaFunction[] = property.subPropertyToscaFunctions;
subToscaFunctArray.forEach(subToscaFunct => {
- const keyArray : string[] = subToscaFunct.subPropertyPath;
- if (keyArray.length > 1 && prop.mapKey == keyArray[0] && prop.name == keyArray[1]) {
+ if (subToscaFunct.subPropertyPath.toString() === prop.toscaPath.toString()) {
prop.toscaFunction = subToscaFunct.toscaFunction;
}
});
@@ -128,13 +127,15 @@ export class PropertiesUtils {
/**
* Creates derivedFEProperties of a specified type and returns them.
*/
- private createFlattenedChildren = (type: string, parentName: string, key: string):Array<DerivedFEProperty> => {
+ private createFlattenedChildren = (type: string, parentName: string, key: string, toscaPath?: string[]):Array<DerivedFEProperty> => {
let tempProps: Array<DerivedFEProperty> = [];
let dataTypeObj: DataTypeModel = this.dataTypeService.getDataTypeByTypeName(type);
- this.dataTypeService.getDerivedDataTypeProperties(dataTypeObj, tempProps, parentName);
- tempProps.forEach(tempDervObj => {
- tempDervObj.mapKey = key;
- });
+ this.dataTypeService.getDerivedDataTypeProperties(dataTypeObj, tempProps, parentName, toscaPath);
+ if (key != '') {
+ tempProps.forEach(tempDervObj => {
+ tempDervObj.mapKey = key;
+ });
+ }
return _.sortBy(tempProps, ['propertiesName']);
}
@@ -161,6 +162,16 @@ export class PropertiesUtils {
property.flattenedChildren.push(...this.createListOrMapChildren(lastCreatedChild, keyNested, nestedValue[keyNested]));
});
}
+ if (property.flattenedChildren && property.subPropertyToscaFunctions) {
+ property.flattenedChildren.forEach((prop, index) => {
+ property.subPropertyToscaFunctions.forEach(subPropertyToscaFunction => {
+ const toscaFunctionPath = subPropertyToscaFunction.subPropertyPath.join('#');
+ if (subPropertyToscaFunction.subPropertyPath.toString() === prop.toscaPath.toString()) {
+ prop.toscaFunction = subPropertyToscaFunction.toscaFunction;
+ }
+ });
+ });
+ }
});
} else if (property.derivedDataType === DerivedPropertyType.COMPLEX) {
property.flattenedChildren = this.createFlattenedChildren(property.type, property.name, "");
@@ -183,11 +194,11 @@ export class PropertiesUtils {
const subPropertyPath = prop.propertiesName.substring(prop.propertiesName.indexOf(topLevelPropertyName) + topLevelPropertyName.length + 1);
subPropertyToscaFunctions.forEach(subPropertyToscaFunction => {
const toscaFunctionPath = subPropertyToscaFunction.subPropertyPath.join('#');
- if (subPropertyPath === toscaFunctionPath){
+ if (subPropertyPath === toscaFunctionPath || subPropertyToscaFunction.subPropertyPath.toString() === prop.toscaPath.toString()) {
prop.toscaFunction = subPropertyToscaFunction.toscaFunction;
}
- })
- })
+ });
+ });
}
/*
diff --git a/catalog-ui/src/app/ng2/pages/properties-assignment/tosca-function/tosca-function.component.ts b/catalog-ui/src/app/ng2/pages/properties-assignment/tosca-function/tosca-function.component.ts
index 9ea0c8f214..d46ac2eb10 100644
--- a/catalog-ui/src/app/ng2/pages/properties-assignment/tosca-function/tosca-function.component.ts
+++ b/catalog-ui/src/app/ng2/pages/properties-assignment/tosca-function/tosca-function.component.ts
@@ -114,16 +114,7 @@ export class ToscaFunctionComponent implements OnInit, OnChanges {
if (this.property instanceof PropertyDeclareAPIModel && this.property.subPropertyToscaFunctions && (<PropertyDeclareAPIModel> this.property).propertiesName){
let propertiesPath = (<PropertyDeclareAPIModel> this.property).propertiesName.split("#");
if (propertiesPath.length > 1){
- let keyToFind = [];
- if (this.property.type == PROPERTY_TYPES.MAP || this.property.type == PROPERTY_TYPES.LIST) {
- if (this.property.type == PROPERTY_TYPES.LIST && this.property.schemaType == PROPERTY_TYPES.MAP) {
- keyToFind.push((<DerivedFEProperty>this.property.input).parentMapKey);
- }
- keyToFind.push((<DerivedFEProperty>this.property.input).mapKey);
- if (this.property.schemaType != PROPERTY_TYPES.MAP && PROPERTY_DATA.SIMPLE_TYPES.indexOf(this.property.schemaType) === -1) {
- keyToFind.push(propertiesPath.reverse()[0]);
- }
- }
+ let keyToFind = (<DerivedFEProperty>this.property.input).toscaPath;
let subPropertyToscaFunction = this.property.subPropertyToscaFunctions.find(subPropertyToscaFunction => this.areEqual(subPropertyToscaFunction.subPropertyPath, keyToFind.length > 0 ? keyToFind : propertiesPath.slice(1)));
if (subPropertyToscaFunction){
diff --git a/catalog-ui/src/app/ng2/pages/properties-assignment/tosca-function/tosca-get-function/tosca-get-function.component.ts b/catalog-ui/src/app/ng2/pages/properties-assignment/tosca-function/tosca-get-function/tosca-get-function.component.ts
index b0146cc1cf..656d7d6d71 100644
--- a/catalog-ui/src/app/ng2/pages/properties-assignment/tosca-function/tosca-get-function/tosca-get-function.component.ts
+++ b/catalog-ui/src/app/ng2/pages/properties-assignment/tosca-function/tosca-get-function/tosca-get-function.component.ts
@@ -264,11 +264,21 @@ export class ToscaGetFunctionComponent implements OnInit, OnChanges {
private propertyTypeToString() {
if (this.isSubProperty()){
- if ((this.typeHasSchema(this.property.type) && this.property instanceof PropertyDeclareAPIModel &&
- (<PropertyDeclareAPIModel> this.property).input instanceof DerivedFEProperty) || this.compositionMap) {
+ if ((this.property instanceof PropertyDeclareAPIModel && (<PropertyDeclareAPIModel> this.property).input instanceof DerivedFEProperty)
+ || this.compositionMap) {
if(this.isComplexType(this.property.schemaType) && !this.compositionMap){
- let propertySchemaType = (<PropertyDeclareAPIModel> this.property).input.type;
- return propertySchemaType == PROPERTY_TYPES.MAP ? PROPERTY_TYPES.STRING : propertySchemaType;
+ let mapChildProp : DerivedFEProperty = (<DerivedFEProperty> (<PropertyDeclareAPIModel> this.property).input);
+ let propertySchemaType = mapChildProp.type;
+ if (this.property.type == PROPERTY_TYPES.MAP || propertySchemaType == PROPERTY_TYPES.MAP) {
+ if (mapChildProp.mapKey != '' && mapChildProp.mapKey != null && mapChildProp.schema.property.type != null) {
+ propertySchemaType = mapChildProp.schema.property.type;
+ }
+ }
+ if ((propertySchemaType == PROPERTY_TYPES.MAP || (propertySchemaType == PROPERTY_TYPES.LIST && mapChildProp.schema.property.type == PROPERTY_TYPES.MAP))
+ && mapChildProp.isChildOfListOrMap) {
+ propertySchemaType = PROPERTY_TYPES.STRING;
+ }
+ return propertySchemaType;
}else{
return this.property.schema.property.type;
}
@@ -379,10 +389,13 @@ export class ToscaGetFunctionComponent implements OnInit, OnChanges {
private hasSameType(property: PropertyBEModel | AttributeBEModel): boolean {
if (this.typeHasSchema(this.property.type)) {
if ((this.property instanceof PropertyDeclareAPIModel && (<PropertyDeclareAPIModel> this.property).input instanceof DerivedFEProperty) || this.compositionMap) {
- if(this.isComplexType(this.property.schemaType) && !this.compositionMap){
- let propertySchemaType = (<PropertyDeclareAPIModel> this.property).input.type;
- propertySchemaType = propertySchemaType == PROPERTY_TYPES.MAP ? PROPERTY_TYPES.STRING : propertySchemaType;
- return property.type === propertySchemaType;
+ let childObject : DerivedFEProperty = (<DerivedFEProperty>(<PropertyDeclareAPIModel> this.property).input);
+ let childSchemaType = this.property.schemaType != null ? this.property.schemaType : childObject.type;
+ if(this.isComplexType(childSchemaType) && !this.compositionMap){
+ if (childObject.type == PROPERTY_TYPES.MAP && childObject.isChildOfListOrMap) {
+ return property.type === PROPERTY_TYPES.STRING;
+ }
+ return property.type === childObject.type;
}else{
return property.type === this.property.schema.property.type;
}
@@ -393,7 +406,11 @@ export class ToscaGetFunctionComponent implements OnInit, OnChanges {
return property.type === this.property.type && this.property.schema.property.type === property.schema.property.type;
}
if (this.property.schema.property.isDataType && this.property instanceof PropertyDeclareAPIModel && (<PropertyDeclareAPIModel>this.property).propertiesName){
- let typeToMatch = this.getType((<PropertyDeclareAPIModel>this.property).propertiesName.split("#").slice(1), this.property.type);
+ let typeToMatch = (<PropertyDeclareAPIModel> this.property).input.type;
+ let childObject : DerivedFEProperty = (<DerivedFEProperty>(<PropertyDeclareAPIModel> this.property).input);
+ if (childObject.type == PROPERTY_TYPES.MAP && childObject.isChildOfListOrMap) {
+ typeToMatch = PROPERTY_TYPES.STRING;
+ }
return property.type === typeToMatch;
}