diff options
author | aribeiro <anderson.ribeiro@est.tech> | 2021-11-18 10:29:39 +0000 |
---|---|---|
committer | Michael Morris <michael.morris@est.tech> | 2021-12-06 11:51:31 +0000 |
commit | d5edf5274286e9808dfabf2f49a03a1ba235b70c (patch) | |
tree | 7e746ee88b36b19bdd91fb1c55a0bf97d0bfbca7 /catalog-ui/src/app/ng2/pages | |
parent | fbc285a47209b763ef3bf7b64e7e0c6e3e1a5202 (diff) |
Add node filter with getInput function
Support get_input functions for creating node and substitution filters
Issue-ID: SDC-3793
Signed-off-by: aribeiro <anderson.ribeiro@est.tech>
Change-Id: Ie00f621be8418b4a9c88afcbbc07d80c22165e9b
Diffstat (limited to 'catalog-ui/src/app/ng2/pages')
4 files changed, 113 insertions, 61 deletions
diff --git a/catalog-ui/src/app/ng2/pages/composition/panel/panel-tabs/substitution-filter-tab/substitution-filter-tab.component.html b/catalog-ui/src/app/ng2/pages/composition/panel/panel-tabs/substitution-filter-tab/substitution-filter-tab.component.html index c8845deece..a9fad5a733 100644 --- a/catalog-ui/src/app/ng2/pages/composition/panel/panel-tabs/substitution-filter-tab/substitution-filter-tab.component.html +++ b/catalog-ui/src/app/ng2/pages/composition/panel/panel-tabs/substitution-filter-tab/substitution-filter-tab.component.html @@ -23,8 +23,9 @@ <substitution-filter [compositeService]="metaData" [currentServiceInstance]="component" - [selectedInstanceProperties]="selectedInstanceProperties" - [selectedInstanceSiblings]="selectedInstanceSiblings" + [parentServiceProperties]="parentServiceProperties" + [parentServiceInputs]="parentServiceInputs" + [selectedInstanceProperties]="parentServiceProperties" [selectedInstanceConstraints]="selectedInstanceConstraints" [readonly]="isViewOnly" (hasSubstitutionFilter)="notifyDependencyEventsObserver($event)" diff --git a/catalog-ui/src/app/ng2/pages/composition/panel/panel-tabs/substitution-filter-tab/substitution-filter-tab.component.ts b/catalog-ui/src/app/ng2/pages/composition/panel/panel-tabs/substitution-filter-tab/substitution-filter-tab.component.ts index c4101ab2bc..bf8d1e43b1 100644 --- a/catalog-ui/src/app/ng2/pages/composition/panel/panel-tabs/substitution-filter-tab/substitution-filter-tab.component.ts +++ b/catalog-ui/src/app/ng2/pages/composition/panel/panel-tabs/substitution-filter-tab/substitution-filter-tab.component.ts @@ -21,7 +21,7 @@ import { Component, Input } from '@angular/core'; import { Store } from '@ngxs/store'; import { Component as TopologyTemplate, - FullComponentInstance, + FullComponentInstance, InputBEModel, PropertiesGroup, PropertyBEModel, } from 'app/models'; @@ -47,7 +47,8 @@ export class SubstitutionFilterTabComponent { selectedInstanceSiblings: ServiceInstanceObject[]; componentInstancesConstraints: any[]; selectedInstanceConstraints: ConstraintObject[]; - selectedInstanceProperties: PropertyBEModel[]; + parentServiceProperties: PropertyBEModel[]; + parentServiceInputs: InputBEModel[]; componentInstanceProperties: PropertiesGroup; metaData: ComponentMetadata; @@ -85,21 +86,11 @@ export class SubstitutionFilterTabComponent { } private initInstancesWithProperties = (): void => { - this.topologyTemplateService.getComponentPropertiesSubstitutionFilter(this.metaData.componentType, this.metaData.uniqueId).subscribe((genericResponse: ComponentGenericResponse) => { - this.selectedInstanceProperties = genericResponse.properties; - this.updateInstanceAttributes(); + this.topologyTemplateService.getComponentPropertiesAndInputsForSubstitutionFilter(this.metaData.componentType, this.metaData.uniqueId) + .subscribe((genericResponse: ComponentGenericResponse) => { + this.parentServiceProperties = genericResponse.properties; + this.parentServiceInputs = genericResponse.inputs; }); } - private updateInstanceAttributes = (): void => { - if (this.isComponentInstanceSelected && this.componentInstanceProperties) { - const instancesMappedList = this.compositionService.componentInstances.map((coInstance) => new ServiceInstanceObject({ - id: coInstance.uniqueId, - name: coInstance.name, - properties: this.componentInstanceProperties[coInstance.uniqueId] || [] - })); - this.selectedInstanceProperties = this.componentInstanceProperties[this.component.uniqueId]; - this.selectedInstanceSiblings = instancesMappedList.filter((coInstance) => coInstance.id !== this.component.uniqueId); - } - } } diff --git a/catalog-ui/src/app/ng2/pages/service-dependencies-editor/service-dependencies-editor.component.html b/catalog-ui/src/app/ng2/pages/service-dependencies-editor/service-dependencies-editor.component.html index f84214e4ce..8a577aef77 100644 --- a/catalog-ui/src/app/ng2/pages/service-dependencies-editor/service-dependencies-editor.component.html +++ b/catalog-ui/src/app/ng2/pages/service-dependencies-editor/service-dependencies-editor.component.html @@ -6,7 +6,7 @@ <div class="i-sdc-form-content"> <div class="rule-builder-content"> <div class="i-sdc-form-item rule-input-field"> - <label class="i-sdc-form-label required">Service {{currentServiceName}} Property</label> + <label class="i-sdc-form-label required">{{currentServiceName}} Property</label> <ui-element-dropdown class="i-sdc-form-select" data-tests-id="servicePropertyName" @@ -21,9 +21,15 @@ </div> <div class="i-sdc-form-item rule-input-field"> + <label class="i-sdc-form-label required" >Function Type</label> + <ui-element-dropdown class="i-sdc-form-select" data-tests-id="functionType" [values]="functionTypes" [(value)]="currentRule.sourceType" (change)="onSelectFunctionType()"></ui-element-dropdown> + </div> + + <div class="i-sdc-form-item rule-input-field" *ngIf="isPropertyFunctionSelected()"> <label class="i-sdc-form-label required" >Source</label> - <ui-element-dropdown class="i-sdc-form-select" data-tests-id="sourceType" [values]="sourceTypes" [(value)]="currentRule.sourceName" (change)="onSelectSourceType($event)"></ui-element-dropdown> + <ui-element-dropdown class="i-sdc-form-select" data-tests-id="sourceType" [values]="sourceTypes" [(value)]="currentRule.sourceName" (change)="onSelectSourceType()"></ui-element-dropdown> </div> + <div [ngClass]="isComplexListMapType() && isStaticSource() ? 'complex-input-field' : ''" class="rule-input-field assigned-value-field"> <label class="i-sdc-form-label required" >{{assignedValueLabel}}</label> diff --git a/catalog-ui/src/app/ng2/pages/service-dependencies-editor/service-dependencies-editor.component.ts b/catalog-ui/src/app/ng2/pages/service-dependencies-editor/service-dependencies-editor.component.ts index cb3e87c8d1..c6b3b65512 100644 --- a/catalog-ui/src/app/ng2/pages/service-dependencies-editor/service-dependencies-editor.component.ts +++ b/catalog-ui/src/app/ng2/pages/service-dependencies-editor/service-dependencies-editor.component.ts @@ -56,6 +56,7 @@ export class ServiceDependenciesEditorComponent { compositeServiceName: string, currentServiceName: string, parentServiceInputs: InputBEModel[], + parentServiceProperties: PropertyBEModel[]; selectedInstanceProperties: PropertyBEModel[], operatorTypes: DropdownValue[], selectedInstanceSiblings: ServiceInstanceObject[] @@ -65,6 +66,7 @@ export class ServiceDependenciesEditorComponent { selectedPropertyObj: PropertyFEModel; ddValueSelectedServicePropertiesNames: DropdownValue[]; operatorTypes: DropdownValue[]; + functionTypes: DropdownValue[]; sourceTypes: UIDropDownSourceTypesElement[] = []; currentRule: ConstraintObjectUI; currentIndex: number; @@ -75,7 +77,8 @@ export class ServiceDependenciesEditorComponent { SOURCE_TYPES = { STATIC: {label: 'Static', value: 'static'}, - SERVICE_PROPERTY: {label: 'Service Property', value: 'property'} + SERVICE_PROPERTY: {label: 'Service Property', value: 'property'}, + SERVICE_INPUT: {label: 'Service Input', value: 'service_input'} }; constructor(private propertiesUtils: PropertiesUtils) {} @@ -83,6 +86,19 @@ export class ServiceDependenciesEditorComponent { ngOnInit() { this.currentIndex = this.input.serviceRuleIndex; this.serviceRulesList = this.input.serviceRules; + this.initCurrentRule(); + this.currentServiceName = this.input.currentServiceName; + this.operatorTypes = this.input.operatorTypes; + this.selectedServiceProperties = this.input.selectedInstanceProperties; + this.ddValueSelectedServicePropertiesNames = _.map(this.input.selectedInstanceProperties, (prop) => new DropdownValue(prop.name, prop.name)); + this.initFunctionTypes(); + if (this.SOURCE_TYPES.STATIC.value !== this.currentRule.sourceType) { + this.loadSourceTypesData(); + } + this.syncRuleData(); + } + + private initCurrentRule() { this.currentRule = this.serviceRulesList && this.input.serviceRuleIndex >= 0 ? this.serviceRulesList[this.input.serviceRuleIndex] : new ConstraintObjectUI({ @@ -91,39 +107,73 @@ export class ServiceDependenciesEditorComponent { value: '', constraintOperator: OPERATOR_TYPES.EQUAL }); - this.currentServiceName = this.input.currentServiceName; - this.operatorTypes = this.input.operatorTypes; - this.selectedServiceProperties = this.input.selectedInstanceProperties; - this.ddValueSelectedServicePropertiesNames = _.map(this.input.selectedInstanceProperties, (prop) => new DropdownValue(prop.name, prop.name)); - this.initSourceTypes(); - this.syncRuleData(); + if (this.currentRule && this.currentRule.sourceType === this.SOURCE_TYPES.SERVICE_INPUT.value) { + this.currentRule.sourceName = this.input.compositeServiceName; + } + } + + private initFunctionTypes() { + this.functionTypes = [ + {label: this.SOURCE_TYPES.STATIC.label, value: this.SOURCE_TYPES.STATIC.value}, + {label: this.SOURCE_TYPES.SERVICE_PROPERTY.label, value: this.SOURCE_TYPES.SERVICE_PROPERTY.value}, + {label: this.SOURCE_TYPES.SERVICE_INPUT.label, value: this.SOURCE_TYPES.SERVICE_INPUT.value}]; + } + + onServicePropertyChanged() { + this.updateSelectedPropertyObj(); + this.updateOperatorTypesList(); + this.currentRule.sourceName = ""; + this.currentRule.value = ""; + } + + onSelectFunctionType() { + this.currentRule.value = ""; + this.currentRule.sourceName = ""; + this.listOfValuesToAssign = []; + this.currentRule.sourceType = this.updateCurrentSourceType(this.currentRule.sourceType); + this.loadSourceTypesData(); this.updateSourceTypesRelatedValues(); } - initSourceTypes() { - this.sourceTypes.push({ - label: this.SOURCE_TYPES.STATIC.label, - value: this.SOURCE_TYPES.STATIC.value, - options: [], - assignedLabel: this.SOURCE_TYPES.STATIC.label, - type: this.SOURCE_TYPES.STATIC.value - }); + onSelectSourceType() { + this.currentRule.value = ""; + this.updateSourceTypesRelatedValues(); + } + + loadSourceTypesData() { + this.sourceTypes = []; this.sourceTypes.push({ label: this.input.compositeServiceName, value: this.input.compositeServiceName, - assignedLabel: this.SOURCE_TYPES.SERVICE_PROPERTY.label, - type: this.SOURCE_TYPES.SERVICE_PROPERTY.value, - options: this.input.parentServiceInputs + assignedLabel: this.currentRule.sourceType == this.SOURCE_TYPES.SERVICE_PROPERTY.value + ? this.SOURCE_TYPES.SERVICE_PROPERTY.label : this.SOURCE_TYPES.SERVICE_INPUT.label, + type: this.currentRule.sourceType == this.SOURCE_TYPES.SERVICE_PROPERTY.value + ? this.SOURCE_TYPES.SERVICE_PROPERTY.value : this.SOURCE_TYPES.SERVICE_INPUT.value, + options: this.loadSourceTypeBySelectedFunction().get(this.currentRule.sourceType) }); - _.forEach(this.input.selectedInstanceSiblings, (sib) => - this.sourceTypes.push({ - label: sib.name, - value: sib.name, - options: sib.properties || [], - assignedLabel: this.SOURCE_TYPES.SERVICE_PROPERTY.label, - type: this.SOURCE_TYPES.SERVICE_PROPERTY.value - }) - ); + + if (this.currentRule.sourceType === this.SOURCE_TYPES.SERVICE_INPUT.value) { + this.currentRule.sourceName = this.input.compositeServiceName; + } else { + if (this.input.selectedInstanceSiblings && this.isPropertyFunctionSelected) { + _.forEach(this.input.selectedInstanceSiblings, (sib) => + this.sourceTypes.push({ + label: sib.name, + value: sib.name, + options: sib.properties || [], + assignedLabel: this.SOURCE_TYPES.SERVICE_PROPERTY.label, + type: this.SOURCE_TYPES.SERVICE_PROPERTY.value + }) + ); + } + } + } + + loadSourceTypeBySelectedFunction = (): any => { + let parentDataMap = new Map(); + parentDataMap.set(this.SOURCE_TYPES.SERVICE_PROPERTY.value, this.input.parentServiceProperties); + parentDataMap.set(this.SOURCE_TYPES.SERVICE_INPUT.value , this.input.parentServiceInputs); + return parentDataMap; } syncRuleData() { @@ -151,6 +201,7 @@ export class ServiceDependenciesEditorComponent { (t) => t.value === this.currentRule.sourceName && t.type === this.currentRule.sourceType ); if (selectedSourceType) { + this.listOfSourceOptions = []; this.listOfSourceOptions = selectedSourceType.options || []; this.assignedValueLabel = selectedSourceType.assignedLabel || this.SOURCE_TYPES.STATIC.label; this.filterOptionsByType(); @@ -166,19 +217,15 @@ export class ServiceDependenciesEditorComponent { } } - onServicePropertyChanged() { - this.currentRule.value = ''; - this.updateSelectedPropertyObj(); - this.updateOperatorTypesList(); - this.filterOptionsByType(); - } - - onSelectSourceType() { - this.currentRule.value = ''; - this.currentRule.sourceType = this.currentRule.sourceName === this.SOURCE_TYPES.STATIC.value ? - this.SOURCE_TYPES.STATIC.value : - this.SOURCE_TYPES.SERVICE_PROPERTY.value; - this.updateSourceTypesRelatedValues(); + private updateCurrentSourceType = (sourceType: string): string => { + switch (sourceType) { + case this.SOURCE_TYPES.STATIC.value: + return this.SOURCE_TYPES.STATIC.value; + case this.SOURCE_TYPES.SERVICE_PROPERTY.value: + return this.SOURCE_TYPES.SERVICE_PROPERTY.value; + case this.SOURCE_TYPES.SERVICE_INPUT.value: + return this.SOURCE_TYPES.SERVICE_INPUT.value; + } } filterOptionsByType() { @@ -214,7 +261,9 @@ export class ServiceDependenciesEditorComponent { newProp.value = JSON.stringify(this.currentRule.value); this.propertiesUtils.initValueObjectRef(newProp); console.log("TEST" + newProp.value); - setTimeout(() => {this.selectedPropertyObj = newProp}) + setTimeout(() => { + this.selectedPropertyObj = newProp}) + this.selectedPropertyObj = newProp; } } @@ -222,6 +271,10 @@ export class ServiceDependenciesEditorComponent { return this.currentRule.sourceType === this.SOURCE_TYPES.STATIC.value } + isPropertyFunctionSelected(): boolean { + return this.currentRule.sourceType === this.SOURCE_TYPES.SERVICE_PROPERTY.value; + } + isComplexListMapType(): boolean { return this.selectedPropertyObj && this.selectedPropertyObj.derivedDataType > 0; } @@ -231,4 +284,5 @@ export class ServiceDependenciesEditorComponent { this.currentRule.value = JSON.stringify(value); this.onValueChange(this.selectedPropertyObj.valueObjIsValid); } + } |