mirror of
https://github.com/cjfranko/NTP-Timeturner.git
synced 2025-11-08 18:32:02 +00:00
112 lines
5 KiB
HTML
112 lines
5 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>NTP TimeTurner</title>
|
|
<link rel="stylesheet" href="style.css">
|
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/all.min.css">
|
|
</head>
|
|
<body>
|
|
<div class="container">
|
|
<h1>NTP TimeTurner</h1>
|
|
<div class="grid">
|
|
<!-- LTC Status -->
|
|
<div class="card">
|
|
<h2>LTC Status</h2>
|
|
<p id="ltc-timecode">--:--:--:--</p>
|
|
<p id="ltc-status">--</p>
|
|
<p id="frame-rate">-- fps</p>
|
|
<p>Lock Ratio: <span id="lock-ratio">--</span>%</p>
|
|
</div>
|
|
|
|
<!-- System Clock & Sync -->
|
|
<div class="card">
|
|
<h2>System Clock</h2>
|
|
<p id="system-clock">--:--:--.---</p>
|
|
<p>Date: <span id="system-date">---- -- --</span></p>
|
|
<p>NTP Service: <span id="ntp-active">--</span></p>
|
|
<p>Sync Status: <span id="sync-status">--</span></p>
|
|
</div>
|
|
|
|
<!-- Delta & Jitter -->
|
|
<div class="card">
|
|
<h2>Clock Offset</h2>
|
|
<p>Delta: <span id="delta-ms">--</span> ms (<span id="delta-frames">--</span> frames)</p>
|
|
<p>Jitter: <span id="jitter-status">--</span></p>
|
|
</div>
|
|
|
|
<!-- Network Interfaces -->
|
|
<div class="card">
|
|
<h2>Network</h2>
|
|
<ul id="interfaces">
|
|
<li>--</li>
|
|
</ul>
|
|
</div>
|
|
|
|
<!-- Controls -->
|
|
<div class="card full-width">
|
|
<h2>Controls</h2>
|
|
<div class="control-group">
|
|
<label for="hw-offset">Hardware Offset (ms):</label>
|
|
<input type="number" id="hw-offset" name="hw-offset">
|
|
</div>
|
|
<div class="control-group">
|
|
<input type="checkbox" id="auto-sync-enabled" name="auto-sync-enabled" style="vertical-align: middle;">
|
|
<label for="auto-sync-enabled" style="vertical-align: middle;">Enable Auto Sync</label>
|
|
</div>
|
|
<div class="control-group">
|
|
<label>Timeturner Offset</label>
|
|
<div style="display: flex; flex-wrap: wrap; gap: 1rem; align-items: flex-start;">
|
|
<div style="display: flex; flex-direction: column;">
|
|
<label for="offset-h">Hours</label>
|
|
<input type="number" id="offset-h" style="width: 60px;">
|
|
</div>
|
|
<div style="display: flex; flex-direction: column;">
|
|
<label for="offset-m">Minutes</label>
|
|
<input type="number" id="offset-m" style="width: 60px;">
|
|
</div>
|
|
<div style="display: flex; flex-direction: column;">
|
|
<label for="offset-s">Seconds</label>
|
|
<input type="number" id="offset-s" style="width: 60px;">
|
|
</div>
|
|
<div style="display: flex; flex-direction: column;">
|
|
<label for="offset-f">Frames</label>
|
|
<input type="number" id="offset-f" style="width: 60px;">
|
|
</div>
|
|
<div style="display: flex; flex-direction: column;">
|
|
<label for="offset-ms">Milliseconds</label>
|
|
<input type="number" id="offset-ms" style="width: 60px;">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="control-group">
|
|
<button id="save-config">Save Config</button>
|
|
<button id="manual-sync">Manual Sync</button>
|
|
<span id="sync-message"></span>
|
|
</div>
|
|
<div class="control-group">
|
|
<label>Nudge Clock (ms):</label>
|
|
<button id="nudge-down">-</button>
|
|
<input type="number" id="nudge-value" style="width: 60px;">
|
|
<button id="nudge-up">+</button>
|
|
<span id="nudge-message"></span>
|
|
</div>
|
|
<div class="control-group">
|
|
<label for="date-input">Set System Date:</label>
|
|
<input type="text" id="date-input" placeholder="YYYY-MM-DD" pattern="[0-9]{4}-[0-9]{2}-[0-9]{2}">
|
|
<button id="set-date">Set Date</button>
|
|
<span id="date-message"></span>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Logs -->
|
|
<div class="card full-width">
|
|
<h2>Logs</h2>
|
|
<pre id="logs" class="log-box"></pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<script src="script.js"></script>
|
|
</body>
|
|
</html>
|