supervisor-simulator/tools/ndbs/server/web/index.html
2026-01-18 12:38:03 +08:00

112 lines
4.4 KiB
HTML

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="icon" href="/static/icon.svg" type="image/svg+xml" />
<link rel="stylesheet" href="/static/styles.css" />
<title>NDBS Console</title>
</head>
<body>
<div class="app-shell">
<aside class="sidebar">
<div class="brand">
<div class="brand-title">NDBS Console</div>
<div class="brand-subtitle">Single-service balance editor</div>
</div>
<div class="quick-actions">
<button id="refresh-button" class="ghost">Refresh</button>
</div>
<input id="filter-input" class="filter-input" placeholder="Filter files" />
<div class="list-section">
<div class="section-header">
<span>Definitions</span>
<span id="definitions-count" class="section-count">0</span>
</div>
<div id="definitions-list" class="nav-list"></div>
</div>
<div class="list-section">
<div class="section-header">
<span>Rules</span>
<span id="rules-count" class="section-count">0</span>
</div>
<div id="rules-list" class="nav-list"></div>
</div>
</aside>
<main class="main">
<section class="panel hero">
<div class="hero-top">NDBS 2.0</div>
<h1>Numerical design studio</h1>
<p>
Edit JSON and TRES definitions, generate new rule scripts, and sanity-check
builds without running a separate frontend stack.
</p>
</section>
<section class="panel controls">
<div class="panel-title">Rule controls</div>
<div class="control-row">
<input id="new-rule-id" class="text-input" placeholder="new_rule_id" />
<button id="create-rule">Create</button>
<button id="build-button" class="ghost">Verify build</button>
</div>
<div id="build-output" class="build-output"></div>
</section>
<section class="panel guide">
<div class="panel-title">Definition guide</div>
<div id="guide-title" class="guide-title">No definition selected</div>
<div id="guide-desc" class="guide-desc">
Select a definition file to see expected fields and templates.
</div>
<div id="guide-fields" class="guide-fields"></div>
<div class="guide-actions">
<button id="insert-template" class="ghost">Insert template</button>
<button id="validate-file">Validate file</button>
<button id="validate-all" class="ghost">Validate all</button>
</div>
<div id="validation-output" class="build-output hidden"></div>
</section>
<section class="panel editor-panel">
<div class="editor-header">
<div>
<div id="editor-title" class="panel-title">No file selected</div>
<div id="editor-subtitle" class="panel-subtitle">
Pick a definition or rule from the sidebar.
</div>
</div>
<div class="editor-actions">
<div class="view-toggle">
<button id="view-raw" class="ghost">Raw</button>
<button id="view-structured">Structured</button>
</div>
<button id="format-button" class="ghost">Format</button>
<button id="save-button">Save</button>
</div>
</div>
<div id="schema-summary" class="schema-summary hidden"></div>
<div id="structured-editor" class="structured hidden">
<div class="structured-toolbar">
<select id="entry-select" class="text-input"></select>
<button id="add-entry" class="ghost">Add entry</button>
<button id="delete-entry" class="ghost">Delete entry</button>
</div>
<div id="structured-form" class="structured-form"></div>
</div>
<div id="raw-editor" class="raw-editor">
<textarea
id="editor-textarea"
class="code-area"
spellcheck="false"
placeholder="Open a file to start editing."
></textarea>
</div>
<div id="status-message" class="status-message"></div>
</section>
</main>
</div>
<script src="/static/app.js"></script>
</body>
</html>