diff options
10 files changed, 216 insertions, 129 deletions
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/utils/NodeFilterConverter.java b/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/utils/NodeFilterConverter.java index cab7d53cd7..d1e22f9fa2 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/utils/NodeFilterConverter.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/utils/NodeFilterConverter.java @@ -21,6 +21,9 @@ import java.util.Map; import java.util.stream.Collectors; import org.openecomp.sdc.be.datamodel.utils.ConstraintConvertor; import org.openecomp.sdc.be.datatypes.elements.CINodeFilterDataDefinition; +import org.openecomp.sdc.be.datatypes.elements.ListDataDefinition; +import org.openecomp.sdc.be.datatypes.elements.RequirementNodeFilterCapabilityDataDefinition; +import org.openecomp.sdc.be.datatypes.elements.RequirementNodeFilterPropertyDataDefinition; import org.openecomp.sdc.be.ui.model.UIConstraint; import org.openecomp.sdc.be.ui.model.UINodeFilter; @@ -31,17 +34,31 @@ public class NodeFilterConverter { return inMap.entrySet().stream().collect(Collectors.toMap(Map.Entry::getKey, o -> convertToUi(o.getValue()))); } - public UINodeFilter convertToUi(CINodeFilterDataDefinition inNodeFilter) { - UINodeFilter retVal = new UINodeFilter(); + public UINodeFilter convertToUi(final CINodeFilterDataDefinition inNodeFilter) { + final UINodeFilter uiNodeFilter = new UINodeFilter(); final ConstraintConvertor constraintConvertor = new ConstraintConvertor(); - if (inNodeFilter.getProperties() == null || inNodeFilter.getProperties().isEmpty()) { - return retVal; + final ListDataDefinition<RequirementNodeFilterPropertyDataDefinition> nodeFilterProperties = + inNodeFilter.getProperties(); + if (nodeFilterProperties != null && !nodeFilterProperties.isEmpty()) { + final List<UIConstraint> propertiesConstraint = nodeFilterProperties.getListToscaDataDefinition() + .stream() + .map(property -> property.getConstraints().iterator().next()) + .map(constraintConvertor::convert) + .collect(Collectors.toList()); + uiNodeFilter.setProperties(propertiesConstraint); } - List<UIConstraint> constraints = inNodeFilter.getProperties().getListToscaDataDefinition().stream() - .map(property -> property.getConstraints().iterator().next()) - .map(constraintConvertor::convert) - .collect(Collectors.toList()); - retVal.setProperties(constraints); - return retVal; + final ListDataDefinition<RequirementNodeFilterCapabilityDataDefinition> nodeFilterCapabilities = + inNodeFilter.getCapabilities(); + if (nodeFilterCapabilities != null && !nodeFilterCapabilities.isEmpty()) { + final List<UIConstraint> capabilitiesConstraint = nodeFilterCapabilities.getListToscaDataDefinition() + .stream() + .map(capabilities -> capabilities.getProperties().getListToscaDataDefinition().iterator().next()) + .map(property -> property.getConstraints().iterator().next()) + .map(constraintConvertor::convert) + .collect(Collectors.toList()); + uiNodeFilter.setCapabilities(capabilitiesConstraint); + } + + return uiNodeFilter; } } diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/ui/model/UINodeFilter.java b/catalog-model/src/main/java/org/openecomp/sdc/be/ui/model/UINodeFilter.java index 84df74c47f..92eb9e5127 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/ui/model/UINodeFilter.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/ui/model/UINodeFilter.java @@ -24,5 +24,5 @@ import lombok.Setter; public class UINodeFilter { private List<UIConstraint> properties; - + private List<UIConstraint> capabilities; } diff --git a/catalog-ui/src/app/ng2/components/logic/service-dependencies/service-dependencies.component.html b/catalog-ui/src/app/ng2/components/logic/service-dependencies/service-dependencies.component.html index 4238a4e96f..c3d4817a39 100644 --- a/catalog-ui/src/app/ng2/components/logic/service-dependencies/service-dependencies.component.html +++ b/catalog-ui/src/app/ng2/components/logic/service-dependencies/service-dependencies.component.html @@ -1,6 +1,6 @@ <div class="service-dependencies"> <loader [display]="isLoading" [size]="'medium'" [relative]="true"></loader> - <div *ngIf="!isDependent" class="checkbox-label-mark-as-dependent"> + <div *ngIf="!isDependent" class="checkbox-label-mark-as-dependent"> <select name="singleSelect" id="singleSelect" ng-model="data.singleSelect" (change)='onOptionsSelected($event)'> <option>Select Directive</option> @@ -11,34 +11,77 @@ <div *ngIf="isDependent" class="checkbox-label-mark-as-dependent"> <label class="i-sdc-form-label">Directive: {{getActualDirectiveValue().toUpperCase()}}</label> <span class="sprite-new delete-btn delete-icon" - (click)="onRemoveDirective()" data-tests-id="delete-input-button"> + (click)="onRemoveDirective()" data-tests-id="delete-input-button"> </span> </div> - <div class="i-sdc-designer-sidebar-section-content-item-rules-section" *ngIf="isDependent"> + <div *ngIf="isDependent"> + <div class="w-sdc-designer-sidebar-section"> + <sdc-accordion [title]="'Node Filter Capabilities'" [arrow-direction]="'right'" [open]="true"> + <div class="i-sdc-designer-sidebar-section-content-node-filter-section"> - <div class="i-sdc-designer-sidebar-section-content-item-rule" [ngClass]="{'hand': !readonly}" - *ngFor="let constraint of constraintObjects; let i = index"> - <div class="rule-details" [ngClass]="{'readonly': readonly}"> - <div class="rule-desc" (click)="!readonly && onSelectRule(i)" tooltips - tooltip="{{constraint.servicePropertyName + ' ' + getSymbol(constraint.constraintOperator) + ' ' - + (constraint.sourceName ? constraint.sourceName + ':' : '') + constraint.value}}"> - {{constraint.servicePropertyName + ' ' + getSymbol(constraint.constraintOperator) + ' ' - + (constraint.sourceName ? constraint.sourceName + ':' : '') + constraint.value}} + <div class="i-sdc-designer-sidebar-section-content-node-filter" + [ngClass]="{'hand': !readonly}" + *ngFor="let capability of constraintCapabilities; let i = index"> + <div class="filter-details" [ngClass]="{'readonly': readonly}"> + <div class="filter-desc" (click)="!readonly && onSelectNodeFilter(capabilities, i)" + tooltips + tooltip="{{capability.servicePropertyName + ' ' + getSymbol(capability.constraintOperator) + ' ' + + (capability.sourceName ? capability.sourceName + ':' : '') + capability.value}}"> + {{capability.servicePropertyName + ' ' + getSymbol(capability.constraintOperator) + + ' ' + + (capability.sourceName ? capability.sourceName + ':' : '') + capability.value}} + </div> + <span *ngIf="!readonly" class="sprite-new delete-btn delete-icon" + (click)="openDeleteModal(capabilities, i)" + data-tests-id="delete-input-button"></span> + </div> + </div> + + <div class="w-sdc-designer-sidebar-section-node-filter-footer"> + <button + class="w-sdc-designer-sidebar-section-node-filter-footer-action add-rule-btn tlv-btn blue" + data-tests-id="add-rule-button" + (click)="onAddNodeFilter(capabilities)" + [disabled]="readonly"> + {{'DIRECTIVES_AND_NODE_FILTER_ADD_NODE_FILTER' | translate}} + </button> + </div> </div> - <span *ngIf="!readonly" class="sprite-new delete-btn delete-icon" - (click)="openDeleteModal(i)" data-tests-id="delete-input-button"></span> - </div> - </div> + </sdc-accordion> + + <sdc-accordion [title]="'Node Filter Properties'" [arrow-direction]="'right'" [open]="true"> + <div class="i-sdc-designer-sidebar-section-content-node-filter-section"> - <div class="w-sdc-designer-sidebar-section-footer"> - <button - class="w-sdc-designer-sidebar-section-footer-action add-rule-btn tlv-btn blue" - data-tests-id="add-rule-button" - (click)="onAddRule()" - [disabled]="readonly"> - {{'DIRECTIVES_AND_NODE_FILTER_ADD_NODE_FILTER' | translate}} - </button> + <div class="i-sdc-designer-sidebar-section-content-node-filter" + [ngClass]="{'hand': !readonly}" + *ngFor="let property of constraintProperties; let i = index"> + <div class="filter-details" [ngClass]="{'readonly': readonly}"> + <div class="filter-desc" (click)="!readonly && onSelectNodeFilter(properties, i)" + tooltips + tooltip="{{property.servicePropertyName + ' ' + getSymbol(property.constraintOperator) + ' ' + + (property.sourceName ? property.sourceName + ':' : '') + property.value}}"> + {{property.servicePropertyName + ' ' + getSymbol(property.constraintOperator) + + ' ' + + (property.sourceName ? property.sourceName + ':' : '') + property.value}} + </div> + <span *ngIf="!readonly" class="sprite-new delete-btn delete-icon" + (click)="openDeleteModal(properties, i)" + data-tests-id="delete-input-button"></span> + </div> + </div> + + <div class="w-sdc-designer-sidebar-section-node-filter-footer"> + <button + class="w-sdc-designer-sidebar-section-node-filter-footer-action add-rule-btn tlv-btn blue" + data-tests-id="add-rule-button" + (click)="onAddNodeFilter(properties)" + [disabled]="readonly"> + {{'DIRECTIVES_AND_NODE_FILTER_ADD_NODE_FILTER' | translate}} + </button> + </div> + </div> + </sdc-accordion> </div> </div> </div> diff --git a/catalog-ui/src/app/ng2/components/logic/service-dependencies/service-dependencies.component.less b/catalog-ui/src/app/ng2/components/logic/service-dependencies/service-dependencies.component.less index 21c2b3aadc..00be76c8ca 100644 --- a/catalog-ui/src/app/ng2/components/logic/service-dependencies/service-dependencies.component.less +++ b/catalog-ui/src/app/ng2/components/logic/service-dependencies/service-dependencies.component.less @@ -32,9 +32,8 @@ } } - - .i-sdc-designer-sidebar-section-content-item-rules-section { - .i-sdc-designer-sidebar-section-content-item-rule { + .i-sdc-designer-sidebar-section-content-node-filter-section { + .i-sdc-designer-sidebar-section-content-node-filter { border-bottom: 1px solid @main_color_o; padding: 5px 10px 5px 18px; position: relative; @@ -43,7 +42,7 @@ align-items: center; justify-content: space-between; - .rule-details { + .filter-details { // .s_1; display: flex; flex: 1; @@ -64,7 +63,7 @@ opacity: 0.5; } } - .rule-desc { + .filter-desc { .sdc-ellipsis; width: 220px; position: relative; @@ -73,13 +72,44 @@ } } - .w-sdc-designer-sidebar-section-footer { + .w-sdc-designer-sidebar-section-node-filter-footer { margin-top: 10px; + margin-bottom: 10px; text-align: center; width: 100%; } - .w-sdc-designer-sidebar-section-footer-action { + .w-sdc-designer-sidebar-section-node-filter-footer-action { width: 180px; margin-top: 10px; } -}
\ No newline at end of file +} + +/deep/.sdc-accordion { + margin-bottom: 0; + display: grid; + + .sdc-accordion-header { + background-color: #e6f6fb; + border-left: solid #009fdb 4px; + box-shadow: 0 0px 3px -1px rgba(0, 0, 0, 0.3); + margin-bottom: 2px; + width: auto; + height: auto; + padding: 10px; + color: #666666; + font-family: OpenSans-Semibold, sans-serif; + font-size: 14px; + } + + .sdc-accordion-body.open { + padding-left: 0; + padding-top: 0; + .sdc-accordion-header { /*Second level - nested accordion */ + background-color: #f8f8f8; + padding: 4px 20px 4px 37px; + border-bottom: 1px solid #d2d2d2; + border-left:none; + height: 30px; + } + } +} diff --git a/catalog-ui/src/app/ng2/components/logic/service-dependencies/service-dependencies.component.ts b/catalog-ui/src/app/ng2/components/logic/service-dependencies/service-dependencies.component.ts index 55c933c38d..90f82f8983 100644 --- a/catalog-ui/src/app/ng2/components/logic/service-dependencies/service-dependencies.component.ts +++ b/catalog-ui/src/app/ng2/components/logic/service-dependencies/service-dependencies.component.ts @@ -123,8 +123,12 @@ export class ServiceDependenciesComponent { isDependent: boolean; isLoading: boolean; parentServiceInputs: InputBEModel[] = []; - constraintObjects: ConstraintObject[] = []; + constraintProperties: ConstraintObject[] = []; + constraintCapabilities: ConstraintObject[] = []; operatorTypes: any[]; + capabilities: string = 'capabilities'; + properties: string = 'properties'; + private componentInstancesConstraints: ConstraintObject[] = []; @Input() readonly: boolean; @Input() compositeService: ComponentMetadata; @@ -133,7 +137,8 @@ export class ServiceDependenciesComponent { @Input() selectedInstanceConstraints: ConstraintObject[] = []; @Input() selectedInstanceProperties: PropertyBEModel[] = []; @Input() directiveValues: any = DirectiveValue; - @Output() updateRulesListEvent: EventEmitter<ConstraintObject[]> = new EventEmitter<ConstraintObject[]>(); + @Output() updateNodeFilterProperties: EventEmitter<ConstraintObject[]> = new EventEmitter<ConstraintObject[]>(); + @Output() updateNodeFilterCapabilities: EventEmitter<ConstraintObject[]> = new EventEmitter<ConstraintObject[]>(); @Output() loadRulesListEvent:EventEmitter<any> = new EventEmitter(); @Output() dependencyStatus = new EventEmitter<boolean>(); @@ -175,6 +180,7 @@ export class ServiceDependenciesComponent { const cancelButton: ButtonModel = new ButtonModel(I18nTexts.modalCancel, 'grey', this.onCloseRemoveDependencyModal); const modalModel: ModalModel = new ModalModel('sm', I18nTexts.removeDirectiveModalTitle, I18nTexts.removeDirectiveModalText, [actionButton, cancelButton]); + this.loadNodeFilter(); return this.modalServiceNg2.createCustomModal(modalModel); } @@ -188,11 +194,12 @@ export class ServiceDependenciesComponent { private loadNodeFilter = (): void => { this.topologyTemplateService.getServiceFilterConstraints(this.compositeService.componentType, this.compositeService.uniqueId).subscribe((response) => { - if (response.nodeFilterforNode) { - const nodeFilterResponse: ConstraintObject[] = response.nodeFilterforNode[this.currentServiceInstance.uniqueId].properties; - if (nodeFilterResponse) { - this.constraintObjects = nodeFilterResponse; - } + if (response.nodeFilterforNode && response.nodeFilterforNode[this.currentServiceInstance.uniqueId]) { + this.componentInstancesConstraints = response.nodeFilterforNode; + const nodeFilterPropertiesResponse: ConstraintObject[] = response.nodeFilterforNode[this.currentServiceInstance.uniqueId].properties; + this.constraintProperties = nodeFilterPropertiesResponse; + const nodeFilterCapabilitiesResponse: ConstraintObject[] = response.nodeFilterforNode[this.currentServiceInstance.uniqueId].capabilities; + this.constraintCapabilities = nodeFilterCapabilitiesResponse; } }); } @@ -201,7 +208,7 @@ export class ServiceDependenciesComponent { this.modalServiceNg2.closeCurrentModal(); this.isLoading = true; const isDepOrig = this.isDependent; - const rulesListOrig = this.constraintObjects; + const rulesListOrig = this.componentInstancesConstraints; this.currentServiceInstance.unmarkAsDependent(this.getActualDirectiveValue()); this.updateComponentInstance(isDepOrig, rulesListOrig); } @@ -214,16 +221,18 @@ export class ServiceDependenciesComponent { onOptionsSelected(event: any) { const newDirectiveValue = event.target.value; if (newDirectiveValue.toLowerCase() !== this.getActualDirectiveValue()) { - const rulesListOrig = this.constraintObjects; + const rulesListOrig = this.componentInstancesConstraints; this.setDirectiveValue(newDirectiveValue); - this.constraintObjects = []; + this.constraintProperties = []; + this.constraintCapabilities = []; this.updateComponentInstance(this.isDependent, rulesListOrig); } } private onRemoveDirective() { this.openRemoveDependencyModal().instance.open(); - this.constraintObjects = []; + this.constraintProperties = []; + this.constraintCapabilities = []; } private setDirectiveValue(newDirectiveValue: string) { @@ -253,15 +262,16 @@ export class ServiceDependenciesComponent { this.isLoading = false; }, (err) => { this.isDependent = isDependentOrigVal; - this.constraintObjects = rulesListOrig; + this.componentInstancesConstraints = rulesListOrig; this.isLoading = false; console.log('An error has occurred.'); }); } - onAddRule() { + onAddNodeFilter = (constraintType: string) => { + console.info("constraintType: ", constraintType); const cancelButton: ButtonModel = new ButtonModel(I18nTexts.modalCancel, 'outline white', this.modalServiceNg2.closeCurrentModal); - const saveButton: ButtonModel = new ButtonModel(I18nTexts.modalCreate, 'blue', this.createRule, this.getDisabled); + const saveButton: ButtonModel = new ButtonModel(I18nTexts.modalCreate, 'blue', () => this.createNodeFilter(constraintType), this.getDisabled); const modalModel: ModalModel = new ModalModel('l', I18nTexts.addNodeFilterTxt, '', [saveButton, cancelButton], 'standard'); this.modalInstance = this.modalServiceNg2.createCustomModal(modalModel); this.modalServiceNg2.addDynamicContentToModal( @@ -279,9 +289,9 @@ export class ServiceDependenciesComponent { this.modalInstance.instance.open(); } - onSelectRule(index: number) { + onSelectNodeFilter(constraintType: string, index: number) { const cancelButton: ButtonModel = new ButtonModel(I18nTexts.modalCancel, 'outline white', this.modalServiceNg2.closeCurrentModal); - const saveButton: ButtonModel = new ButtonModel(I18nTexts.modalSave, 'blue', () => this.updateRules(), this.getDisabled); + const saveButton: ButtonModel = new ButtonModel(I18nTexts.modalSave, 'blue', () => this.updateNodeFilter(constraintType), this.getDisabled); const modalModel: ModalModel = new ModalModel('l', I18nTexts.updateNodeFilterTxt, '', [saveButton, cancelButton], 'standard'); this.modalInstance = this.modalServiceNg2.createCustomModal(modalModel); this.modalServiceNg2.addDynamicContentToModal( @@ -289,7 +299,8 @@ export class ServiceDependenciesComponent { ServiceDependenciesEditorComponent, { serviceRuleIndex: index, - serviceRules: _.map(this.constraintObjects, (rule) => new ConstraintObjectUI(rule)), + serviceRules: _.map(this.properties == constraintType ? this.constraintProperties : + this.constraintCapabilities, (rule) => new ConstraintObjectUI(rule)), currentServiceName: this.currentServiceInstance.name, operatorTypes: this.operatorTypes, compositeServiceName: this.compositeService.name, @@ -305,16 +316,17 @@ export class ServiceDependenciesComponent { return !this.modalInstance.instance.dynamicContent.instance.checkFormValidForSubmit(); } - createRule = (): void => { + createNodeFilter = (constraintType: string) => { const newRuleToCreate: ConstraintObject = new ConstraintObject(this.modalInstance.instance.dynamicContent.instance.currentRule); this.isLoading = true; this.topologyTemplateService.createServiceFilterConstraints( this.compositeService.uniqueId, this.currentServiceInstance.uniqueId, newRuleToCreate, - this.compositeService.componentType + this.compositeService.componentType, + constraintType ).subscribe( (response) => { - this.updateRulesListEvent.emit(response.properties); + this.emitEventOnChanges(constraintType, response); this.isLoading = false; }, (err) => { this.isLoading = false; @@ -322,16 +334,17 @@ export class ServiceDependenciesComponent { this.modalServiceNg2.closeCurrentModal(); } - updateRules = (): void => { + updateNodeFilter = (constraintType: string) => { const allRulesToUpdate: ConstraintObject[] = this.modalInstance.instance.dynamicContent.instance.serviceRulesList.map((rule) => new ConstraintObject(rule)); this.isLoading = true; this.topologyTemplateService.updateServiceFilterConstraints( this.compositeService.uniqueId, this.currentServiceInstance.uniqueId, allRulesToUpdate, - this.compositeService.componentType + this.compositeService.componentType, + constraintType ).subscribe((response) => { - this.updateRulesListEvent.emit(response.properties); + this.emitEventOnChanges(constraintType, response); this.isLoading = false; }, (err) => { this.isLoading = false; @@ -347,15 +360,16 @@ export class ServiceDependenciesComponent { } } - onDeleteRule = (index: number) => { + onDeleteNodeFilter = (constraintType: string, index: number) => { this.isLoading = true; this.topologyTemplateService.deleteServiceFilterConstraints( this.compositeService.uniqueId, this.currentServiceInstance.uniqueId, index, - this.compositeService.componentType + this.compositeService.componentType, + constraintType ).subscribe( (response) => { - this.updateRulesListEvent.emit(response.properties); + this.emitEventOnChanges(constraintType, response); this.isLoading = false; }, (err) => { this.isLoading = false; @@ -363,9 +377,19 @@ export class ServiceDependenciesComponent { this.modalServiceNg2.closeCurrentModal(); } - openDeleteModal = (index: number) => { + private emitEventOnChanges(constraintType: string, response) { + if (this.properties === constraintType) { + this.updateNodeFilterProperties.emit(response.properties); + this.constraintProperties = response.properties; + } else { + this.updateNodeFilterCapabilities.emit(response.capabilities); + this.constraintCapabilities = response.capabilities; + } + } + + openDeleteModal = (constraintType: string, index: number) => { this.modalServiceNg2.createActionModal(I18nTexts.deleteNodeFilterTxt, I18nTexts.deleteNodeFilterMsg, - I18nTexts.modalDelete, () => this.onDeleteRule(index), I18nTexts.modalCancel).instance.open(); + I18nTexts.modalDelete, () => this.onDeleteNodeFilter(constraintType, index), I18nTexts.modalCancel).instance.open(); } } diff --git a/catalog-ui/src/app/ng2/components/logic/service-dependencies/service-dependencies.module.ts b/catalog-ui/src/app/ng2/components/logic/service-dependencies/service-dependencies.module.ts index 10cd141a87..bb98f57d5c 100644 --- a/catalog-ui/src/app/ng2/components/logic/service-dependencies/service-dependencies.module.ts +++ b/catalog-ui/src/app/ng2/components/logic/service-dependencies/service-dependencies.module.ts @@ -3,16 +3,18 @@ import { NgModule } from '@angular/core'; import { UiElementsModule } from 'app/ng2/components/ui/ui-elements.module'; import { TranslateModule } from 'app/ng2/shared/translator/translate.module'; import { ServiceDependenciesComponent } from './service-dependencies.component'; +import {AccordionModule} from "onap-ui-angular/dist/accordion/accordion.module"; @NgModule({ declarations: [ ServiceDependenciesComponent ], - imports: [ - CommonModule, - UiElementsModule, - TranslateModule - ], + imports: [ + CommonModule, + UiElementsModule, + TranslateModule, + AccordionModule + ], exports: [ ServiceDependenciesComponent ], diff --git a/catalog-ui/src/app/ng2/components/logic/substitution-filter/substitution-filter.component.less b/catalog-ui/src/app/ng2/components/logic/substitution-filter/substitution-filter.component.less index 2d9b2646af..cc41c3a69a 100644 --- a/catalog-ui/src/app/ng2/components/logic/substitution-filter/substitution-filter.component.less +++ b/catalog-ui/src/app/ng2/components/logic/substitution-filter/substitution-filter.component.less @@ -25,34 +25,6 @@ .substitution-filter { - /deep/ .checkbox-label-mark-as-dependent { - padding: 7px 18px; - position: relative; - height: 61px; - color: @main_color_a; - box-shadow: 0 2px 7px @main_color_o; - border-bottom: 1px solid @main_color_o; - .checkbox-label { - margin-top: 14px; - .checkbox-label-content { - font-size: 14px; - } - } - .checkbox-container input[type=checkbox].checkbox-hidden[disabled] ~ .checkbox-label-content { - opacity: 0.5; - } - .delete-btn { - background-position: -137px -415px; - width: 24px; - height: 24px - } - - loader { - top: 20px; - } - } - - .i-sdc-designer-sidebar-section-content-item-rules-section { .i-sdc-designer-sidebar-section-content-item-rule { border-bottom: 1px solid @main_color_o; diff --git a/catalog-ui/src/app/ng2/pages/composition/panel/panel-tabs/service-dependencies-tab/service-dependencies-tab.component.html b/catalog-ui/src/app/ng2/pages/composition/panel/panel-tabs/service-dependencies-tab/service-dependencies-tab.component.html index 47351a46a1..508584d486 100644 --- a/catalog-ui/src/app/ng2/pages/composition/panel/panel-tabs/service-dependencies-tab/service-dependencies-tab.component.html +++ b/catalog-ui/src/app/ng2/pages/composition/panel/panel-tabs/service-dependencies-tab/service-dependencies-tab.component.html @@ -10,7 +10,8 @@ [selectedInstanceConstraints]="selectedInstanceConstraints" [readonly]="isViewOnly" (dependencyStatus)="notifyDependencyEventsObserver($event)" - (updateRulesListEvent)="updateSelectedInstanceConstraints($event)" + (updateNodeFilterProperties)="updateSelectedInstanceConstraints($event)" + (updateNodeFilterCapabilities)="updateSelectedInstanceCapabilitiesConstraints($event)" (loadRulesListEvent)="loadConstraints()"> </service-dependencies> </div> diff --git a/catalog-ui/src/app/ng2/pages/composition/panel/panel-tabs/service-dependencies-tab/service-dependencies-tab.component.ts b/catalog-ui/src/app/ng2/pages/composition/panel/panel-tabs/service-dependencies-tab/service-dependencies-tab.component.ts index fb0898d53e..43c38b58b0 100644 --- a/catalog-ui/src/app/ng2/pages/composition/panel/panel-tabs/service-dependencies-tab/service-dependencies-tab.component.ts +++ b/catalog-ui/src/app/ng2/pages/composition/panel/panel-tabs/service-dependencies-tab/service-dependencies-tab.component.ts @@ -1,28 +1,21 @@ - -import { Component, Input } from '@angular/core'; -import { Store } from '@ngxs/store'; +import {Component, Input} from '@angular/core'; +import {Store} from '@ngxs/store'; import { - CapabilitiesGroup, - Capability, Component as TopologyTemplate, - ComponentInstance, FullComponentInstance, - InputBEModel, - InputsGroup, - InterfaceModel, PropertiesGroup, PropertyBEModel, } from 'app/models'; -import { DEPENDENCY_EVENTS } from 'app/utils/constants'; -import { ComponentMetadata } from '../../../../../../models/component-metadata'; -import { ServiceInstanceObject } from '../../../../../../models/service-instance-properties-and-interfaces'; -import { EventListenerService } from '../../../../../../services/event-listener-service'; -import { ConstraintObject } from '../../../../../components/logic/service-dependencies/service-dependencies.component'; -import { TopologyTemplateService } from '../../../../../services/component-services/topology-template.service'; -import { ComponentGenericResponse } from '../../../../../services/responses/component-generic-response'; -import { WorkspaceService } from '../../../../workspace/workspace.service'; -import { SelectedComponentType } from '../../../common/store/graph.actions'; -import { CompositionService } from '../../../composition.service'; +import {DEPENDENCY_EVENTS} from 'app/utils/constants'; +import {ComponentMetadata} from '../../../../../../models/component-metadata'; +import {ServiceInstanceObject} from '../../../../../../models/service-instance-properties-and-interfaces'; +import {EventListenerService} from '../../../../../../services/event-listener-service'; +import {ConstraintObject} from '../../../../../components/logic/service-dependencies/service-dependencies.component'; +import {TopologyTemplateService} from '../../../../../services/component-services/topology-template.service'; +import {ComponentGenericResponse} from '../../../../../services/responses/component-generic-response'; +import {WorkspaceService} from '../../../../workspace/workspace.service'; +import {SelectedComponentType} from '../../../common/store/graph.actions'; +import {CompositionService} from '../../../composition.service'; @Component({ selector: 'service-dependencies-tab', @@ -74,6 +67,11 @@ export class ServiceDependenciesTabComponent { this.selectedInstanceConstraints = this.componentInstancesConstraints[this.component.uniqueId].properties; } + public updateSelectedInstanceCapabilitiesConstraints = (constraintsList:Array<ConstraintObject>):void => { + this.componentInstancesConstraints[this.component.uniqueId].capabilities = constraintsList; + this.selectedInstanceConstraints = this.componentInstancesConstraints[this.component.uniqueId].capabilities; + } + private initInstancesWithProperties = (): void => { this.topologyTemplateService.getComponentInstanceProperties(this.metaData.componentType, this.metaData.uniqueId).subscribe((genericResponse: ComponentGenericResponse) => { this.componentInstanceProperties = genericResponse.componentInstancesProperties; diff --git a/catalog-ui/src/app/ng2/services/component-services/topology-template.service.ts b/catalog-ui/src/app/ng2/services/component-services/topology-template.service.ts index fde110957f..a7c8022239 100644 --- a/catalog-ui/src/app/ng2/services/component-services/topology-template.service.ts +++ b/catalog-ui/src/app/ng2/services/component-services/topology-template.service.ts @@ -388,16 +388,16 @@ export class TopologyTemplateService { return this.getComponentDataByFieldsName(componentType, componentId, [COMPONENT_FIELDS.COMPONENT_INSTANCES_PROPERTIES]); } - createServiceFilterConstraints(componentMetaDataId: string, componentInstanceId: string, constraint: ConstraintObject, componentType: string): Observable<any> { - return this.http.post<any>(this.baseUrl + this.getServerTypeUrl(componentType) + componentMetaDataId + '/resourceInstances/' + componentInstanceId + '/nodeFilter', constraint); + createServiceFilterConstraints(componentMetaDataId: string, componentInstanceId: string, constraint: ConstraintObject, componentType: string, constraintType: string): Observable<any> { + return this.http.post<any>(this.baseUrl + this.getServerTypeUrl(componentType) + componentMetaDataId + '/resourceInstances/' + componentInstanceId + '/nodeFilter/' + constraintType, constraint); } - updateServiceFilterConstraints(componentMetaDataId: string, componentInstanceId: string, constraints: ConstraintObject[], componentType: string):Observable<any>{ - return this.http.put<any>(this.baseUrl + this.getServerTypeUrl(componentType) + componentMetaDataId + '/resourceInstances/' + componentInstanceId + '/nodeFilter', constraints) + updateServiceFilterConstraints(componentMetaDataId: string, componentInstanceId: string, constraints: ConstraintObject[], componentType: string, constraintType: string):Observable<any>{ + return this.http.put<any>(this.baseUrl + this.getServerTypeUrl(componentType) + componentMetaDataId + '/resourceInstances/' + componentInstanceId + '/nodeFilter/' + constraintType, constraints) } - deleteServiceFilterConstraints(componentMetaDataId: string, componentInstanceId: string, constraintIndex: number, componentType: string): Observable<any>{ - return this.http.delete<any>(this.baseUrl + this.getServerTypeUrl(componentType) + componentMetaDataId + '/resourceInstances/' + componentInstanceId + '/nodeFilter/' + constraintIndex) + deleteServiceFilterConstraints(componentMetaDataId: string, componentInstanceId: string, constraintIndex: number, componentType: string, constraintType: string): Observable<any>{ + return this.http.delete<any>(this.baseUrl + this.getServerTypeUrl(componentType) + componentMetaDataId + '/resourceInstances/' + componentInstanceId + '/nodeFilter/' + constraintType + "/" + constraintIndex) } createSubstitutionFilterConstraints(componentMetaDataId: string, componentInstanceId: string, constraint: ConstraintObject, componentType: string): Observable<any> { |