From 7e08a2976d34066412af14fe633eecde3ce19fc7 Mon Sep 17 00:00:00 2001 From: imamSidero Date: Mon, 5 Dec 2022 14:13:39 +0000 Subject: Provide tosca function to List entries Providing the capability to add tosca function as the List entries Issue-ID: SDC-4288 Signed-off-by: Imam hussain Change-Id: Ib2e11945f76b7004dbf8807274ee6333b9d9aa05 --- .../properties-inputs/derived-fe-property.ts | 14 ++++++++++++-- .../dynamic-property.component.html | 4 ++-- .../dynamic-property.component.less | 8 +++++++- .../dynamic-property/dynamic-property.component.ts | 22 ++++++++++------------ .../properties-table.component.less | 2 +- .../properties-assignment.page.component.ts | 19 +++++++++++++++---- .../tosca-function/tosca-function.component.ts | 2 +- .../tosca-get-function.component.ts | 4 ++-- 8 files changed, 50 insertions(+), 25 deletions(-) (limited to 'catalog-ui/src/app') 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 7d832c5193..60d2726575 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 @@ -55,7 +55,7 @@ export class DerivedFEProperty extends PropertyBEModel { this.canBeDeclared = true; //defaults to true } else { //creating a direct child of list or map (ie. Item that can be deleted, with UUID instead of name) super(null); - if(property.type === PROPERTY_TYPES.MAP && property.subPropertyToscaFunctions != null){ + if(property.subPropertyToscaFunctions != null){ property.subPropertyToscaFunctions.forEach((item : SubPropertyToscaFunction) => { if(item.subPropertyPath[0] === key){ this.toscaFunction = item.toscaFunction; @@ -69,7 +69,17 @@ export class DerivedFEProperty extends PropertyBEModel { this.propertiesName = parentName + '#' + this.name; if (property.type == PROPERTY_TYPES.LIST) { - this.mapKey = property.schema.property.type.split('.').pop(); + if(property.value != null) { + const valueJson = JSON.parse(property.value); + if (key != '') { + this.mapKey = key; + }else{ + let indexNumber = Number(Object.keys(valueJson).sort().reverse()[0]) + 1; + this.mapKey = indexNumber.toString(); + } + }else { + this.mapKey = "0"; + } this.mapKeyError = null; this.type = property.schema.property.type; if (this.type == PROPERTY_TYPES.MAP){ diff --git a/catalog-ui/src/app/ng2/components/logic/properties-table/dynamic-property/dynamic-property.component.html b/catalog-ui/src/app/ng2/components/logic/properties-table/dynamic-property/dynamic-property.component.html index 2431a70536..d79c6dbb08 100644 --- a/catalog-ui/src/app/ng2/components/logic/properties-table/dynamic-property/dynamic-property.component.html +++ b/catalog-ui/src/app/ng2/components/logic/properties-table/dynamic-property/dynamic-property.component.html @@ -43,7 +43,7 @@
- +
- + Add value to list Add value to map diff --git a/catalog-ui/src/app/ng2/components/logic/properties-table/dynamic-property/dynamic-property.component.less b/catalog-ui/src/app/ng2/components/logic/properties-table/dynamic-property/dynamic-property.component.less index 4d2cc89dfe..6b0f445006 100644 --- a/catalog-ui/src/app/ng2/components/logic/properties-table/dynamic-property/dynamic-property.component.less +++ b/catalog-ui/src/app/ng2/components/logic/properties-table/dynamic-property/dynamic-property.component.less @@ -83,7 +83,13 @@ } .inline-checkBox { float: left; - width: 7%; + width: 9%; margin-left: -5px; margin-top: 4px; } +.inline-checkBox-List { + float: left; + width: 5%; + margin-left: 0; + margin-top: 4px; +} diff --git a/catalog-ui/src/app/ng2/components/logic/properties-table/dynamic-property/dynamic-property.component.ts b/catalog-ui/src/app/ng2/components/logic/properties-table/dynamic-property/dynamic-property.component.ts index 57b991bf70..edcbd43e27 100644 --- a/catalog-ui/src/app/ng2/components/logic/properties-table/dynamic-property/dynamic-property.component.ts +++ b/catalog-ui/src/app/ng2/components/logic/properties-table/dynamic-property/dynamic-property.component.ts @@ -171,7 +171,6 @@ export class DynamicPropertyComponent { this.expandChildById(newProps[0].propertiesName); this.updateMapKeyValueOnMainParent(newProps); - this.emitter.emit(); } } @@ -219,23 +218,22 @@ export class DynamicPropertyComponent { if (!itemParent) { return; } - + const oldKey = item.getActualMapKey(); + 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; + } 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); diff --git a/catalog-ui/src/app/ng2/components/logic/properties-table/properties-table.component.less b/catalog-ui/src/app/ng2/components/logic/properties-table/properties-table.component.less index 8c2c6ce940..b5abcb3451 100644 --- a/catalog-ui/src/app/ng2/components/logic/properties-table/properties-table.component.less +++ b/catalog-ui/src/app/ng2/components/logic/properties-table/properties-table.component.less @@ -2,7 +2,7 @@ @import '../../../../../assets/styles/sprite'; @smaller-screen: ~"only screen and (max-width: 1580px)"; -:host /deep/ input { width:100%;} +:host /deep/ input { width:96%;} .properties-table { display:flex; 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 767acb41a7..2bf1b1076b 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 @@ -580,22 +580,33 @@ export class PropertiesAssignmentComponent { private clearCheckedInstancePropertyValue() { const checkedInstanceProperty: PropertyBEModel = this.buildCheckedInstanceProperty(); - let currentValue = checkedInstanceProperty.value; + const currentValue : any = checkedInstanceProperty.value; checkedInstanceProperty.getInputValues = null; checkedInstanceProperty.value = null; checkedInstanceProperty.toscaFunction = null; if (checkedInstanceProperty instanceof PropertyDeclareAPIModel && (checkedInstanceProperty).propertiesName){ const propertiesNameArray = (checkedInstanceProperty).propertiesName; const parts = propertiesNameArray.split("#"); - const currentKey = checkedInstanceProperty.type === PROPERTY_TYPES.MAP ? (checkedInstanceProperty.input).mapKey : null; + const currentKey = (checkedInstanceProperty.type == PROPERTY_TYPES.MAP || checkedInstanceProperty.type == PROPERTY_TYPES.LIST) ? (checkedInstanceProperty.input).mapKey : null; if (propertiesNameArray.length > 1){ const index = checkedInstanceProperty.subPropertyToscaFunctions.findIndex(existingSubPropertyToscaFunction => this.areEqual(existingSubPropertyToscaFunction.subPropertyPath, currentKey != null ? [currentKey] : parts.slice(1))); checkedInstanceProperty.subPropertyToscaFunctions.splice(index, 1); } if(currentValue !== null && currentKey !== null){ let valueJson = JSON.parse(currentValue); + let tempValue = valueJson[currentKey]; delete valueJson[currentKey]; - checkedInstanceProperty.value = JSON.stringify(valueJson); + if (checkedInstanceProperty.type == PROPERTY_TYPES.LIST) { + let listValue = []; + valueJson.forEach(item => { + if (item != null && item != '' && item != tempValue) { + listValue.push(item); + } + }); + checkedInstanceProperty.value = JSON.stringify(listValue); + } else { + checkedInstanceProperty.value = JSON.stringify(valueJson); + } } } if (this.selectedInstanceData instanceof ComponentInstance) { @@ -612,7 +623,7 @@ export class PropertiesAssignmentComponent { if (checkedProperty instanceof PropertyDeclareAPIModel && (checkedProperty).propertiesName){ const propertiesName = (checkedProperty).propertiesName; const parts = propertiesName.split("#"); - const currentKey = checkedProperty.type === PROPERTY_TYPES.MAP ? (checkedProperty.input).mapKey : null; + const currentKey = (checkedProperty.type == PROPERTY_TYPES.MAP || checkedProperty.type == PROPERTY_TYPES.LIST) ? (checkedProperty.input).mapKey : null; if (checkedProperty.subPropertyToscaFunctions == null){ checkedProperty.subPropertyToscaFunctions = []; } 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 bc73796672..0198dfd760 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 @@ -101,7 +101,7 @@ export class ToscaFunctionComponent implements OnInit, OnChanges { if (this.property instanceof PropertyDeclareAPIModel && this.property.subPropertyToscaFunctions && ( this.property).propertiesName){ let propertiesPath = ( this.property).propertiesName.split("#"); if (propertiesPath.length > 1){ - let keyToFind = this.property.type === PROPERTY_TYPES.MAP ? [(this.property.input).mapKey] : propertiesPath.slice(1); + let keyToFind = (this.property.type == PROPERTY_TYPES.MAP || this.property.type == PROPERTY_TYPES.LIST) ? [(this.property.input).mapKey] : propertiesPath.slice(1); let subPropertyToscaFunction = this.property.subPropertyToscaFunctions.find(subPropertyToscaFunction => this.areEqual(subPropertyToscaFunction.subPropertyPath, keyToFind !== null ? 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 0757e3d361..46541cf355 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 @@ -261,7 +261,7 @@ export class ToscaGetFunctionComponent implements OnInit, OnChanges { } private propertyTypeToString() { - if (this.isSubProperty() && this.property.type != PROPERTY_TYPES.MAP){ + if (this.isSubProperty() && this.property.type != PROPERTY_TYPES.MAP && this.property.type != PROPERTY_TYPES.LIST){ return this.getType((this.property).propertiesName.split("#").slice(1), this.property.type); } if (this.property.schemaType) { @@ -367,7 +367,7 @@ export class ToscaGetFunctionComponent implements OnInit, OnChanges { private hasSameType(property: PropertyBEModel | AttributeBEModel): boolean { if (this.typeHasSchema(this.property.type)) { - if(this.property.type === PROPERTY_TYPES.MAP && this.property instanceof PropertyDeclareAPIModel && ( this.property).input instanceof DerivedFEProperty){ + if ((this.property.type === PROPERTY_TYPES.MAP || this.property.type === PROPERTY_TYPES.LIST) && this.property instanceof PropertyDeclareAPIModel && ( this.property).input instanceof DerivedFEProperty) { return property.type === this.property.schema.property.type; } if (!property.schema || !property.schema.property) { -- cgit 1.2.3-korg