aboutsummaryrefslogtreecommitdiffstats
path: root/catalog-ui/src/app/ng2/pages/workspace/req-and-capabilities/capabilities/capabilities.component.ts
blob: 02db5d3aee4eb6d693a9eb6cec9e845b47fdce01 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
import {Capability, CapabilityUI} from "../../../../../models/capability";
import { ViewChild, Input, OnInit, Component } from "@angular/core";
import {SdcUiServices} from "onap-ui-angular";
import {CapabilitiesEditorComponent} from "./capabilityEditor/capabilities-editor.component";
import {WorkspaceService} from "../../workspace.service";
import {TopologyTemplateService} from "../../../../services/component-services/topology-template.service";
import {ReqAndCapabilitiesService} from "../req-and-capabilities.service";
import {ModalComponent} from "onap-ui-angular/dist/modals/modal.component";
import {EventListenerService} from "../../../../../services/event-listener-service";


@Component({
    selector: 'capabilities',
    templateUrl: './capabilities.component.html',
    styleUrls: ['./capabilities.component.less','../../../../../../assets/styles/table-style.less']
})
export class CapabilitiesComponent {
    @Input() public capabilities: Array<Capability>;
    @ViewChild('capabilitiesTable') capabilitiesTable: any;
    private customModalInstance: ModalComponent;

    constructor(
        private workspaceService: WorkspaceService,
                private loaderService: SdcUiServices.LoaderService,
                private topologyTemplateService: TopologyTemplateService,
                private reqAndCapabilitiesService : ReqAndCapabilitiesService,
                private modalService: SdcUiServices.ModalService,
                private eventListenerService: EventListenerService) {
    }

    private onSelectCapabilities({ selected }) {
    }

    editCapability(cap: CapabilityUI) {
        let modalConfig = {
            size: 'md',
            title: 'Update Capability',
            type: 'custom',
            buttons: [
                {
                    id: 'saveButton',
                    text: ('Update'),
                    size: "'x-small'",
                    callback: () => this.updateCapability(),
                    closeModal: true
                },
                {text: "Cancel", size: "'x-small'", closeModal: true}]
        };
        let modalInputs = {
            capability: cap,
            capabilityTypesList: this.reqAndCapabilitiesService.getCapabilityTypesList(),
        };

        this.customModalInstance = this.modalService.openCustomModal(modalConfig, CapabilitiesEditorComponent, {input: modalInputs});
        this.customModalInstance.innerModalContent.instance.
        onValidationChange.subscribe((isValid) => this.customModalInstance.getButtonById('saveButton').disabled = !isValid);
    }

    expendRow(row) {
        this.capabilitiesTable.rowDetail.toggleExpandRow(row);
    }

    private updateCapability() {
        const capability = this.customModalInstance.innerModalContent.instance.capabilityData;
        this.loaderService.activate();
        if (capability.uniqueId) {
            this.topologyTemplateService.updateCapability(this.workspaceService.metadata.getTypeUrl(), this.workspaceService.metadata.uniqueId, capability).subscribe((result) => {
                let index = this.capabilities.findIndex((cap) => result[0].uniqueId === cap.uniqueId);
                    this.capabilities[index] = new CapabilityUI(result[0], this.workspaceService.metadata.uniqueId);
                this.loaderService.deactivate();
                this.eventListenerService.notifyObservers('CAPABILITIES_UPDATED');
            }, () => {
                this.loaderService.deactivate();
            });
        }
    }


}