1 import {Component, OnInit, ViewChild} from '@angular/core';
2 import {DrawingBoardTreeComponent} from "./drawing-board-tree/drawing-board-tree.component";
3 import {AvailableModelsTreeComponent} from "./available-models-tree/available-models-tree.component";
4 import {ITreeNode} from "angular-tree-component/dist/defs/api";
5 import {TreeComponent} from 'angular-tree-component';
6 import {ActivatedRoute} from "@angular/router";
7 import * as _ from 'lodash';
8 import {DrawingBoardModes} from "./drawing-board.modes";
9 import {NgRedux} from "@angular-redux/store";
10 import {AppState} from "../../shared/store/reducers";
11 import {updateDrawingBoardStatus} from "../../shared/storeUtil/utils/global/global.actions";
12 import {FeatureFlagsService, Features} from "../../shared/services/featureFlag/feature-flags.service";
13 import {ComponentInfoService} from "./component-info/component-info.service";
14 import {ComponentInfoModel, ComponentInfoType} from "./component-info/component-info-model";
17 selector: 'service-planning',
18 templateUrl: './service-planning.component.html',
19 styleUrls: ['./service-planning.component.scss']
22 export class ServicePlanningComponent implements OnInit {
24 constructor(private route: ActivatedRoute,
25 private store: NgRedux<AppState>) {
28 pageMode: DrawingBoardModes = DrawingBoardModes.CREATE;
29 @ViewChild(DrawingBoardTreeComponent) drawingModelTree;
30 @ViewChild(AvailableModelsTreeComponent) availableModelTree;
32 isShowTree(): boolean {
36 public highlightNodeBySelectingInstance(modelId: number): void {
37 // modelId might be undefined, e.g., if selected instance has no source in model
38 let matchInstance = modelId ? this.availableModelTree.tree.treeModel.getNodeBy((node: ITreeNode) => (node.data.modelUniqueId) === modelId) : undefined;
40 matchInstance.setActiveAndVisible().expand();
42 this.clearSelectionInTree(this.availableModelTree.tree);
46 public highlightInstancesBySelectingNode(uniqueId: string): void {
47 if (this.isShowTree()) {
49 let matchInstances = _this.searchTree(uniqueId);
50 if (!matchInstances.length)
51 _this.clearSelectionInTree(_this.drawingModelTree.tree);
52 matchInstances.forEach(function (instance, index) {
53 let multi: boolean = !!index;
54 _this.drawingModelTree.tree.treeModel.getNodeById(instance.id)
55 .setActiveAndVisible(multi).expand();
61 clearSelectionInTree(tree: TreeComponent): void {
62 let activateNode = tree.treeModel.getActiveNode();
63 activateNode ? activateNode.toggleActivated().blur() : null;
66 searchTree(uniqueId: string) {
69 let nodes = _this.drawingModelTree.nodes;
70 nodes.forEach(function (node) {
71 _this.searchTreeNode(node, uniqueId, results);
76 searchTreeNode(node, uniqueId: string, results): void {
77 if ((node.modelUniqueId) === uniqueId) {
81 if (node.children != null) {
82 for (let i = 0; i < node.children.length; i++) {
83 this.searchTreeNode(node.children[i], uniqueId, results);
89 this.pageMode = (!_.isNil(this.route.routeConfig.path) && this.route.routeConfig.path !== "") ? this.route.routeConfig.path as DrawingBoardModes : DrawingBoardModes.CREATE;
90 this.store.dispatch(updateDrawingBoardStatus(this.pageMode));
93 isShowComponentInfo():boolean {
94 return FeatureFlagsService.getFlagState(Features.FLAG_1906_COMPONENT_INFO, this.store)
98 this.clearSelectionInTree(this.drawingModelTree.tree);
99 this.clearSelectionInTree(this.availableModelTree.tree);
100 ComponentInfoService.triggerComponentInfoChange.next(new ComponentInfoModel(ComponentInfoType.SERVICE, [], []))
104 export class ServicePlanningEmptyComponent extends ServicePlanningComponent {
105 isShowTree(): boolean {