summaryrefslogtreecommitdiffstats
path: root/gui-clamp/ui-react/src/components/dialogs/Policy/PoliciesTreeViewer.js
diff options
context:
space:
mode:
Diffstat (limited to 'gui-clamp/ui-react/src/components/dialogs/Policy/PoliciesTreeViewer.js')
-rw-r--r--gui-clamp/ui-react/src/components/dialogs/Policy/PoliciesTreeViewer.js150
1 files changed, 81 insertions, 69 deletions
diff --git a/gui-clamp/ui-react/src/components/dialogs/Policy/PoliciesTreeViewer.js b/gui-clamp/ui-react/src/components/dialogs/Policy/PoliciesTreeViewer.js
index 5bca4e6..7ec7eef 100644
--- a/gui-clamp/ui-react/src/components/dialogs/Policy/PoliciesTreeViewer.js
+++ b/gui-clamp/ui-react/src/components/dialogs/Policy/PoliciesTreeViewer.js
@@ -2,8 +2,8 @@
* ============LICENSE_START=======================================================
* ONAP POLICY-CLAMP
* ================================================================================
- * Copyright (C) 2021 AT&T Intellectual Property. All rights
- * reserved.
+ * Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2022 Nordix Foundation.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -21,7 +21,7 @@
*
*/
-import React, { forwardRef } from 'react'
+import React from 'react'
import TreeView from '@material-ui/lab/TreeView';
import TreeItem from '@material-ui/lab/TreeItem';
import FolderIcon from '@material-ui/icons/Folder';
@@ -31,79 +31,91 @@ import DescriptionIcon from '@material-ui/icons/Description';
export default class PoliciesTreeViewer extends React.Component {
- separator = ".";
+ separator = ".";
- nodesList = new Map();
+ nodesList = new Map();
- constructor(props, context) {
- super(props, context);
- this.createPoliciesTree = this.createPoliciesTree.bind(this);
- this.handleTreeItemClick = this.handleTreeItemClick.bind(this);
- this.buildNameWithParent = this.buildNameWithParent.bind(this);
+ constructor(props, context) {
+ super(props, context);
+ this.createPoliciesTree = this.createPoliciesTree.bind(this);
+ this.handleTreeItemClick = this.handleTreeItemClick.bind(this);
+ this.buildNameWithParent = this.buildNameWithParent.bind(this);
- }
+ }
- state = {
- policiesTreeData: this.createPoliciesTree(this.props.policiesData),
- }
+ state = {
+ policiesTreeData: this.createPoliciesTree(this.props.policiesData),
+ }
- componentDidUpdate(prevProps) {
- if (prevProps.policiesData !== this.props.policiesData) {
- this.setState({ policiesTreeData: this.createPoliciesTree(this.props.policiesData) })
+ componentDidUpdate(prevProps) {
+ if (prevProps.policiesData !== this.props.policiesData) {
+ this.setState({policiesTreeData: this.createPoliciesTree(this.props.policiesData)})
+ }
}
- }
-
- createPoliciesTree(policiesArray) {
- // put my policies array in a Json
- let nodeId = 1;
- let root = { id: nodeId, policyCount: 0, name: "ROOT", children: [], parent: undefined };
- this.nodesList.set(nodeId++, root);
-
- policiesArray.forEach(policy => {
- let currentTreeNode = root;
- policy[this.props.valueForTreeCreation].split(this.separator).forEach((policyNamePart, index, policyNamePartsArray) => {
- let node = currentTreeNode["children"].find(element => element.name === policyNamePart);
- if (typeof (node) === "undefined") {
- node = { id: nodeId, policyCount: 0, children: [], name: policyNamePart, parent: currentTreeNode };
- this.nodesList.set(nodeId++, node);
- currentTreeNode["children"].push(node);
+
+ createPoliciesTree(policiesArray) {
+ console.log('createPoliciesTree called')
+ // put my policies array in a Json
+ let nodeId = 1;
+ let root = {id: nodeId, policyCount: 0, name: "ROOT", children: [], parent: undefined};
+ this.nodesList.set(nodeId++, root);
+
+ if (policiesArray !== null && policiesArray.forEach !== undefined) {
+
+ policiesArray.forEach(policy => {
+ let currentTreeNode = root;
+ policy[this.props.valueForTreeCreation].split(this.separator).forEach((policyNamePart, index, policyNamePartsArray) => {
+ let node = currentTreeNode["children"].find(element => element.name === policyNamePart);
+ if (typeof (node) === "undefined") {
+ node = {
+ id: nodeId,
+ policyCount: 0,
+ children: [],
+ name: policyNamePart,
+ parent: currentTreeNode
+ };
+ this.nodesList.set(nodeId++, node);
+ currentTreeNode["children"].push(node);
+ }
+ if ((index + 1) === policyNamePartsArray.length) {
+ ++currentTreeNode["policyCount"];
+ }
+ currentTreeNode = node;
+ })
+ });
}
- if ((index + 1) === policyNamePartsArray.length) {
- ++currentTreeNode["policyCount"];
+ return root;
+ }
+
+ buildNameWithParent(node) {
+ let nameToBuild = node.name;
+ if (node.parent !== undefined) {
+ nameToBuild = this.buildNameWithParent(node.parent) + this.separator + node.name;
}
- currentTreeNode = node;
- })
- })
- return root;
- }
-
- buildNameWithParent(node) {
- let nameToBuild = node.name;
- if (node.parent !== undefined) {
- nameToBuild = this.buildNameWithParent(node.parent) + this.separator + node.name;
+ return nameToBuild;
+ }
+
+ handleTreeItemClick(event, value) {
+ let fullName = this.buildNameWithParent(this.nodesList.get(value[0])).substring(5);
+ this.props.policiesFilterFunction(fullName);
+ }
+
+ renderTreeItems(nodes) {
+ return (<TreeItem key={nodes.id} nodeId={nodes.id} label={nodes.name + "(" + nodes.policyCount + ")"}
+ onNodeSelect={this.handleTreeItemClick}>
+ {
+ Array.isArray(nodes.children) ? nodes.children.map((node) => this.renderTreeItems(node)) : null
+ }
+ </TreeItem>);
+ };
+
+ render() {
+ return (
+ <TreeView defaultExpanded={['root']} defaultCollapseIcon={<FolderOpenIcon/>}
+ defaultExpandIcon={<FolderIcon/>} defaultEndIcon={<DescriptionIcon/>}
+ onNodeSelect={this.handleTreeItemClick} multiSelect>
+ {this.renderTreeItems(this.state.policiesTreeData)}
+ </TreeView>
+ );
}
- return nameToBuild;
- }
-
- handleTreeItemClick(event, value) {
- let fullName = this.buildNameWithParent(this.nodesList.get(value[0])).substring(5);
- this.props.policiesFilterFunction(fullName);
- }
-
- renderTreeItems(nodes) {
- return (<TreeItem key={ nodes.id } nodeId={ nodes.id } label={ nodes.name + "(" + nodes.policyCount + ")" } onNodeSelect={ this.handleTreeItemClick }>
- {
- Array.isArray(nodes.children) ? nodes.children.map((node) => this.renderTreeItems(node)) : null
- }
- </TreeItem>);
- };
-
- render() {
- return (
- <TreeView defaultExpanded={ ['root'] } defaultCollapseIcon={ <FolderOpenIcon/> }
- defaultExpandIcon={ <FolderIcon/> } defaultEndIcon={ <DescriptionIcon/> } onNodeSelect={ this.handleTreeItemClick } multiSelect>
- { this.renderTreeItems(this.state.policiesTreeData) }
- </TreeView>
- );
- }
}