Files
HyperDRM/app/navigation.js
T
2026-10-12 18:31:34 +02:00

68 lines
2.3 KiB
JavaScript

function showPanel(name, focus) {
['overview', 'receiver', 'calibration'].forEach(function(key) {
document.getElementById(key + 'Panel').style.display = key === name ? 'block' : 'none';
document.getElementById(key + 'Tab').setAttribute('aria-pressed', String(key === name));
});
if (focus !== false) document.getElementById({
overview: 'start',
receiver: 'receiver',
calibration: 'calibrate'
} [name]).focus();
}
['overview', 'receiver', 'calibration'].forEach(function(name) {
document.getElementById(name + 'Tab').onclick = function() {
showPanel(name);
};
});
document.getElementById('calibrationShortcut').onclick = function() {
showPanel('calibration');
};
function setupFormEditors(ids, doc, win) {
var pairs = ids.map(function(id) {
return {
input: doc.getElementById(id),
field: doc.getElementById(id + 'Field')
};
});
pairs.forEach(function(pair) {
var input = pair.input,
field = pair.field;
input.readOnly = true;
field.onclick = function() {
if (input.disabled || !input.readOnly) return;
input.readOnly = false;
input.focus();
};
input.addEventListener('blur', function() {
input.readOnly = true;
});
input.addEventListener('mousedown', function(event) {
if (input.readOnly) event.preventDefault();
});
});
function finishEditing() {
pairs.forEach(function(pair) {
if (!pair.input.readOnly) {
pair.input.readOnly = true;
pair.input.blur();
pair.field.focus();
}
});
}
doc.addEventListener('keyboardStateChange', function(event) {
var detail = event.detail || {};
if (detail.visibility === false || detail.isShowing === false) finishEditing();
});
doc.addEventListener('keydown', function(event) {
if ((event.keyCode === 461 || event.key === 'Escape') && pairs.some(function(pair) {
return !pair.input.readOnly;
})) {
event.preventDefault();
finishEditing();
}
});
}
setupFormEditors(['host', 'port', 'piccapPort', 'captureInterval', 'token', 'customProfile'], document, window);