Catalog alignment
[sdc.git] / catalog-ui / src / app / ng2 / pages / workspace / req-and-capabilities / capabilities / capabilities.component.ts
1 import {Capability, CapabilityUI} from "../../../../../models/capability";
2 import { ViewChild, Input, OnInit, Component } from "@angular/core";
3 import {SdcUiServices} from "onap-ui-angular";
4 import {CapabilitiesEditorComponent} from "./capabilityEditor/capabilities-editor.component";
5 import {WorkspaceService} from "../../workspace.service";
6 import {TopologyTemplateService} from "../../../../services/component-services/topology-template.service";
7 import {ReqAndCapabilitiesService} from "../req-and-capabilities.service";
8 import {ModalComponent} from "onap-ui-angular/dist/modals/modal.component";
9 import {EventListenerService} from "../../../../../services/event-listener-service";
10
11
12 @Component({
13     selector: 'capabilities',
14     templateUrl: './capabilities.component.html',
15     styleUrls: ['./capabilities.component.less','../../../../../../assets/styles/table-style.less']
16 })
17 export class CapabilitiesComponent {
18     @Input() public capabilities: Array<Capability>;
19     @ViewChild('capabilitiesTable') capabilitiesTable: any;
20     private customModalInstance: ModalComponent;
21
22     constructor(
23         private workspaceService: WorkspaceService,
24                 private loaderService: SdcUiServices.LoaderService,
25                 private topologyTemplateService: TopologyTemplateService,
26                 private reqAndCapabilitiesService : ReqAndCapabilitiesService,
27                 private modalService: SdcUiServices.ModalService,
28                 private eventListenerService: EventListenerService) {
29     }
30
31     private onSelectCapabilities({ selected }) {
32     }
33
34     editCapability(cap: CapabilityUI) {
35         let modalConfig = {
36             size: 'md',
37             title: 'Update Capability',
38             type: 'custom',
39             buttons: [
40                 {
41                     id: 'saveButton',
42                     text: ('Update'),
43                     size: "'x-small'",
44                     callback: () => this.updateCapability(),
45                     closeModal: true
46                 },
47                 {text: "Cancel", size: "'x-small'", closeModal: true}]
48         };
49         let modalInputs = {
50             capability: cap,
51             capabilityTypesList: this.reqAndCapabilitiesService.getCapabilityTypesList(),
52         };
53
54         this.customModalInstance = this.modalService.openCustomModal(modalConfig, CapabilitiesEditorComponent, {input: modalInputs});
55         this.customModalInstance.innerModalContent.instance.
56         onValidationChange.subscribe((isValid) => this.customModalInstance.getButtonById('saveButton').disabled = !isValid);
57     }
58
59     expendRow(row) {
60         this.capabilitiesTable.rowDetail.toggleExpandRow(row);
61     }
62
63     private updateCapability() {
64         const capability = this.customModalInstance.innerModalContent.instance.capabilityData;
65         this.loaderService.activate();
66         if (capability.uniqueId) {
67             this.topologyTemplateService.updateCapability(this.workspaceService.metadata.getTypeUrl(), this.workspaceService.metadata.uniqueId, capability).subscribe((result) => {
68                 let index = this.capabilities.findIndex((cap) => result[0].uniqueId === cap.uniqueId);
69                     this.capabilities[index] = new CapabilityUI(result[0], this.workspaceService.metadata.uniqueId);
70                 this.loaderService.deactivate();
71                 this.eventListenerService.notifyObservers('CAPABILITIES_UPDATED');
72             }, () => {
73                 this.loaderService.deactivate();
74             });
75         }
76     }
77
78
79 }