| import {Component, ViewChild} from '@angular/core'; |
| import {ContextMenuComponent, ContextMenuService} from 'ngx-contextmenu'; |
| import {DialogService} from 'ng2-bootstrap-modal'; |
| import {MsoService} from '../../../shared/services/msoService/mso.service' |
| import * as _ from 'lodash'; |
| import {ActivatedRoute} from '@angular/router'; |
| import {ServiceInstance} from "../../../shared/models/serviceInstance"; |
| import {OwningEntity} from "../../../shared/models/owningEntity"; |
| import {MessageBoxData} from "../../../shared/components/messageBox/messageBox.data"; |
| import {NgRedux} from "@angular-redux/store"; |
| import {AppState} from "../../../shared/store/reducers"; |
| import {IframeService} from "../../../shared/utils/iframe.service"; |
| import { |
| GenericFormPopupComponent, |
| PopupType |
| } from "../../../shared/components/genericFormPopup/generic-form-popup.component"; |
| import {ServicePopupService} from "../../../shared/components/genericFormPopup/genericFormServices/service/service.popup.service"; |
| import {SdcUiCommon} from "onap-ui-angular"; |
| import {DrawingBoardModes} from "../drawing-board.modes"; |
| import {DrawingBoardHeaderService} from "./drawing-board-header.service"; |
| import {ServiceInstanceActions} from "../../../shared/models/serviceInstanceActions"; |
| import {DrawingBoardPermissions} from "../../guards/servicePlanningGuard/drawingBoardGuard"; |
| import {MessageBoxService} from "../../../shared/components/messageBox/messageBox.service"; |
| |
| @Component({ |
| selector: 'drawing-board-header', |
| providers: [MsoService], |
| templateUrl: './drawing-board-header.component.html', |
| styleUrls: ['./drawing-board-header.component.scss'] |
| }) |
| |
| export class DrawingBoardHeader { |
| serviceName: string; |
| numServicesToDeploy: number; |
| status: string = 'Designing a new service'; |
| serviceModelId: string; |
| jobId: string; |
| parentElementClassName = 'content'; |
| mode : DrawingBoardModes = DrawingBoardModes.CREATE; |
| serviceOrchStatus: string; |
| isDeleted: boolean = false; |
| store : NgRedux<AppState>; |
| drawingBoardPermissions : DrawingBoardPermissions; |
| drawingBoardHeaderService : DrawingBoardHeaderService; |
| isServiceFailed: boolean; |
| serviceStatusMessage: string; |
| constructor(private _contextMenuService: ContextMenuService, private dialogService: DialogService, |
| private _iframeService : IframeService, |
| private route: ActivatedRoute, private msoService: MsoService, |
| private _servicePopupService : ServicePopupService, |
| private _drawingBoardHeaderService : DrawingBoardHeaderService, |
| private _store: NgRedux<AppState>, |
| private _drawingBoardPermissions : DrawingBoardPermissions) { |
| this.store = _store; |
| this.drawingBoardPermissions = _drawingBoardPermissions; |
| this.drawingBoardHeaderService = _drawingBoardHeaderService; |
| this.mode = (!_.isNil(this.route.routeConfig.path) && this.route.routeConfig.path !== "") ? this.route.routeConfig.path as DrawingBoardModes : DrawingBoardModes.CREATE; |
| this.route |
| .queryParams |
| .subscribe((params) => { |
| this.serviceModelId = params['serviceModelId']; |
| this.jobId = params['jobId']; |
| if (_.has(this.store.getState().service.serviceHierarchy, this.serviceModelId)) { |
| this.setValuesFromStore(); |
| this.store.subscribe(() => { |
| this.setValuesFromStore(); |
| }); |
| } |
| }); |
| } |
| |
| |
| @ViewChild(ContextMenuComponent) public contextMenu: ContextMenuComponent; |
| |
| editViewEdit(): void { |
| window.parent.location.assign(this._drawingBoardHeaderService.generateOldViewEditPath()); |
| } |
| |
| isPermitted() : boolean { |
| return this.drawingBoardPermissions.isEditPermitted; |
| } |
| |
| getModeName():string { |
| switch (this.mode) { |
| case DrawingBoardModes.CREATE: |
| return 'IN DESIGN'; |
| case DrawingBoardModes.VIEW: |
| case DrawingBoardModes.RETRY: |
| return 'VIEW ONLY'; |
| case DrawingBoardModes.EDIT: |
| case DrawingBoardModes.RETRY_EDIT: |
| return 'IN EDITING'; |
| default: |
| return 'IN DESIGN'; |
| } |
| |
| } |
| public onContextMenu($event: MouseEvent, item: any): void { |
| this._contextMenuService.show.next({ |
| contextMenu: this.contextMenu, |
| event: $event, |
| item: item, |
| }); |
| $event.preventDefault(); |
| $event.stopPropagation(); |
| } |
| |
| private setValuesFromStore() { |
| if(!_.isNil(this.store.getState().service.serviceInstance) && !_.isNil(this.store.getState().service.serviceInstance[this.serviceModelId])){ |
| const serviceInstance = this.store.getState().service.serviceInstance[this.serviceModelId]; |
| this.numServicesToDeploy = serviceInstance.bulkSize; |
| this.serviceName = serviceInstance.instanceName || '<Automatically Assigned>'; |
| this.serviceOrchStatus = serviceInstance.orchStatus || ""; |
| this.isServiceFailed = serviceInstance.isFailed; |
| this.serviceStatusMessage = serviceInstance.statusMessage; |
| } |
| } |
| |
| public editService(): void { |
| this._iframeService.addClassOpenModal(this.parentElementClassName); |
| this.dialogService.addDialog(GenericFormPopupComponent, { |
| type: PopupType.SERVICE, |
| uuidData: <any>{ |
| type : PopupType.SERVICE, |
| isMacro : this.store.getState().service.serviceHierarchy[this.serviceModelId].service.instantiationType === 'Macro', |
| serviceId: this.serviceModelId, |
| popupService: this._servicePopupService |
| }, |
| isUpdateMode: true |
| }); |
| } |
| |
| extractOwningEntityNameAccordingtoId(id:String): string { |
| let owningEntityName; |
| _.forEach(this.store.getState().service.categoryParameters.owningEntityList,(owningEntity: OwningEntity) => { |
| if (owningEntity.id === id) { |
| owningEntityName = owningEntity.name; |
| |
| }}); |
| return owningEntityName; |
| } |
| |
| extractServiceFields(): any { |
| let instanceFields : ServiceInstance; |
| instanceFields = this.store.getState().service.serviceInstance[this.serviceModelId]; |
| if (instanceFields.action === ServiceInstanceActions.Create) { |
| instanceFields.subscriberName = this.store.getState().service.subscribers.find(sub => sub.id === instanceFields.globalSubscriberId).name; |
| instanceFields.owningEntityName = this.extractOwningEntityNameAccordingtoId(instanceFields.owningEntityId); |
| } |
| return _.omit(instanceFields,'optionalGroupMembersMap'); |
| } |
| |
| |
| public deployService(): void { |
| let instanceFields = this.extractServiceFields(); |
| if (this.mode !== DrawingBoardModes.RETRY_EDIT) { |
| instanceFields.rollbackOnFailure = instanceFields.rollbackOnFailure === 'true'; |
| this.msoService.submitMsoTask(instanceFields).subscribe((result) => { |
| window.parent.postMessage("navigateToInstantiationStatus", '*'); |
| }); |
| } else { |
| this.msoService.retryBulkMsoTask(this.jobId, instanceFields).subscribe((result) => { |
| window.parent.postMessage("navigateToInstantiationStatus", '*'); |
| }); |
| } |
| } |
| |
| closePage() { |
| let messageBoxData : MessageBoxData = new MessageBoxData( |
| "Delete Instantiation", // modal title |
| "You are about to stop the instantiation process of this service. \nAll data will be lost. Are you sure you want to stop?", |
| SdcUiCommon.ModalType.warning, |
| SdcUiCommon.ModalSize.medium, |
| [ |
| {text:"Stop Instantiation", size:"large", callback: this.navigate.bind(this), closeModal:true}, |
| {text:"Cancel", size:"medium", closeModal:true} |
| ]); |
| |
| MessageBoxService.openModal.next(messageBoxData); |
| } |
| |
| |
| |
| navigate(){ |
| window.parent.postMessage("navigateTo", "*"); |
| } |
| } |