Private
Public Access
68 lines
2.3 KiB
JavaScript
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', 'token', 'customProfile'], document, window);
|