Catalog alignment
[sdc.git] / catalog-ui / src / app / ng2 / pages / workspace / req-and-capabilities / requirements / requirments.components.ts
1 import {Input, Component, OnInit} from "@angular/core";
2 import {Requirement, RequirementUI} from "../../../../../models/requirement";
3 import {RequirementsEditorComponent} from "./requirementEditor/requirements-editor.component";
4 import {WorkspaceService} from "../../workspace.service";
5 import {TopologyTemplateService} from "../../../../services/component-services/topology-template.service";
6 import {ReqAndCapabilitiesService} from "../req-and-capabilities.service";
7 import {EventListenerService} from "../../../../../services/event-listener-service";
8 import {ModalComponent} from "onap-ui-angular/dist/modals/modal.component";
9 import {SdcUiServices} from "onap-ui-angular";
10 import sortedIndexBy = require("lodash/sortedIndexBy");
11
12 @Component({
13     selector: 'requirments',
14     templateUrl: './requirments.components.html',
15     styleUrls: ['../../../../../../assets/styles/table-style.less', './requirements.component.less']
16 })
17
18
19
20 export class RequirmentsComponent implements OnInit {
21     @Input() public requirements: Array<RequirementUI>;
22     private customModalInstance: ModalComponent;
23
24     constructor(
25         private workspaceService: WorkspaceService,
26         private loaderService: SdcUiServices.LoaderService,
27         private topologyTemplateService: TopologyTemplateService,
28         private reqAndCapabilitiesService : ReqAndCapabilitiesService,
29         private modalService: SdcUiServices.ModalService,
30         private eventListenerService: EventListenerService) {
31     }
32
33
34     ngOnInit(): void {
35         let isCreatedManually: RequirementUI[] = [];
36         let isImportedFromFile: RequirementUI[] = [];
37
38         isCreatedManually = this.requirements.filter((requirement) => requirement.isCreatedManually);
39         isImportedFromFile = this.requirements.filter((requirement) => !requirement.isCreatedManually);
40
41         this.requirements = [];
42
43         isCreatedManually.map((requirement) => this.requirements.push(requirement));
44         isImportedFromFile.map((requirement) => this.requirements.push(requirement));
45
46     }
47
48
49
50     editRequirement(req) {
51
52         let modalConfig = {
53             size: 'md',
54             title: 'Update Requirement',
55             type: 'custom',
56             buttons: [
57                 {
58                     id: 'saveButton',
59                     text: ('Update'),
60                     size: "'x-small'",
61                     callback: () => this.updateRequirement(),
62                     closeModal: true
63                 },
64                 {text: "Cancel", size: "'x-small'", closeModal: true}]
65         };
66         let modalInputs = {
67             requirement: req,
68             relationshipTypesList: this.reqAndCapabilitiesService.getRelationsShipeTypeList(),
69             nodeTypesList: this.reqAndCapabilitiesService.getNodeTypesList(),
70             capabilityTypesList: this.reqAndCapabilitiesService.getCapabilityTypesList(),
71             // isReadonly: this.$scope.isViewMode() || !this.$scope.isDesigner(),
72         };
73
74         this.customModalInstance = this.modalService.openCustomModal(modalConfig, RequirementsEditorComponent, {input: modalInputs});
75         this.customModalInstance.innerModalContent.instance.
76         onValidationChange.subscribe((isValid) => this.customModalInstance.getButtonById('saveButton').disabled = !isValid);
77
78     }
79
80     private updateRequirement() {
81         const requirement = this.customModalInstance.innerModalContent.instance.requirementData;
82         this.loaderService.activate();
83         if (requirement.uniqueId) {
84             this.topologyTemplateService.updateRequirement(this.workspaceService.metadata.getTypeUrl(), this.workspaceService.metadata.uniqueId, requirement).subscribe(result => {
85                     let index = this.requirements.findIndex(req => result[0].uniqueId === req.uniqueId);
86                     this.requirements[index] = new RequirementUI(result[0], this.workspaceService.metadata.uniqueId);
87                     this.eventListenerService.notifyObservers('REQUIREMENTS_UPDATED');
88                     this.loaderService.deactivate();
89                 }, () => {
90                 this.loaderService.deactivate();
91                 });
92         }
93     }
94
95     getRowClass(row) {
96         if (!row.isCreatedManually) {
97             return {
98                 'importedFromFile': true
99             };
100         }
101     }
102
103 }