diff options
Diffstat (limited to 'vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/pnf/pnf.model.info.extended.ts')
-rw-r--r-- | vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/pnf/pnf.model.info.extended.ts | 149 |
1 files changed, 132 insertions, 17 deletions
diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/pnf/pnf.model.info.extended.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/pnf/pnf.model.info.extended.ts index e2e31e904..3c3f09b5d 100644 --- a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/pnf/pnf.model.info.extended.ts +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/pnf/pnf.model.info.extended.ts @@ -3,7 +3,6 @@ import {ComponentInfoType} from "../../../component-info/component-info-model"; import {ModelInformationItem} from "../../../../../shared/components/model-information/model-information.component"; import {ITreeNode} from "angular-tree-component/dist/defs/api"; import {AvailableNodeIcons} from "../../../available-models-tree/available-models-tree.service"; - import {PNFModel} from "../../../../../shared/models/pnfModel"; import {SharedTreeService} from "../../shared.tree.service"; import * as _ from "lodash"; @@ -17,19 +16,35 @@ import { import {DialogService} from "ng2-bootstrap-modal"; import {PnfPopupService} from "../../../../../shared/components/genericFormPopup/genericFormServices/pnf/pnf.popup.service"; import {PnfTreeNode} from "../../../../../shared/models/pnfTreeNode"; +import {changeInstanceCounter, removeInstance} from "../../../../../shared/storeUtil/utils/general/general.actions"; +import {MessageBoxData} from "../../../../../shared/components/messageBox/messageBox.data"; +import {MessageBoxService} from "../../../../../shared/components/messageBox/messageBox.service"; +import {IframeService} from "../../../../../shared/utils/iframe.service"; +import {DuplicateService} from "../../../duplicate/duplicate.service"; +import {ModalService} from "../../../../../shared/components/customModal/services/modal.service"; +import { + deleteActionPnfInstance, + undoDeleteActionPnfInstance, + updatePnfPosition +} from "../../../../../shared/storeUtil/utils/pnf/pnf.actions"; +import {DynamicInputsService} from "../../dynamicInputs.service"; +import {InputType} from "../../../../../shared/models/inputTypes"; - -export class PnfModelInfoExtended implements ILevelNodeInfo{ +export class PnfModelInfoExtended implements ILevelNodeInfo { constructor( private _store: NgRedux<AppState>, private _sharedTreeService: SharedTreeService, private _dialogService: DialogService, - private _pnfPopupService: PnfPopupService - ){} + private _pnfPopupService: PnfPopupService, + private _iframeService: IframeService, + private _duplicateService: DuplicateService, + private modalService: ModalService, + private _dynamicInputsService: DynamicInputsService + ) {} name: string = 'pnfs'; - type: string ='PNF'; + type: string = 'PNF'; typeName: string = 'PNF'; childNames: string[]; componentInfoType = ComponentInfoType.PNF; @@ -60,15 +75,109 @@ export class PnfModelInfoExtended implements ILevelNodeInfo{ return _.uniq(_.flatten(result)); } - getMenuAction(node: ITreeNode, serviceModelId: string): { [methodName: string]: { method: Function; visible: Function; enable: Function } } { - return {}; + getMenuAction(node: ITreeNode, serviceModelId: string): { [methodName: string]: { method: Function, visible: Function, enable: Function } } { + return <any>{ + edit: { + method: (node, serviceModelId) => { + this._iframeService.addClassOpenModal('content'); + this._dialogService.addDialog(GenericFormPopupComponent, { + type: PopupType.PNF, + uuidData: <any>{ + serviceId: serviceModelId, + modelName: node.data.modelName, + pnfStoreKey: node.data.pnfStoreKey, + modelId: node.data.modelId, + type: node.data.type, + popupService: this._pnfPopupService + }, + node: node, + isUpdateMode: true + }); + }, + visible: (node) => this._sharedTreeService.shouldShowRemoveAndEdit(node), + enable: (node) => this._sharedTreeService.shouldShowRemoveAndEdit(node), + }, + showAuditInfo: { + method: (node, serviceModelId) => { + const instance = this._store.getState().service.serviceInstance[serviceModelId].pnfs[node.data.pnfStoreKey]; + this._sharedTreeService.openAuditInfoModal(node, serviceModelId, instance, 'PNF', this); + }, + visible: (node) => this._sharedTreeService.shouldShowAuditInfo(node), + enable: (node) => this._sharedTreeService.shouldShowAuditInfo(node) + }, + remove: { + method: (node, serviceModelId) => { + if ((!_.isNil(node.data.children) && node.data.children.length === 0) || _.isNil(node.data.children)) { + let storeKey: string = node.data.pnfStoreKey; + this._store.dispatch(removeInstance(node.data.pnfStoreKey, serviceModelId, storeKey, node)); + this._store.dispatch(changeInstanceCounter(node.data.modelUniqueId, serviceModelId, -1, node)); + this._sharedTreeService.selectedNF = null; + } else { + let messageBoxData: MessageBoxData = new MessageBoxData( + "Remove PNF", // modal title + "You are about to remove this PNF from this service. Are you sure you want to remove it?", + <any>"warning", + <any>"md", + [ + { + text: "Remove PNF", + size: "large", + callback: this.removePnf.bind(this, node, serviceModelId), + closeModal: true + }, + {text: "Don’t Remove", size: "medium", closeModal: true} + ]); + + MessageBoxService.openModal.next(messageBoxData); + } + }, + visible: (node) => this._sharedTreeService.shouldShowRemoveAndEdit(node), + enable: (node) => this._sharedTreeService.shouldShowRemoveAndEdit(node), + }, + delete: { + method: (node, serviceModelId) => { + if ((!_.isNil(node.data.children) && node.data.children.length === 0) || _.isNil(node.data.children)) { + this._store.dispatch(deleteActionPnfInstance(node.data.pnfStoreKey, serviceModelId)); + } else { + this._sharedTreeService.shouldShowDeleteInstanceWithChildrenModal(node, serviceModelId, (node, serviceModelId) => { + this._sharedTreeService.removeDeleteAllChild(node, serviceModelId, (node, serviceModelId) => { + this._store.dispatch(deleteActionPnfInstance(node.data.pnfStoreKey, serviceModelId)); + }); + }); + } + }, + visible: (node) => this._sharedTreeService.shouldShowDelete(node, serviceModelId), + enable: (node) => this._sharedTreeService.shouldShowDelete(node, serviceModelId) + }, + undoDelete: { + method: (node, serviceModelId) => { + if ((!_.isNil(node.data.children) && node.data.children.length === 0) || _.isNil(node.data.children)) { + this._store.dispatch(undoDeleteActionPnfInstance(node.data.pnfStoreKey, serviceModelId)); + } else { + this._sharedTreeService.undoDeleteAllChild(node, serviceModelId, (node, serviceModelId) => { + this._store.dispatch(undoDeleteActionPnfInstance(node.data.pnfStoreKey, serviceModelId)); + }); + } + }, + visible: (node) => this._sharedTreeService.shouldShowUndoDelete(node), + enable: (node, serviceModelId) => this._sharedTreeService.shouldShowUndoDelete(node) && !this._sharedTreeService.isServiceOnDeleteMode(serviceModelId) + } + } + } + + removePnf(this, node, serviceModelId) { + this._store.dispatch(removeInstance(node.data.modelName, serviceModelId, node.data.pnfStoreKey, node)); + this._store.dispatch(changeInstanceCounter(node.data.modelUniqueId, serviceModelId, -1, node)); + this._sharedTreeService.selectedNF = null; } getModel = (instanceModel: any): PNFModel => { return new PNFModel(instanceModel); }; - getNextLevelObject(): any { return null; } + getNextLevelObject(): any { + return null; + } getNodeCount(node: ITreeNode, serviceModelId: string): number { let map = null; @@ -90,17 +199,20 @@ export class PnfModelInfoExtended implements ILevelNodeInfo{ getTooltip = (): string => 'PNF'; - getType = (): string => 'PNF'; - hasMissingData(instance, dynamicInputs: any, isEcompGeneratedNaming: boolean): boolean { - return false; + return this._sharedTreeService.hasMissingData(instance, dynamicInputs, isEcompGeneratedNaming, [InputType.PLATFORM]); } - isEcompGeneratedNaming(currentModel): boolean { - return false; - } + /*********************************************************** + * return if user should provide instance name or not. + * @param currentModel - current Model object + ************************************************************/ + isEcompGeneratedNaming = (currentModel): boolean => { + const ecompGeneratedNaming = currentModel.properties.ecomp_generated_naming; + return ecompGeneratedNaming === "true"; + }; onClickAdd(node, serviceModelId: string): void { this._dialogService.addDialog(GenericFormPopupComponent, { @@ -130,9 +242,12 @@ export class PnfModelInfoExtended implements ILevelNodeInfo{ return new AvailableNodeIcons(showAddIcon, isReachedLimit) } - updateDynamicInputsDataFromModel = (currentModel): any => []; + updateDynamicInputsDataFromModel = (currentModel): any => { + let displayInputs = _.isNil(currentModel) ? [] : currentModel.inputs; + return _.isEmpty(displayInputs) ? [] : this._dynamicInputsService.getArbitraryInputs(displayInputs); + }; updatePosition(that, node, instanceId): void { + that.store.dispatch(updatePnfPosition(node, instanceId, node.vnfStoreKey)); } - } |