mirror of
https://github.com/cjfranko/NTP-Timeturner.git
synced 2025-11-08 18:32:02 +00:00
feat: Add dynamic lock ratio icon with thresholds
Co-authored-by: aider (gemini/gemini-2.5-pro) <aider@aider.chat>
This commit is contained in:
parent
fffc123475
commit
fbae58fb1d
4 changed files with 19 additions and 3 deletions
|
|
@ -34,5 +34,10 @@ const iconMap = {
|
||||||
'29.97': { src: 'assets/timeturner_2997.png', tooltip: '29.97 frames per second' },
|
'29.97': { src: 'assets/timeturner_2997.png', tooltip: '29.97 frames per second' },
|
||||||
'30.00': { src: 'assets/timeturner_30.png', tooltip: '30.00 frames per second' },
|
'30.00': { src: 'assets/timeturner_30.png', tooltip: '30.00 frames per second' },
|
||||||
'default': { src: 'assets/timeturner_25.png', tooltip: 'Unknown frame rate' }
|
'default': { src: 'assets/timeturner_25.png', tooltip: 'Unknown frame rate' }
|
||||||
|
},
|
||||||
|
lockRatio: {
|
||||||
|
'good': { src: 'assets/timeturner_lockratio_green.png', tooltip: 'Lock ratio is 100%.' },
|
||||||
|
'average': { src: 'assets/timeturner_lockratio_orange.png', tooltip: 'Lock ratio is 90% or higher.' },
|
||||||
|
'bad': { src: 'assets/timeturner_lockratio_red.png', tooltip: 'Lock ratio is below 90%.' }
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@
|
||||||
<p id="ltc-timecode">--:--:--:--</p>
|
<p id="ltc-timecode">--:--:--:--</p>
|
||||||
<p id="ltc-status">--</p>
|
<p id="ltc-status">--</p>
|
||||||
<p><span id="frame-rate">-- fps</span></p>
|
<p><span id="frame-rate">-- fps</span></p>
|
||||||
<p>Lock Ratio: <span id="lock-ratio">--</span>%</p>
|
<p><span id="lock-ratio">Lock Ratio: --%</span></p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- System Clock & Sync -->
|
<!-- System Clock & Sync -->
|
||||||
|
|
|
||||||
|
|
@ -90,7 +90,18 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||||
const frameRateIconInfo = iconMap.frameRate[frameRate] || iconMap.frameRate.default;
|
const frameRateIconInfo = iconMap.frameRate[frameRate] || iconMap.frameRate.default;
|
||||||
statusElements.frameRate.innerHTML = `<img src="${frameRateIconInfo.src}" class="status-icon" alt="" title="${frameRateIconInfo.tooltip}"><span>${frameRate} fps</span>`;
|
statusElements.frameRate.innerHTML = `<img src="${frameRateIconInfo.src}" class="status-icon" alt="" title="${frameRateIconInfo.tooltip}"><span>${frameRate} fps</span>`;
|
||||||
|
|
||||||
statusElements.lockRatio.textContent = data.lock_ratio.toFixed(2);
|
const lockRatio = data.lock_ratio;
|
||||||
|
let lockRatioCategory;
|
||||||
|
if (lockRatio === 100) {
|
||||||
|
lockRatioCategory = 'good';
|
||||||
|
} else if (lockRatio >= 90) {
|
||||||
|
lockRatioCategory = 'average';
|
||||||
|
} else {
|
||||||
|
lockRatioCategory = 'bad';
|
||||||
|
}
|
||||||
|
const lockRatioIconInfo = iconMap.lockRatio[lockRatioCategory];
|
||||||
|
const lockRatioText = `Lock Ratio: ${lockRatio.toFixed(2)}%`;
|
||||||
|
statusElements.lockRatio.innerHTML = `<img src="${lockRatioIconInfo.src}" class="status-icon" alt="" title="${lockRatioIconInfo.tooltip}"><span>${lockRatioText}</span>`;
|
||||||
statusElements.systemClock.textContent = data.system_clock;
|
statusElements.systemClock.textContent = data.system_clock;
|
||||||
statusElements.systemDate.textContent = data.system_date;
|
statusElements.systemDate.textContent = data.system_date;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -99,7 +99,7 @@ button:hover {
|
||||||
color: #555;
|
color: #555;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ltc-status, #ntp-active, #sync-status, #jitter-status, #delta-status, #frame-rate {
|
#ltc-status, #ntp-active, #sync-status, #jitter-status, #delta-status, #frame-rate, #lock-ratio {
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 0.5em;
|
gap: 0.5em;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue