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,
};