Files
maglink-console/static/index.html
2026-06-24 11:15:18 -05:00

157 lines
6.0 KiB
HTML

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>H11 RTK BLE Console</title>
<link rel="stylesheet" href="/static/styles.css" />
</head>
<body>
<main class="shell">
<header class="topbar">
<div>
<h1>H11 RTK BLE Console</h1>
<p id="statusText">Disconnected</p>
</div>
<div class="status-pill" id="statusPill">Offline</div>
</header>
<section class="layout">
<aside class="panel side">
<div class="panel-head">
<h2>Device</h2>
<button id="scanBtn">Scan</button>
</div>
<div class="scan-row">
<select id="deviceSelect"></select>
<button id="connectBtn">Connect</button>
</div>
<button class="secondary full" id="disconnectBtn">Disconnect</button>
<div class="divider"></div>
<h3>Characteristics</h3>
<label>TX Write</label>
<select id="txChar"></select>
<label>RX Notify</label>
<select id="rxChar"></select>
<button class="secondary full" id="applyCharsBtn">Apply Characteristics</button>
<div class="divider"></div>
<h3>Quick Actions</h3>
<button class="secondary full quick" data-command="AT+BT_OUT=SET,1,0,1,1,0,0,0,0,0,0">Enable GNPOS/GNDEV</button>
<button class="secondary full quick" data-command="AT+BT_OUT=GET">Get BT Output</button>
<button class="secondary full quick" data-command="AT+GNSS_MODE=GET">Get GNSS Mode</button>
<button class="secondary full quick" data-command="AT+DEV_INIT_STA=GET">Get Init Status</button>
<button class="secondary full quick" data-command="AT+NEMATIME=GET">Get NMEA Frequency</button>
<button class="secondary full quick" data-command="AT+RTCMBASEPOS=GET">Get RTCM Base</button>
<button class="secondary full quick" data-command="AT+UPLOADDATA_PARM=GET">Get Upload Server</button>
<button class="secondary full quick" data-command="AT+UPLOADDATA_TYPE=GET">Get Upload Protocol</button>
</aside>
<section class="main-stack">
<section class="panel dashboard">
<div class="metric">
<span>Fix</span>
<strong id="fixStatus">--</strong>
</div>
<div class="metric">
<span>Accuracy</span>
<strong id="accuracy">--</strong>
</div>
<div class="metric">
<span>Satellites</span>
<strong id="satellites">--</strong>
</div>
<div class="metric">
<span>Battery</span>
<strong id="battery">--</strong>
</div>
<div class="metric wide">
<span>Position</span>
<strong id="position">--</strong>
</div>
<div class="metric">
<span>NTRIP</span>
<strong id="ntrip">--</strong>
</div>
</section>
<section class="panel precision-panel">
<div class="panel-head">
<h2>Precision</h2>
<div class="precision-actions">
<button id="startLogBtn">Start Log</button>
<button class="secondary" id="stopLogBtn">Stop</button>
</div>
</div>
<div class="log-row">
<select id="logSelect"></select>
<button class="secondary" id="openLogBtn">Open Log</button>
<button class="secondary" id="refreshLogsBtn">Refresh</button>
</div>
<label class="inline-check">
<input id="fixedOnlyToggle" type="checkbox" />
<span>Use RTK Fixed points only after 5 fixed readings</span>
</label>
<label for="sessionNotes">Session Notes</label>
<textarea id="sessionNotes" rows="3" spellcheck="true"></textarea>
<div class="precision-layout">
<div class="plot-wrap">
<canvas id="precisionPlot"></canvas>
</div>
<div>
<div class="log-status" id="logStatus">No active log</div>
<div class="stats-grid" id="precisionStats"></div>
</div>
</div>
<div class="trend-controls">
<div>
<label for="trendMetric">Trend Metric</label>
<select id="trendMetric"></select>
</div>
<div>
<label for="trendWindow">Window Minutes</label>
<input id="trendWindow" type="number" min="0.1" step="0.1" value="5" />
</div>
</div>
<div class="trend-wrap">
<canvas id="metricTrendPlot"></canvas>
</div>
</section>
<section class="panel">
<div class="panel-head">
<h2>Commands</h2>
<div class="segmented">
<button id="getBtn" class="active">GET</button>
<button id="setBtn">SET</button>
</div>
</div>
<div class="command-grid">
<div>
<label>Command</label>
<select id="commandSelect"></select>
</div>
<div id="commandFields" class="fields"></div>
</div>
<div class="send-row">
<input id="commandInput" spellcheck="false" placeholder="AT+GNSS_MODE=GET" />
<button id="sendBtn">Send</button>
</div>
<p class="hint" id="commandHint"></p>
</section>
<section class="panel terminal-panel">
<div class="panel-head">
<h2>Terminal</h2>
<button class="secondary" id="clearBtn">Clear</button>
</div>
<pre id="terminal"></pre>
</section>
</section>
</section>
</main>
<script src="/static/app.js?v=20260611-fixed-streak-client"></script>
</body>
</html>