1 import {ILevelNodeInfo} from "../basic.model.info";
2 import {SharedTreeService} from "../../shared.tree.service";
3 import {NgRedux} from "@angular-redux/store";
4 import {AppState} from "../../../../../shared/store/reducers";
5 import * as _ from "lodash";
6 import {ITreeNode} from "angular-tree-component/dist/defs/api";
7 import {AvailableNodeIcons} from "../../../available-models-tree/available-models-tree.service";
8 import {DynamicInputsService} from "../../dynamicInputs.service";
10 deleteActionRelatedVnfMemberInstance,
11 removeRelatedVnfMemberInstance,
12 undoDeleteActionRelatedVnfMemberInstance
13 } from "../../../../../shared/storeUtil/utils/relatedVnfMember/relatedVnfMember.actions";
14 import {VnfInstance} from "../../../../../shared/models/vnfInstance";
15 import {VNFModel} from "../../../../../shared/models/vnfModel";
16 import {VnfTreeNode} from "../../../../../shared/models/vnfTreeNode";
17 import {InputType} from "../../../../../shared/models/inputTypes";
18 import {ComponentInfoType} from "../../../component-info/component-info-model";
19 import {ModelInformationItem} from "../../../../../shared/components/model-information/model-information.component";
21 export class RelatedVnfMemberInfoModel implements ILevelNodeInfo {
22 constructor(private _sharedTreeService: SharedTreeService,
23 private _dynamicInputsService : DynamicInputsService,
24 private _store: NgRedux<AppState>) {
27 name: string = 'vnfs';
28 type: string = 'relatedVnfMember';
29 typeName: string = 'VNF';
30 componentInfoType = ComponentInfoType.VNFMEMBER;
32 /***********************************************************
33 * return if user should provide instance name or not.
34 * @param currentModel - current Model object
35 ************************************************************/
36 isUserProvidedNaming = (currentModel): boolean => {
37 const ecompGeneratedNaming = currentModel.properties.ecomp_generated_naming;
38 return ecompGeneratedNaming !== undefined && ecompGeneratedNaming === "false";
41 /***********************************************************
42 * return model dynamic inputs
43 * @param currentModel - current Model object
44 ************************************************************/
45 updateDynamicInputsDataFromModel = (currentModel): any => {
47 return _.isEmpty(displayInputs) ? [] : this._dynamicInputsService.getArbitraryInputs(displayInputs);
50 /***********************************************************
52 * @param vnfModelId - current Model id
53 * @param instance - vnf instance
54 * @param serviceHierarchy - serviceHierarchy
55 ************************************************************/
56 getModel = (vnfModelId: string, instance: VnfInstance, serviceHierarchy): VNFModel => {
57 const originalModelName = instance.originalName ? instance.originalName : vnfModelId;
58 return new VNFModel(this._sharedTreeService.modelByIdentifier(serviceHierarchy, this.name, originalModelName));
62 /***********************************************************
63 * return vnf instance tree node
64 * @param instance - vnf instance
65 * @param model - vnf model
67 * @param storeKey - store key if exist
68 * @param serviceModelId
69 ************************************************************/
70 createInstanceTreeNode = (instance: any, model: any, parentModel: any, storeKey: string, serviceModelId: string): any => {
71 let node = new VnfTreeNode(instance, model, storeKey);
72 node.missingData = this.hasMissingData(instance, node, model.isEcompGeneratedNaming);
73 node.typeName = this.typeName;
74 node.menuActions = this.getMenuAction(<any>node, serviceModelId);
75 node.isFailed = _.isNil(instance.isFailed) ? false : instance.isFailed;
76 node.statusMessage = !_.isNil(instance.statusMessage) ? instance.statusMessage: "";
77 node = this._sharedTreeService.addingStatusProperty(node);
81 /***********************************************************
82 * return next level object (null because is last level)
83 ************************************************************/
84 getNextLevelObject(): any {
88 /***********************************************************
89 * return if instance has missing data
90 * @param instance - vnf instance
91 * @param dynamicInputs
92 * @param isUserProvidedNaming
93 ************************************************************/
94 hasMissingData(instance, dynamicInputs: any, isUserProvidedNaming: boolean): boolean {
95 return this._sharedTreeService.hasMissingData(instance, dynamicInputs, isUserProvidedNaming, [InputType.LCP_REGION, InputType.TENANT, InputType.PLATFORM]);
98 getTooltip = (): string => 'VF';
100 getType = (): string => 'VF';
102 /***********************************************************
103 * doesn't have option from DrawingBoard model tree
104 ************************************************************/
105 onClickAdd(node, serviceModelId: string): void {}
107 /***********************************************************
108 * doesn't have option from DrawingBoard model tree
109 ************************************************************/
110 getNodeCount(node: ITreeNode, serviceModelId: string): number {return 0;}
112 /***********************************************************
113 * doesn't have option from DrawingBoard model tree
114 ************************************************************/
115 showNodeIcons(node: ITreeNode, serviceModelId: string): AvailableNodeIcons {
116 return new AvailableNodeIcons(false, false);
119 getMenuAction(node: ITreeNode, serviceModelId: string): { [methodName: string]: { method: Function, visible: Function, enable: Function }} {
122 method: (node, serviceModelId) => {
123 this._store.dispatch(removeRelatedVnfMemberInstance(node.parent.data.vnfGroupStoreKey, node.data.vnfStoreKey, serviceModelId));
125 visible: (node) => this._sharedTreeService.shouldShowRemoveAndEdit(node),
126 enable: (node) => this._sharedTreeService.shouldShowRemoveAndEdit(node)
129 method : (node, serviceModelId) => {
130 this._store.dispatch(deleteActionRelatedVnfMemberInstance(node.parent.data.vnfGroupStoreKey, node.data.vnfStoreKey, serviceModelId));
132 visible: (node) => this._sharedTreeService.shouldShowDelete(node, serviceModelId),
133 enable: (node) => this._sharedTreeService.shouldShowDelete(node, serviceModelId)
136 method : (node, serviceModelId) => {
137 this._store.dispatch(undoDeleteActionRelatedVnfMemberInstance(node.parent.data.vnfGroupStoreKey , node.data.vnfStoreKey, serviceModelId));
140 visible: (node) => this._sharedTreeService.shouldShowUndoDelete(node),
141 enable: (node, serviceModelId) => this._sharedTreeService.shouldShowUndoDelete(node) && this._sharedTreeService.shouldShowDelete(node.parent, serviceModelId) && !this._sharedTreeService.isServiceOnDeleteMode(serviceModelId)
146 isEcompGeneratedNaming = (currentModel): boolean => {
147 const ecompGeneratedNaming = currentModel.properties.ecomp_generated_naming;
148 return ecompGeneratedNaming === "true";
152 updatePosition(that , node, instanceId): void {
156 getNodePosition(instance): number {
160 getInfo(model, instance): ModelInformationItem[] {