Files
HyperDRM/app/navigation.js
T

22 lines
1.7 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);