Skip to content

Commit 86e008e

Browse files
committed
Initialise Graph visualiser using reagraph
1 parent 4991c9e commit 86e008e

File tree

8 files changed

+1103
-58
lines changed

8 files changed

+1103
-58
lines changed

package-lock.json

Lines changed: 1063 additions & 13 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
"react": "^18.2.0",
1717
"react-dom": "^18.2.0",
1818
"react-icons": "^5.2.1",
19+
"reagraph": "^4.19.2",
1920
"zustand": "^4.5.4"
2021
},
2122
"devDependencies": {

src/App.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ function App() {
1414
<HashRouter>
1515
<Routes>
1616
<Route path="/" element={<Navbar />}>
17-
<Route index element={<SortingVisualiser />} />
17+
<Route index element={<PathfindingVisualiser />} />
18+
<Route path="/pathfinding" element={<PathfindingVisualiser />} />
1819
<Route path="/sorting" element={<SortingVisualiser />} />
1920
<Route path="/search" element={<SearchVisualiser />} />
20-
<Route path="/pathfinding" element={<PathfindingVisualiser />} />
2121
<Route path="/graph" element={<GraphVisualiser />} />
2222
<Route path="*" element={<NotFoundPage />} />
2323
</Route>
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
export default function GenerateRandomGraph(numNodes: number, setNodes: (nodes: { id: string }[]) => void) {
2+
const nodeTemp = [];
3+
for (let i = 0; i < numNodes; i++) {
4+
nodeTemp.push({
5+
id: i.toString(),
6+
fill: 'slateblue',
7+
});
8+
}
9+
setNodes(nodeTemp);
10+
}

src/pages/GraphVisualiser.tsx

Lines changed: 14 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,22 @@
1-
import React from 'react';
1+
import React, {useState, useEffect} from 'react';
2+
import { GraphCanvas } from 'reagraph';
3+
import GenerateRandomGraph from '../algorithms/graphs/GenerateRandomGraph';
4+
import '../styles/graph.css';
25

36
const GraphVisualiser: React.FC = () => {
7+
const [edges, setEdges] = useState([]);
8+
const [nodes, setNodes] = useState<{ id: string }[]>([]); // Specify the type of the nodes state variable
49

5-
let graph = {
6-
nodes: [
7-
{ id: '1', label: 'Node 1' },
8-
{ id: '2', label: 'Node 2' },
9-
{ id: '3', label: 'Node 3' },
10-
{ id: '4', label: 'Node 4' },
11-
{ id: '5', label: 'Node 5' },
12-
{ id: '6', label: 'Node 6' },
13-
{ id: '7', label: 'Node 7' },
14-
{ id: '8', label: 'Node 8' },
15-
{ id: '9', label: 'Node 9' },
16-
{ id: '10', label: 'Node 10' }
17-
],
18-
edges: [
19-
{ source: '1', target: '2' },
20-
{ source: '1', target: '3' },
21-
{ source: '2', target: '4' },
22-
{ source: '2', target: '5' },
23-
{ source: '3', target: '6' },
24-
{ source: '3', target: '7' },
25-
{ source: '4', target: '8' },
26-
{ source: '4', target: '9' },
27-
{ source: '5', target: '10' }
28-
]
29-
}
10+
useEffect(() => {
11+
GenerateRandomGraph(10, setNodes);
12+
}, []);
3013

3114
return (
32-
<div>
33-
<h1>Network Graph Visualiser</h1>
34-
<div>
35-
{/* Render nodes */}
36-
{graph.nodes.map((node) => (
37-
<div key={node.id}>{node.label}</div>
38-
))}
39-
</div>
40-
<div>
41-
{/* Render edges */}
42-
{graph.edges.map((edge) => (
43-
<div key={`${edge.source}-${edge.target}`}>
44-
{edge.source} -{'>'} {edge.target}
45-
</div>
46-
))}
47-
</div>
15+
<div className="graph-canvas">
16+
<GraphCanvas
17+
nodes={nodes}
18+
edges={edges}
19+
/>
4820
</div>
4921
);
5022
};

src/pages/Navbar.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@ const Navbar: React.FC = () => {
99
<h2>Algorithm Visualiser</h2>
1010
</div>
1111
<ul>
12+
<li><Link to="/pathfinding">Pathfinding Algorithms</Link></li>
1213
<li><Link to="/sorting">Sorting Algorithms</Link></li>
1314
<li><Link to="/search">Search Algorithms</Link></li>
14-
<li><Link to="/pathfinding">Pathfinding Algorithms</Link></li>
1515
<li><Link to="/graph">Graph Algorithms</Link></li>
1616
</ul>
1717
</nav>

src/styles/graph.css

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
.graph-canvas {
2+
width: 100%;
3+
height: 100svh;
4+
}
5+
6+
7+
.graph-canvas > div {
8+
position: relative;
9+
width:100%;
10+
height: 100%;
11+
}

src/styles/navbar.css

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
color: rgba(255, 255, 255, 0.87);
77
background-color: #131313;
88
text-align: left;
9+
z-index: 1;
910
}
1011

1112
.navbar > div > h2 {

0 commit comments

Comments
 (0)