removing retain assignments checkbox from upgade vfModule screen
[vid.git] / vid-webpack-master / src / app / drawingBoard / service-planning / objectsToTree / models / pnf / pnf.model.info.extended.ts
1 import {ILevelNodeInfo} from "../basic.model.info";
2 import {ComponentInfoType} from "../../../component-info/component-info-model";
3 import {ModelInformationItem} from "../../../../../shared/components/model-information/model-information.component";
4 import {ITreeNode} from "angular-tree-component/dist/defs/api";
5 import {AvailableNodeIcons} from "../../../available-models-tree/available-models-tree.service";
6
7 import {PNFModel} from "../../../../../shared/models/pnfModel";
8 import {SharedTreeService} from "../../shared.tree.service";
9 import * as _ from "lodash";
10 import {FeatureFlagsService} from "../../../../../shared/services/featureFlag/feature-flags.service";
11 import {NgRedux} from "@angular-redux/store";
12 import {AppState} from "../../../../../shared/store/reducers";
13 import {
14   GenericFormPopupComponent,
15   PopupType
16 } from "../../../../../shared/components/genericFormPopup/generic-form-popup.component";
17 import {DialogService} from "ng2-bootstrap-modal";
18 import {PnfPopupService} from "../../../../../shared/components/genericFormPopup/genericFormServices/pnf/pnf.popup.service";
19 import {PnfTreeNode} from "../../../../../shared/models/pnfTreeNode";
20
21
22 export class PnfModelInfoExtended implements ILevelNodeInfo{
23
24   constructor(
25     private _store: NgRedux<AppState>,
26     private _sharedTreeService: SharedTreeService,
27     private _dialogService: DialogService,
28     private _pnfPopupService: PnfPopupService
29   ){}
30
31   name: string = 'pnfs';
32   type: string ='PNF';
33   typeName: string = 'PNF';
34   childNames: string[];
35   componentInfoType = ComponentInfoType.PNF;
36
37   createInstanceTreeNode = (instance: any, model: any, parentModel: any, storeKey: string, serviceModelId: string): any => {
38     let node = new PnfTreeNode(instance, model, storeKey);
39     node.missingData = this.hasMissingData(instance, node, model.isEcompGeneratedNaming);
40     node.typeName = this.typeName;
41     node.menuActions = this.getMenuAction(<any>node, serviceModelId);
42     node.isFailed = _.isNil(instance.isFailed) ? false : instance.isFailed;
43     node.statusMessage = !_.isNil(instance.statusMessage) ? instance.statusMessage : "";
44     node = this._sharedTreeService.addingStatusProperty(node);
45     return node;
46   };
47
48   getInfo(model, instance): ModelInformationItem[] {
49     const modelInformation = !_.isEmpty(model) ? [
50       ModelInformationItem.createInstance("Min instances", !_.isNil(model.min) ? String(model.min) : null),
51       this._sharedTreeService.createMaximumToInstantiateModelInformationItem(model)
52     ] : [];
53
54     const instanceInfo = !_.isEmpty(instance) ? [
55       ModelInformationItem.createInstance("NF type", instance.nfType),
56       ModelInformationItem.createInstance("NF role", instance.nfRole)
57     ] : [];
58
59     const result = [modelInformation, instanceInfo];
60     return _.uniq(_.flatten(result));
61   }
62
63   getMenuAction(node: ITreeNode, serviceModelId: string): { [methodName: string]: { method: Function; visible: Function; enable: Function } } {
64     return {};
65   }
66
67   getModel = (instanceModel: any): PNFModel => {
68     return new PNFModel(instanceModel);
69   };
70
71   getNextLevelObject(): any { return null;  }
72
73   getNodeCount(node: ITreeNode, serviceModelId: string): number {
74     let map = null;
75     if (!_.isNil(this._store.getState().service.serviceInstance[serviceModelId])) {
76       map = this._store.getState().service.serviceInstance[serviceModelId].existingPNFCounterMap || 0;
77
78       if (!_.isNil(map)) {
79         let count = map[node.data.modelUniqueId] || 0;
80         count -= this._sharedTreeService.getExistingInstancesWithDeleteMode(node, serviceModelId, 'pnfs');
81         return count;
82       }
83     }
84     return 0;
85   }
86
87   getNodePosition(instance): number {
88     return !_.isNil(instance) ? instance.position : null;
89   }
90
91   getTooltip = (): string => 'PNF';
92
93
94   getType = (): string => 'PNF';
95
96
97   hasMissingData(instance, dynamicInputs: any, isEcompGeneratedNaming: boolean): boolean {
98     return false;
99   }
100
101   isEcompGeneratedNaming(currentModel): boolean {
102     return false;
103   }
104
105   onClickAdd(node, serviceModelId: string): void {
106     this._dialogService.addDialog(GenericFormPopupComponent, {
107       type: PopupType.PNF,
108       uuidData: <any>{
109         serviceId: serviceModelId,
110         modelName: node.data.name,
111         pnfStoreKey: null,
112         modelId: node.data.modelVersionId,
113         type: node.data.type,
114         popupService: this._pnfPopupService
115       },
116       node: node,
117       isUpdateMode: false
118     })
119   }
120
121   showNodeIcons(node: ITreeNode, serviceModelId: string): AvailableNodeIcons {
122     let counter: number = !_.isNil(this._store.getState().service.serviceInstance[serviceModelId]) ?
123       (this._store.getState().service.serviceInstance[serviceModelId].existingPNFCounterMap[node.data.modelUniqueId] || 0) : 0;
124     counter -= this._sharedTreeService.getExistingInstancesWithDeleteMode(node, serviceModelId, 'pnfs');
125
126     const properties = this._store.getState().service.serviceHierarchy[serviceModelId].pnfs[node.data.name].properties;
127     const flags = FeatureFlagsService.getAllFlags(this._store);
128     const isReachedLimit: boolean = this._sharedTreeService.isReachedToMaxInstances(properties, counter, flags);
129     const showAddIcon = this._sharedTreeService.shouldShowAddIcon() && !isReachedLimit;
130     return new AvailableNodeIcons(showAddIcon, isReachedLimit)
131   }
132
133   updateDynamicInputsDataFromModel = (currentModel): any => [];
134
135   updatePosition(that, node, instanceId): void {
136   }
137
138 }