diff options
author | Einat Vinouze <einat.vinouze@intl.att.com> | 2019-08-27 16:01:01 +0300 |
---|---|---|
committer | Ittay Stern <ittay.stern@att.com> | 2019-09-09 07:01:36 +0000 |
commit | e1f7974f0badbd4440d5b7ea5f1b1cb2d4973818 (patch) | |
tree | 46be9cdc44cbb475527bc3c43df23d16f7579d29 /vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/shared.tree.service.ts | |
parent | e25b88b5a7a0f3bf63ca7160a441b53145484bcc (diff) |
Adding feature: Replace vfmodule
Issue-ID: VID-603
Change-Id: I59068a0979d6fb733e4243c8f78921f396dc9d17
Signed-off-by: Einat Vinouze <einat.vinouze@intl.att.com>
Signed-off-by: Amichai Hemli <amichai.hemli@intl.att.com>
Signed-off-by: Ittay Stern <ittay.stern@att.com>
Diffstat (limited to 'vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/shared.tree.service.ts')
-rw-r--r-- | vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/shared.tree.service.ts | 87 |
1 files changed, 76 insertions, 11 deletions
diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/shared.tree.service.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/shared.tree.service.ts index 7df03fd0a..c56cc4999 100644 --- a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/shared.tree.service.ts +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/shared.tree.service.ts @@ -7,10 +7,12 @@ import {MessageBoxService} from "../../../shared/components/messageBox/messageBo import * as _ from "lodash"; import {DrawingBoardModes} from "../drawing-board.modes"; import {AuditInfoModalComponent} from "../../../shared/components/auditInfoModal/auditInfoModal.component"; -import {VnfModelInfo} from "./models/vnf/vnf.model.info"; import {ILevelNodeInfo} from "./models/basic.model.info"; import {ComponentInfoModel, ComponentInfoType} from "../component-info/component-info-model"; import {ModelInformationItem} from "../../../shared/components/model-information/model-information.component"; +import {undoUpgradeService, upgradeService} from "../../../shared/storeUtil/utils/service/service.actions"; +import {VNFMethods} from "../../../shared/storeUtil/utils/vnf/vnf.actions"; +import {FeatureFlagsService, Features} from "../../../shared/services/featureFlag/feature-flags.service"; @Injectable() export class SharedTreeService { @@ -106,16 +108,7 @@ export class SharedTreeService { * should return true if can delete **********************************************/ shouldShowDelete(node): boolean { - const mode = this._store.getState().global.drawingBoardStatus; - if (!_.isNil(node) && !_.isNil(node.data) && !_.isNil(node.data.action) && !_.isNil(node.data.menuActions['delete'])) { - if (mode !== DrawingBoardModes.EDIT || node.data.action === ServiceInstanceActions.Create) { - return false; - } else if (node.data.action === ServiceInstanceActions.None) { - return true - } - return false; - } - return false; + return this.shouldShowButtonGeneric(node, "delete") } /********************************************** @@ -146,6 +139,78 @@ export class SharedTreeService { return false; } /********************************************** + * enabled only on edit/design + * enabled only if there's a newer version for VNF-M + **********************************************/ + upgradeBottomUp(node,serviceModelId: string): void { + this.iterateOverTreeBranchAndRunAction(node, serviceModelId, VNFMethods.UPGRADE); + this._store.dispatch(upgradeService(serviceModelId)); + } + + private iterateOverTreeBranchAndRunAction(node, serviceModelId: string, actionMethod) { + while (_.has(node.parent, 'data') && _.has(node.parent.data, 'menuActions') + && !_.isNil(node.parent.data.menuActions[actionMethod])) { + node = node.parent; + node.data.menuActions[actionMethod]['method'](node, serviceModelId); + } + } + + /**************************************************** + * should return true if customer can upgrade a VFM * + ****************************************************/ + shouldShowUpgrade(node, serviceModelId): boolean { + if (FeatureFlagsService.getFlagState(Features.FLAG_FLASH_REPLACE_VF_MODULE, this._store) && + this.isThereAnUpdatedLatestVersion(serviceModelId)) { + return this.shouldShowButtonGeneric(node, VNFMethods.UPGRADE); + } + else { + return false + } + } + + private isThereAnUpdatedLatestVersion(serviceModelId) : boolean{ + let serviceInstance = this._store.getState().service.serviceInstance[serviceModelId]; + return !_.isNil(serviceInstance.latestAvailableVersion) && (Number(serviceInstance.modelInfo.modelVersion) < serviceInstance.latestAvailableVersion); + } + + private shouldShowButtonGeneric(node, method) { + const mode = this._store.getState().global.drawingBoardStatus; + if (!_.isNil(node) && !_.isNil(node.data) && !_.isNil(node.data.action) && !_.isNil(node.data.menuActions[method])) { + if (mode !== DrawingBoardModes.EDIT || node.data.action === ServiceInstanceActions.Create) { + return false; + } + else if (node.data.action === ServiceInstanceActions.None) { + return true + } + } + return false; + } + + /********************************************** + * return boolean according to + * current defined action of VFModule node + **********************************************/ + shouldShowUndoUpgrade(node): boolean { + const mode = this._store.getState().global.drawingBoardStatus; + if (mode === DrawingBoardModes.EDIT && !_.isNil(node.data.action) && !_.isNil(node.data.menuActions[VNFMethods.UNDO_UPGRADE])) { + if (node.data.action === ServiceInstanceActions.Upgrade) { + return false; + } else if (node.data.action.split('_').pop() === ServiceInstanceActions.Upgrade) { + return true + } + return false; + } + return false; + } + /********************************************** + * enabled only on edit/design + * enabled only if there's a newer version for VNF-M + **********************************************/ + undoUpgradeBottomUp(node,serviceModelId: string): void { + this.iterateOverTreeBranchAndRunAction(node, serviceModelId, VNFMethods.UNDO_UPGRADE); + this._store.dispatch(undoUpgradeService(serviceModelId)); + } + /********************************************** * should return true if can duplicate by mode **********************************************/ shouldShowDuplicate(node): boolean { |