diff options
Diffstat (limited to 'vid-webpack-master/src/app/drawingBoard/service-planning/available-models-tree/available-models-tree.component.ts')
-rw-r--r-- | vid-webpack-master/src/app/drawingBoard/service-planning/available-models-tree/available-models-tree.component.ts | 167 |
1 files changed, 167 insertions, 0 deletions
diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/available-models-tree/available-models-tree.component.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/available-models-tree/available-models-tree.component.ts new file mode 100644 index 000000000..31d7b03b8 --- /dev/null +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/available-models-tree/available-models-tree.component.ts @@ -0,0 +1,167 @@ +import {Component, EventEmitter, Output, ViewChild} from '@angular/core'; +import {ITreeOptions, TreeComponent} from 'angular-tree-component'; +import {IDType, ITreeNode} from 'angular-tree-component/dist/defs/api'; +import {DialogService} from 'ng2-bootstrap-modal'; +import {AvailableModelsTreeService} from './available-models-tree.service'; +import {NgRedux} from "@angular-redux/store"; +import {ActivatedRoute} from '@angular/router'; +import {AppState} from '../../../shared/store/reducers'; +import {AaiService} from '../../../shared/services/aaiService/aai.service'; +import {ServiceNodeTypes} from '../../../shared/models/ServiceNodeTypes'; +import {IframeService} from "../../../shared/utils/iframe.service"; +import {DefaultDataGeneratorService} from "../../../shared/services/defaultDataServiceGenerator/default.data.generator.service"; +import {VfModulePopuopService} from "../../../shared/components/genericFormPopup/genericFormServices/vfModule/vfModule.popuop.service"; +import {NetworkPopupService} from "../../../shared/components/genericFormPopup/genericFormServices/network/network.popup.service"; +import {createVFModuleInstance} from "../../../shared/storeUtil/utils/vfModule/vfModule.actions"; +import {VnfPopupService} from "../../../shared/components/genericFormPopup/genericFormServices/vnf/vnf.popup.service"; +import {DrawingBoardModes} from "../drawing-board.modes"; +import {DrawingBoardTreeService} from "../drawing-board-tree/drawing-board-tree.service"; +import {ObjectToModelTreeService} from "../objectsToTree/objectToModelTree/objectToModelTree.service"; +import {VnfGroupPopupService} from "../../../shared/components/genericFormPopup/genericFormServices/vnfGroup/vnfGroup.popup.service"; +import {SharedTreeService} from "../objectsToTree/shared.tree.service"; +import {changeInstanceCounter} from "../../../shared/storeUtil/utils/general/general.actions"; +import {createVnfGroupInstance} from "../../../shared/storeUtil/utils/vnfGroup/vnfGroup.actions"; +import {VnfGroupControlGenerator} from "../../../shared/components/genericForm/formControlsServices/vnfGroupGenerator/vnfGroup.control.generator"; +import {HighlightPipe} from "../../../shared/pipes/highlight/highlight-filter.pipe"; +import * as _ from 'lodash'; +import {DrawingBoardTreeComponent} from "../drawing-board-tree/drawing-board-tree.component"; + + +@Component({ + selector: 'available-models-tree', + templateUrl: './available-models-tree.component.html', + styleUrls: ['./available-models-tree.component.scss'], + providers : [HighlightPipe] +}) + +export class AvailableModelsTreeComponent { + filterValue : string = ''; + serviceModelId: string; + serviceHierarchy; + parentElementClassName = 'content'; + _store: NgRedux<AppState>; + isNewObject: boolean; + availableModelsTreeService: AvailableModelsTreeService; + drawingBoardTreeService: DrawingBoardTreeService; + + constructor(private _iframeService: IframeService, + private _aaiService: AaiService, + private route: ActivatedRoute, + private dialogService: DialogService, + private _availableModelsTreeService: AvailableModelsTreeService, + private _drawingBoardTreeService: DrawingBoardTreeService, + private _defaultDataGeneratorService: DefaultDataGeneratorService, + private _vnfGroupControlGenerator: VnfGroupControlGenerator, + private _vfModulePopuopService: VfModulePopuopService, + private _vnfGroupPopupService: VnfGroupPopupService, + private _vnfPopupService: VnfPopupService, + private _networkPopupService: NetworkPopupService, + private store: NgRedux<AppState>, + private _objectToModelTreeService : ObjectToModelTreeService, + private _sharedTreeService : SharedTreeService, + private _highlightPipe : HighlightPipe) { + this.availableModelsTreeService = _availableModelsTreeService; + this.drawingBoardTreeService = _drawingBoardTreeService; + + this._store = store; + this.route + .queryParams + .subscribe(params => { + this.serviceModelId = params['serviceModelId']; + this._aaiService.getServiceModelById(this.serviceModelId).subscribe( + value => { + this.serviceHierarchy = value; + this.nodes = this._objectToModelTreeService.convertServiceHierarchyModelToTreeNodes(this.serviceHierarchy); + }, + error => { + console.log('error is ', error) + } + ); + }); + + } + + @Output() + highlightInstances: EventEmitter<number> = new EventEmitter<number>(); + @ViewChild('tree') tree: TreeComponent; + + nodes = []; + service = {name: ''}; + + options: ITreeOptions = { + nodeHeight: 36, + dropSlotHeight: 0, + nodeClass: (node: ITreeNode) => { + if (node.data.type === ServiceNodeTypes.VFmodule && ! node.parent.data['getNodeCount'](node.parent, this.serviceModelId) && this.store.getState().global.drawingBoardStatus !== DrawingBoardModes.VIEW) { + node.data.disabled = true; + return 'tree-node tree-node-disabled'; + } + node.data.disabled = false; + return 'tree-node'; + } + }; + + + getNodeName(node : ITreeNode, filter : string) { + return this._highlightPipe.transform(node.data.name ,filter ? filter : ''); + } + + expandParentByNodeId(id: IDType): void { + this.tree.treeModel.getNodeById(id).parent.expand(); + } + + updateNodes(updateData : {nodes : any, filterValue : string}) : void { + this.nodes = updateData.nodes; + this.filterValue = updateData.filterValue; + } + + selectNode(node: ITreeNode): void { + node.expand(); + this._sharedTreeService.setSelectedVNF(null); + this.highlightInstances.emit(node.data.modelUniqueId); + } + + + + onClickAdd(node: ITreeNode, serviceId: string , isNewObject: boolean = false): void { + this.isNewObject = isNewObject; + let data = node.data; + let dynamicInputs = data.dynamicInputs; + let isAlaCarte: boolean = this.serviceHierarchy.service.instantiationType == "A-La-Carte"; + let isEcompGeneratedNaming: boolean = data.isEcompGeneratedNaming; + let type: string = data.type; + if (!this.store.getState().global.flags['FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD'] || node.data.type === ServiceNodeTypes.VF || + this._availableModelsTreeService.shouldOpenDialog(type, dynamicInputs, isEcompGeneratedNaming)) { + this._iframeService.addClassOpenModal(this.parentElementClassName); + node.data.onAddClick(node, serviceId); + } else { + if (node.data.type === ServiceNodeTypes.VnfGroup) { + let instanceName = this._vnfGroupControlGenerator.getDefaultInstanceName(null, serviceId, node.data.name); + let vnfGroup = this._defaultDataGeneratorService.generateVnfGroupInstance(this.serviceHierarchy.vnfGroups[node.data.name], isEcompGeneratedNaming, isAlaCarte, instanceName); + this._store.dispatch(changeInstanceCounter(node.data.modelUniqueId, serviceId, 1 , <any> {data: {type: 'VnfGroup'}})); + this._store.dispatch(createVnfGroupInstance(vnfGroup, node.data.name, serviceId, node.data.name)); + DrawingBoardTreeComponent.triggerreCalculateIsDirty.next(this.serviceModelId); + } else { + let vfModule = this._defaultDataGeneratorService.generateVFModule(this.serviceHierarchy.vnfs[node.parent.data.name].vfModules[node.data.name], dynamicInputs, isEcompGeneratedNaming, isAlaCarte); + if (this._sharedTreeService.selectedVNF) { + this.store.dispatch(createVFModuleInstance(vfModule, node.data.name, this.serviceModelId, null, this._sharedTreeService.selectedVNF)); + DrawingBoardTreeComponent.triggerreCalculateIsDirty.next(this.serviceModelId); + } else if (this._availableModelsTreeService.getOptionalVNFs(this.serviceModelId, node.parent.data.name).length === 1) { + let existVnf = this._store.getState().service.serviceInstance[this.serviceModelId].vnfs; + if(!_.isNil(existVnf)){ + for(let vnfKey in existVnf){ + if(existVnf[vnfKey]['modelInfo'].modelUniqueId === node.parent.data.id){ + this.store.dispatch(createVFModuleInstance(vfModule, node.data.name, this.serviceModelId, null, vnfKey)); + DrawingBoardTreeComponent.triggerreCalculateIsDirty.next(this.serviceModelId); + } + } + } + + + } else { + this._availableModelsTreeService.addingAlertAddingNewVfModuleModal(); + } + } + } + } +} |