diff --git a/src/app/TopologyView.js b/src/app/TopologyView.js index f3c114a..eb7bcf7 100644 --- a/src/app/TopologyView.js +++ b/src/app/TopologyView.js @@ -1,19 +1,13 @@ import React from "react"; import ReactDOM from "react-dom"; -//import cytoscape from "cytoscape"; import Cytoscape from "react-cytoscapejs"; -//import CytoscapeComponent from "react-cytoscapejs"; -import CollapsibleButton from "./CollapsibleButton"; +import CollapseButton from "./CustomCollapsibleButton"; import cytoscapeStyle from "./cytoscapeStyle.js"; import { Typeahead } from "react-bootstrap-typeahead"; -//import { Spinner } from "react-bootstrap"; import SideBar from "./Sidebar"; import { connect } from "react-redux"; import { setCyElements } from "../features/evio/evioSlice"; import { - //setSelectedElement, - //clearSelectedElement, - //elementTypes, setRedrawGraph, } from "../features/evio/evioSlice"; import { setCurrentView } from "../features/view/viewSlice"; @@ -28,9 +22,7 @@ const nodeStates = { class TopologyView extends React.Component { constructor(props) { super(props); - this.state = { - isSwapToggle: false, - }; + this.isSwapToggle = false; this.intervalId = null; this.timeoutId = null; this.autoRefresh = this.props.autoUpdate; @@ -211,8 +203,6 @@ class TopologyView extends React.Component { .not(selectedElement); let adj = selectedElement.neighborhood(); let abscomp = adj.absoluteComplement(); - // console.log("nei", neighborhood, "adj", adj); - // console.log("excluded", excluded, "abscomp", abscomp); } else if (selectedElement.isEdge()) { neighborhood = selectedElement.connectedNodes().union(selectedElement); excluded = this.cy @@ -233,7 +223,6 @@ class TopologyView extends React.Component { var data = await res.json(); var nodeLocation = data.results[data.results.length - 1].formatted_address; - console.log("formatted_address", nodeLocation); return nodeLocation.slice(7, nodeLocation.length); } catch (err) { return "Unknown"; @@ -277,26 +266,20 @@ class TopologyView extends React.Component { ); } - getNotReportingNodeDetails(notReportingNode) { + getNotReportingNodeDetails(cyNode) { var nodeContent = ( - +
-
{notReportingNode.data().label}
+
{cyNode.data().label}
Node ID
- +
State
- +
Location
- +
-
+ ); return nodeContent; } @@ -309,72 +292,63 @@ class TopologyView extends React.Component { } } var nodeContent = ( - -
-
{cyNode.data().label}
-
Node ID
- -
State
- -
Location
- -
-
- {sidebarNodeslist.map((connectedNode) => { - try { - let [connectedlinkDetail, tunnelId] = - this.getConnectedLinkDetails( - cyNode, - connectedNode, - connectedEdges - ); - var connectedNodeBtn = ( - -
Node ID
- -
Tunnel ID
- -
Interface Name
- -
MAC
- -
State
- -
Tunnel Type
- -
- ); - - return connectedNodeBtn; - } catch (e) { - console.log(e); - return false; - } - })} + +
Node ID
+ +
State
+ +
Location
+ +
+
-
-
+ } + > + {sidebarNodeslist.map((connectedNode) => { + try { + var [connectedlinkDetail, tunnelId] = this.getConnectedLinkDetails( + cyNode, + connectedNode, + connectedEdges + ); + var connectedNodeBtn = ( + +
Node ID
+ +
Tunnel ID
+ +
Interface Name
+ +
MAC
+ +
State
+ +
Tunnel Type
+ +
+ ); + return connectedNodeBtn; + } catch (e) { + console.log(e); + return false; + } + })} +
+ ); return nodeContent; } @@ -382,13 +356,7 @@ class TopologyView extends React.Component { getNotConnectedNodeDetails(cyNode) { var nodeContent = ( //No tunnels node - +
{cyNode.data().label}
Node ID
@@ -399,7 +367,7 @@ class TopologyView extends React.Component {
-
+ ); return nodeContent; } @@ -408,6 +376,27 @@ class TopologyView extends React.Component { var connectedNodes = adj.nodes(); var connectedEdges = adj.edges(); var nodeDetails = null; + if(cyNode.data().hasOwnProperty("location")){ + if (cyNode.data("state") === nodeStates.notReporting) { + nodeDetails = this.getNotReportingNodeDetails(cyNode); + } else if (cyNode.data("state") === nodeStates.connected) { + nodeDetails = this.getConnectedNodeDetails( + cyNode, + connectedNodes, + connectedEdges + ); + } else if (cyNode.data("state") === nodeStates.noTunnels) { + nodeDetails = this.getNotConnectedNodeDetails(cyNode); + } + ReactDOM.render( +
+
Node Details
+
{nodeDetails}
+
, + document.getElementById("sideBarContent") + ); + } + else{ this.queryGeoCoordinates(cyNode.data("coords")) .then((loc) => { cyNode.data("location", loc); @@ -433,22 +422,23 @@ class TopologyView extends React.Component { .catch((err) => { console.warn(err); }); + } }; getConnectedLinkDetails(source, tgt, connectedEdges) { for (var edge of connectedEdges) { if ( - (source.data().id === edge.data("source") && - tgt.id === edge.data("target")) || - (source.data().id === edge.data.target && - tgt.id === edge.data("source")) + (source.data().id === edge._private.data.source && + tgt.id === edge._private.data.target) || + (source.data().id === edge._private.data.target && + tgt.id === edge._private.data.source) ) { - for (var descriptorItem of edge.data("descriptor")) { + for (var descriptorItem of edge._private.data.descriptor) { if ( source.data().id === descriptorItem.Source && tgt.id === descriptorItem.Target ) { - return [descriptorItem, edge.data("id")]; + return [descriptorItem, edge._private.data.id]; } } } @@ -480,7 +470,7 @@ class TopologyView extends React.Component { .data; } } - if (this.state.isSwapToggle === false) { + if (this.isSwapToggle === false) { return [sourceNodeLinkDetails, srcNode, tgtNode]; } else { //if swapbutton toggled then swap source and node details @@ -490,7 +480,7 @@ class TopologyView extends React.Component { } } - getTunnelWithBothReportingNodes(selectedTunnel) { + getTunnelWithBothReportingNodes(selectedTunnel, adj) { var LocalEndpointInternal; var [sourceNodeLinkDetails, srcNode, tgtNode] = this.getSourceAndTargetDetails(selectedTunnel); @@ -501,69 +491,42 @@ class TopologyView extends React.Component { } var linkContent = ( - +
-
{sourceNodeLinkDetails.TapName}
-
Node ID
State
Location
- {/* */} - -
+ + -
Node ID
State
Location
- {/* */} - -
+ +
-

Tunnel ID
- +
Interface Name
MAC
@@ -597,12 +560,12 @@ class TopologyView extends React.Component { {sourceNodeLinkDetails.RemoteEndpoint.External}
-
+ ); return linkContent; } - getTunnelWithEitherOneReportingNodes(selectedTunnel) { + getTunnelWithEitherOneReportingNodes(selectedTunnel, adj) { var LocalEndpointInternal; var [sourceNodeLinkDetails, srcNode, tgtNode] = this.getSourceAndTargetDetails(selectedTunnel); @@ -612,69 +575,44 @@ class TopologyView extends React.Component { LocalEndpointInternal = sourceNodeLinkDetails.LocalEndpoint.Internal; } var linkContent = ( -
-
{sourceNodeLinkDetails.TapName}
-
Node ID
State
Location
- {/* */} - -
+ + - +
Node ID
State
Location
- {/* */} - -
+ +
-

Tunnel ID
- +
Interface Name
MAC
@@ -708,33 +646,30 @@ class TopologyView extends React.Component { {sourceNodeLinkDetails.RemoteEndpoint.External}
-
+ ); return linkContent; } getTunnelWithNoReportingNodes() { var linkContentNR = ( -
-
+ ); return linkContentNR; } - renderTunnelDetails = (cyEdge) => { + renderTunnelDetails = (cyEdge, adj) => { var tunnelDetails; var selectedTunnelNodesDetails = []; try { - var partitionElements = this.partitionElements(cyEdge); - for (var node of partitionElements.neighborhood) { + for (var node of adj) { if (node._private.group === "nodes") { selectedTunnelNodesDetails.push(node.data()); } @@ -743,14 +678,14 @@ class TopologyView extends React.Component { selectedTunnelNodesDetails[0].state === nodeStates.connected && selectedTunnelNodesDetails[1].state === nodeStates.connected ) { - tunnelDetails = this.getTunnelWithBothReportingNodes(cyEdge); + tunnelDetails = this.getTunnelWithBothReportingNodes(cyEdge, adj); } else if ( (selectedTunnelNodesDetails[0].state === nodeStates.connected && selectedTunnelNodesDetails[1].state === nodeStates.notReporting) || (selectedTunnelNodesDetails[0].state === nodeStates.notReporting && selectedTunnelNodesDetails[1].state === nodeStates.connected) ) { - tunnelDetails = this.getTunnelWithEitherOneReportingNodes(cyEdge); + tunnelDetails = this.getTunnelWithEitherOneReportingNodes(cyEdge, adj); } else if ( selectedTunnelNodesDetails[0].state === nodeStates.notReporting && selectedTunnelNodesDetails[1].state === nodeStates.notReporting @@ -769,8 +704,9 @@ class TopologyView extends React.Component { } }; - handleSwitch = () => { - this.setState({ isSwapToggle: !this.state.isSwapToggle }); + handleSwitch = (selectedTunnel, adj) => { + this.isSwapToggle= !this.isSwapToggle; + this.renderTunnelDetails(selectedTunnel, adj); }; handleWheel(e) { @@ -819,7 +755,7 @@ class TopologyView extends React.Component { if (this.props.zoomMax !== prevProps.zoomMax) { this.cy.maxZoom(this.props.zoomMax); } - if (this.props.redrawGraph !== prevState.redrawGraph) { + if (this.props.redrawGraph !== prevProps.redrawGraph) { this.cy.center(); } if (this.props.autoUpdate !== prevProps.autoUpdate) { @@ -886,8 +822,6 @@ class TopologyView extends React.Component { const mapStateToProps = (state) => ({ currentOverlayId: state.evio.selectedOverlayId, - //selectedElementType: state.evio.selectedElementType, - //selectedCyElementData: state.evio.selectedCyElementData, cyElements: state.evio.cyElements, currentView: state.view.current, selectedView: state.view.selected, @@ -902,8 +836,6 @@ const mapDispatchToProps = { setCurrentView, setZoomValue, setCyElements, - //setSelectedElement, - //clearSelectedElement, setRedrawGraph, };