/ proof-of-concept / benchcompress
Sign in
proof-of-concept / benchcompress
benchcompress / web-ui / src / App.tsx
108 lines · 3.1 KBCodeBlameHistory
bde0876rearrange tabsJeremy Magland 1import { BrowserRouter, Routes, Route, Link, Navigate } from "react-router-dom";
0968553routingJeremy Magland 2import { useEffect, useState } from "react";
3import axios from "axios";
4cc92d1incr version of algJeremy Magland 4import { ScrollToTop } from "./components/ScrollToTop";
85d3449pagesJeremy Magland 5import Home from "./pages/Home";
6c17da5about pageJeremy Magland 6import About from "./pages/About";
0968553routingJeremy Magland 7import { BenchmarkData } from "./types";
a4762faweb-uiJeremy Magland 8
9function App() {
0968553routingJeremy Magland 10 const [benchmarkData, setBenchmarkData] = useState<BenchmarkData | null>(
11 null,
12 );
13 const [isLoading, setIsLoading] = useState(true);
14 const [error, setError] = useState<string | null>(null);
16 useEffect(() => {
17 const fetchData = async () => {
18 try {
19 setIsLoading(true);
20 setError(null);
21 const response = await axios.get(
7884e06rename to benchcompressJeremy Magland 22 "https://raw.githubusercontent.com/magland/benchcompress/benchmark-results/benchmark_results/results.json",
0968553routingJeremy Magland 23 );
24 setBenchmarkData(response.data);
25 } catch (error) {
26 const message =
27 error instanceof Error ? error.message : "Failed to fetch data";
28 setError(message);
29 console.error("Error fetching benchmark data:", error);
30 } finally {
31 setIsLoading(false);
32 }
33 };
35 fetchData();
36 }, []);
a4762faweb-uiJeremy Magland 38 return (
7884e06rename to benchcompressJeremy Magland 39 <BrowserRouter basename="/benchcompress">
4cc92d1incr version of algJeremy Magland 40 <ScrollToTop />
a3cad9bformat codeJeremy Magland 41 <div
42 style={{
43 paddingTop: "5rem",
44 paddingLeft: "2rem",
45 paddingRight: "2rem",
46 paddingBottom: "2rem",
47 }}
48 >
49 <nav
50 style={{
51 position: "fixed",
52 top: 0,
53 left: 0,
54 right: 0,
55 padding: "1rem 2rem",
56 backgroundColor: "white",
57 borderBottom: "1px solid #eaeaea",
58 zIndex: 1000,
59 boxShadow: "0 2px 4px rgba(0,0,0,0.1)",
60 }}
61 >
bde0876rearrange tabsJeremy Magland 62 <div style={{ display: "flex", justifyContent: "flex-end" }}>
63 <Link
64 to="/about"
65 style={{
66 color: "#0066cc",
67 textDecoration: "none",
68 fontWeight: "500",
69 }}
70 >
71 About
72 </Link>
73 </div>
85d3449pagesJeremy Magland 74 </nav>
75 <main>
0968553routingJeremy Magland 76 {isLoading ? (
77 <div>Loading benchmark data...</div>
78 ) : error ? (
79 <div>Error: {error}</div>
80 ) : (
81 <Routes>
bde0876rearrange tabsJeremy Magland 82 <Route path="/" element={<Navigate to="/datasets" replace />} />
0968553routingJeremy Magland 83 <Route
84 path="/datasets"
bde0876rearrange tabsJeremy Magland 85 element={<Home benchmarkData={benchmarkData} />}
0968553routingJeremy Magland 86 />
87 <Route
88 path="/algorithms"
bde0876rearrange tabsJeremy Magland 89 element={<Home benchmarkData={benchmarkData} />}
0968553routingJeremy Magland 90 />
a09013dupload dataset .jsonJeremy Magland 91 <Route
92 path="/dataset/:datasetName"
bde0876rearrange tabsJeremy Magland 93 element={<Home benchmarkData={benchmarkData} />}
a09013dupload dataset .jsonJeremy Magland 94 />
0602a7eui improvementsJeremy Magland 95 <Route
96 path="/algorithm/:algorithmName"
bde0876rearrange tabsJeremy Magland 97 element={<Home benchmarkData={benchmarkData} />}
0602a7eui improvementsJeremy Magland 98 />
6c17da5about pageJeremy Magland 99 <Route path="/about" element={<About />} />
0968553routingJeremy Magland 100 </Routes>
101 )}
85d3449pagesJeremy Magland 102 </main>
103 </div>
104 </BrowserRouter>
a4762faweb-uiJeremy Magland 105 );
108export default App;
↑↓ move↵openescclose