summaryrefslogtreecommitdiffstats
path: root/catalog-ui/src/app/ng2/pages/workspace/req-and-capabilities/requirements/requirments.components.ts
blob: b65489ce4edb52b0a1bd7a490eb414ab38d7d84c (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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
import {Input, Component, OnInit} from "@angular/core";
import {Requirement, RequirementUI} from "../../../../../models/requirement";
import {RequirementsEditorComponent} from "./requirementEditor/requirements-editor.component";
import {WorkspaceService} from "../../workspace.service";
import {TopologyTemplateService} from "../../../../services/component-services/topology-template.service";
import {ReqAndCapabilitiesService} from "../req-and-capabilities.service";
import {EventListenerService} from "../../../../../services/event-listener-service";
import {ModalComponent} from "onap-ui-angular/dist/modals/modal.component";
import {SdcUiServices} from "onap-ui-angular";
import sortedIndexBy = require("lodash/sortedIndexBy");

@Component({
    selector: 'requirments',
    templateUrl: './requirments.components.html',
    styleUrls: ['../../../../../../assets/styles/table-style.less', './requirements.component.less']
})



export class RequirmentsComponent implements OnInit {
    @Input() public requirements: Array<RequirementUI>;
    private customModalInstance: ModalComponent;

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


    ngOnInit(): void {
        let isCreatedManually: RequirementUI[] = [];
        let isImportedFromFile: RequirementUI[] = [];

        isCreatedManually = this.requirements.filter((requirement) => requirement.isCreatedManually);
        isImportedFromFile = this.requirements.filter((requirement) => !requirement.isCreatedManually);

        this.requirements = [];

        isCreatedManually.map((requirement) => this.requirements.push(requirement));
        isImportedFromFile.map((requirement) => this.requirements.push(requirement));

    }



    editRequirement(req) {

        let modalConfig = {
            size: 'md',
            title: 'Update Requirement',
            type: 'custom',
            buttons: [
                {
                    id: 'saveButton',
                    text: ('Update'),
                    size: "'x-small'",
                    callback: () => this.updateRequirement(),
                    closeModal: true
                },
                {text: "Cancel", size: "'x-small'", closeModal: true}]
        };
        let modalInputs = {
            requirement: req,
            relationshipTypesList: this.reqAndCapabilitiesService.getRelationsShipeTypeList(),
            nodeTypesList: this.reqAndCapabilitiesService.getNodeTypesList(),
            capabilityTypesList: this.reqAndCapabilitiesService.getCapabilityTypesList(),
            // isReadonly: this.$scope.isViewMode() || !this.$scope.isDesigner(),
        };

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

    }

    private updateRequirement() {
        const requirement = this.customModalInstance.innerModalContent.instance.requirementData;
        this.loaderService.activate();
        if (requirement.uniqueId) {
            this.topologyTemplateService.updateRequirement(this.workspaceService.metadata.getTypeUrl(), this.workspaceService.metadata.uniqueId, requirement).subscribe(result => {
                    let index = this.requirements.findIndex(req => result[0].uniqueId === req.uniqueId);
                    this.requirements[index] = new RequirementUI(result[0], this.workspaceService.metadata.uniqueId);
                    this.eventListenerService.notifyObservers('REQUIREMENTS_UPDATED');
                    this.loaderService.deactivate();
                }, () => {
                this.loaderService.deactivate();
                });
        }
    }

    getRowClass(row) {
        if (!row.isCreatedManually) {
            return {
                'importedFromFile': true
            };
        }
    }

}