Support for multiple directives
[sdc.git] / catalog-ui / src / app / ng2 / components / logic / select-directives / select-directives.component.ts
1 /*-
2  * ============LICENSE_START=======================================================
3  * SDC
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20 import {Component, EventEmitter, Input, Output, ViewEncapsulation} from "@angular/core";
21 import {TopologyTemplateService} from "../../../services/component-services/topology-template.service";
22 import {NgSelectModule} from "@ng-select/ng-select";
23
24 @Component({
25   selector: 'select-directives',
26   templateUrl: './select-directives.component.html',
27   styleUrls: ['select-directives.component.less'],
28   providers: [NgSelectModule],
29   encapsulation: ViewEncapsulation.None
30 })
31
32 export class SelectDirectivesComponent {
33   isDependent: boolean;
34   isLoading: boolean;
35   selectedDirectiveOptions: string[];
36   directiveOptions: string[];
37
38   @Output() onAddClick = new EventEmitter<string[]>();
39   @Input() updateDirectives: string[];
40
41   constructor(private topologyTemplateService: TopologyTemplateService) {
42   }
43
44   ngOnInit() {
45     this.loadDirectives();
46     if (this.updateDirectives) {
47       this.selectedDirectiveOptions = this.updateDirectives;
48     }
49   }
50
51   onAddDirectives() {
52     this.onAddClick.emit(this.selectedDirectiveOptions);
53   }
54
55   loadDirectives() {
56     this.topologyTemplateService.getDirectiveList().subscribe((data: string[]) => {
57       this.directiveOptions = data;
58     })
59   }
60
61   onClearDirectives() {
62     this.selectedDirectiveOptions = [];
63   }
64 }