1
0
Fork 0
Code Issues Pull requests Projects Releases 2 Packages Wiki Activity Actions Pages
DocForge2/src/docforge/assets/graph.html

139 lines
6.7 KiB
HTML
Raw Normal View History

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>DocForge graph</title>
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22/%3E">
<link rel="stylesheet" href="assets/graph.css">
</head>
<body>
<div class="app">
<header>
<div class="view-switch" id="view-switch" data-mode="nodes"
role="group" aria-label="Graph view">
<button id="view-nodes" type="button" aria-pressed="true">Nodes</button>
<button id="view-flow" type="button" aria-pressed="false">Flow</button>
</div>
<h1 id="project-title">DocForge graph</h1>
<div class="stats">
<span><strong id="node-count"></strong> nodes</span>
<span><strong id="edge-count"></strong> edges</span>
</div>
<div class="status" id="status">Loading validated index snapshot…</div>
</header>
<div class="layout">
<aside class="left" aria-label="Graph navigation">
<form id="search-form">
<label for="search">Find nodes</label>
<div class="search-row">
<input id="search" name="q" type="search" autocomplete="off"
placeholder="title, symbol, path…">
<button class="button" type="submit">Find</button>
</div>
<label for="family">Family</label>
<select id="family" name="family"><option value="">All families</option></select>
</form>
<div class="results-context">
<strong id="results-label">All nodes</strong>
<button id="clear-result-filter" type="button" hidden>Clear filter</button>
</div>
<div class="results" id="results"></div>
</aside>
<div class="panel-resizer" id="left-resizer" role="separator" tabindex="0"
aria-label="Resize navigation panel" aria-orientation="vertical"
aria-valuemin="220" aria-valuemax="900" aria-valuenow="310"></div>
<main class="canvas">
<div class="viewport-controls" role="group" aria-label="Graph viewport controls">
<button class="viewport-control" id="zoom-in" type="button"
title="Zoom in" aria-label="Zoom in">+</button>
<button class="viewport-control" id="zoom-out" type="button"
title="Zoom out" aria-label="Zoom out"></button>
<button class="viewport-control" id="reset-view" type="button"
title="Reset view" aria-label="Reset graph view">⌂</button>
<output class="zoom-level" id="zoom-level" aria-live="polite">100%</output>
<button class="restore-hidden" id="restore-hidden" type="button" hidden>
Restore hidden
</button>
</div>
<details class="relationship-key" id="relationship-key">
<summary>
<span>Relationships</span>
<span class="relationship-key-count" id="relationship-key-count">0 visible</span>
</summary>
<ul class="relationship-key-list" id="relationship-key-list"
aria-label="Visible relationship color and symbol key"></ul>
</details>
<svg id="graph" viewBox="-600 -410 1200 820"
role="img" aria-label="Node neighborhood"></svg>
<div class="empty" id="empty">Search for a node to inspect its neighborhood.</div>
<div class="connection-state" id="connection-state" role="alert" hidden>
<strong>Visualization disconnected</strong>
<span>The project-bound listener is unavailable. Invoke docforge_visualize again.</span>
</div>
<div class="viewport-hint">
Left-click descriptor · right-click full inspector · Space centers selection
</div>
</main>
<div class="panel-resizer" id="right-resizer" role="separator" tabindex="0"
aria-label="Resize neighborhood panel" aria-orientation="vertical"
aria-valuemin="240" aria-valuemax="900" aria-valuenow="350"></div>
<aside class="right" aria-label="Neighborhood navigation">
<p class="panel-empty" id="neighborhood-empty">
Select a node to inspect its nearby relationships.
</p>
<div class="neighborhood" id="neighborhood" hidden>
<h2 class="neighborhood-title">Neighborhood</h2>
<div class="node-legend" role="group" aria-label="Node role colors">
<span class="node-legend-primary"><i></i><b id="primary-role-label">Focus</b></span>
<span class="node-legend-child"><i></i><b id="child-role-label">Outgoing</b></span>
<span class="node-legend-edge"><i></i><b id="edge-role-label">Incoming</b></span>
</div>
<div id="neighborhood-sections"></div>
</div>
</aside>
</div>
</div>
<dialog id="node-dialog" aria-labelledby="node-dialog-label">
<div class="dialog-shell">
<div class="dialog-head">
<strong id="node-dialog-label">Inspect node</strong>
<button class="dialog-close" id="close-node-dialog" type="button"
aria-label="Close node inspection">×</button>
</div>
<div class="dialog-body" id="node-dialog-details"></div>
<div class="dialog-actions">
<button class="button" id="open-node-source" type="button">Open source</button>
<button class="button" id="hide-node" type="button">Hide node</button>
<button class="button" id="explore-node" type="button">Explore neighborhood</button>
<button class="button" id="dismiss-node-dialog" type="button">Close</button>
</div>
</div>
</dialog>
<dialog class="compact-dialog" id="node-card" aria-label="Selected node descriptor">
<div class="dialog-shell">
<div class="dialog-body" id="node-card-details"></div>
<div class="dialog-actions">
<button class="button" id="open-card-source" type="button">Open source</button>
<button class="button" id="hide-card-node" type="button">Hide node</button>
<button class="button" id="explore-card-node" type="button">Explore neighborhood</button>
</div>
</div>
</dialog>
<dialog class="source-dialog" id="source-dialog" aria-labelledby="source-dialog-label">
<div class="dialog-shell">
<div class="dialog-head">
<strong id="source-dialog-label">Node source</strong>
<button class="dialog-close" id="close-source-dialog" type="button"
aria-label="Close source">×</button>
</div>
<div class="dialog-body"><code class="source-code" id="source-code"></code></div>
<div class="dialog-actions">
<button class="button" id="dismiss-source-dialog" type="button">Close</button>
</div>
</div>
</dialog>
<script src="assets/graph.js" defer></script>
</body>
</html>