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");
13 selector: 'requirments',
14 templateUrl: './requirments.components.html',
15 styleUrls: ['../../../../../../assets/styles/table-style.less', './requirements.component.less']
20 export class RequirmentsComponent implements OnInit {
21 @Input() public requirements: Array<RequirementUI>;
22 private customModalInstance: ModalComponent;
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) {
35 let isCreatedManually: RequirementUI[] = [];
36 let isImportedFromFile: RequirementUI[] = [];
38 isCreatedManually = this.requirements.filter((requirement) => requirement.isCreatedManually);
39 isImportedFromFile = this.requirements.filter((requirement) => !requirement.isCreatedManually);
41 this.requirements = [];
43 isCreatedManually.map((requirement) => this.requirements.push(requirement));
44 isImportedFromFile.map((requirement) => this.requirements.push(requirement));
50 editRequirement(req) {
54 title: 'Update Requirement',
61 callback: () => this.updateRequirement(),
64 {text: "Cancel", size: "'x-small'", closeModal: true}]
68 relationshipTypesList: this.reqAndCapabilitiesService.getRelationsShipeTypeList(),
69 nodeTypesList: this.reqAndCapabilitiesService.getNodeTypesList(),
70 capabilityTypesList: this.reqAndCapabilitiesService.getCapabilityTypesList(),
71 // isReadonly: this.$scope.isViewMode() || !this.$scope.isDesigner(),
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);
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();
90 this.loaderService.deactivate();
96 if (!row.isCreatedManually) {
98 'importedFromFile': true