Support for multiple directives
[sdc.git] / catalog-ui / src / app / ng2 / components / logic / service-dependencies / service-dependencies.component.ts
index 35e80dc..8500269 100644 (file)
@@ -13,7 +13,7 @@
  * or implied. See the License for the specific language governing
  * permissions and limitations under the License.
  */
-import { Component, ComponentRef, EventEmitter, Input, Output } from '@angular/core';
+import {Component, ComponentRef, EventEmitter, Input, Output} from '@angular/core';
 import {
     ButtonModel,
     ComponentInstance,
@@ -141,7 +141,7 @@ export class ServiceDependenciesComponent {
     capabilities: string = ToscaFilterConstraintType.CAPABILITIES;
     properties: string = ToscaFilterConstraintType.PROPERTIES;
     private componentInstancesConstraints: ConstraintObject[] = [];
-    directiveOptions: string[];
+    isEditable: boolean;
 
     @Input() readonly: boolean;
     @Input() compositeService: ComponentMetadata;
@@ -161,7 +161,6 @@ export class ServiceDependenciesComponent {
     }
 
     ngOnInit() {
-        this.loadDirectives();
         this.isLoading = false;
         this.operatorTypes = [
             {label: '>', value: OPERATOR_TYPES.GREATER_THAN},
@@ -179,12 +178,6 @@ export class ServiceDependenciesComponent {
         });
     }
 
-    loadDirectives() {
-        this.topologyTemplateService.getDirectiveList().subscribe((data: string[]) => {
-            this.directiveOptions = data;
-        })
-    }
-
     ngOnChanges(changes) {
         if (changes.currentServiceInstance) {
             this.currentServiceInstance = changes.currentServiceInstance.currentValue;
@@ -196,9 +189,10 @@ export class ServiceDependenciesComponent {
         }
     }
 
-    private getActualDirectiveValue = (): string => {
-        return this.currentServiceInstance.directives.length > 0 ? this.currentServiceInstance.directives[0] : "";
+    private getActualDirectiveValue = (): string[] => {
+        return this.currentServiceInstance.directives.length > 0 ? this.currentServiceInstance.directives : [];
     }
+
     public openRemoveDependencyModal = (): ComponentRef<ModalComponent> => {
         const actionButton: ButtonModel = new ButtonModel(I18nTexts.modalApprove, 'blue', this.onUncheckDependency);
         const cancelButton: ButtonModel = new ButtonModel(I18nTexts.modalCancel, 'grey', this.onCloseRemoveDependencyModal);
@@ -242,15 +236,13 @@ export class ServiceDependenciesComponent {
         this.modalServiceNg2.closeCurrentModal();
     }
 
-    onOptionsSelected(event: any) {
-        const newDirectiveValue = event.target.value;
-        if (newDirectiveValue.toLowerCase() !== this.getActualDirectiveValue()) {
-            const rulesListOrig = this.componentInstancesConstraints;
-            this.setDirectiveValue(newDirectiveValue);
-            this.constraintProperties = [];
-            this.constraintCapabilities = [];
-            this.updateComponentInstance(this.isDependent, rulesListOrig);
-        }
+    onAddDirectives(directives: string[]) {
+        this.isEditable = false;
+        this.setDirectiveValue(directives);
+        const rulesListOrig = this.componentInstancesConstraints;
+        this.constraintProperties = [];
+        this.constraintCapabilities = [];
+        this.updateComponentInstance(this.isDependent, rulesListOrig);
     }
 
     private onRemoveDirective() {
@@ -259,11 +251,12 @@ export class ServiceDependenciesComponent {
         this.constraintCapabilities = [];
     }
 
-    private setDirectiveValue(newDirectiveValue: string) {
-        if (this.isDependent) {
-            this.openUpdateDependencyModal().instance.open();
-        }
-        this.currentServiceInstance.setDirectiveValue(newDirectiveValue);
+    private onEditDirectives() {
+        this.isEditable = true;
+    }
+
+    private setDirectiveValue(newDirectiveValues: string[]) {
+        this.currentServiceInstance.setDirectiveValue(newDirectiveValues);
     }
 
     updateComponentInstance(isDependentOrigVal: boolean, rulesListOrig: ConstraintObject[]) {