var quick_jump_state = null; var quick_jump_inputs = []; var quick_jump_prevent_key = false; function quick_jump_update(key){ // let dbg = "DEBUG: "; // if (key) // dbg += "K: " + key; // for (let x of quick_jump_inputs){ // dbg += "[" + x + "]"; // } // document.getElementById("qjstatus").textContent = dbg; for(let el of document.getElementsByClassName("quick_jump_help")) el.classList.remove("visible"); if (quick_jump_state != null){ quick_jump_state.classList.add("visible"); let ul = quick_jump_state.getElementsByTagName("ul"); if (ul.length >= 1 && !document.getElementById("quick_jump_input").classList.contains("visible")){ ul = ul[0]; ul.classList.add("visible"); for (let li of ul.getElementsByTagName("li")){ let menu = li.getElementsByClassName("menu")[0]; let action = li.getElementsByClassName("action")[0]; li.classList.add("visible"); menu.classList.add("visible"); menu.classList.remove("selected"); action.classList.remove("visible"); } } } } function quick_jump_show(show){ let popup = document.getElementById("popup"); if (show){ popup.classList.add("visible"); quick_jump_state = document.getElementById("quick_jump_start"); quick_jump_inputs = []; document.getElementById("quick_jump_input").value = ""; document.getElementById("quick_jump_input").classList.remove("visible"); quick_jump_update("-"); } else{ popup.classList.remove("visible"); quick_jump_state = null; return; } } function quick_jump_toggle(){ quick_jump_show(!document.getElementById("popup").classList.contains("visible")); } function quick_jump_go(){ let text = document.getElementById("quick_jump_input").value; var customer_id; if (typeof(CUSTOMER_ID) == "undefined") customer_id = "1"; else customer_id = CUSTOMER_ID; let url = "/quick_jump?customer_id=" + customer_id + "&action=" + quick_jump_state.dataset.action; let n = 1; for (let x of quick_jump_inputs) { url += "&input" + n + "=" + x; n += 1; } window.location.href = url; } document.getElementById("quick_jump_input").addEventListener("keypress", function(e){ if (e.key == "Enter") { let value = document.getElementById("quick_jump_input").value; quick_jump_inputs.push(value); document.getElementById("quick_jump_input").classList.remove("visible"); document.getElementById("quick_jump_input").value = ""; if (quick_jump_state.dataset.go == "wait-input") quick_jump_go(); else{ quick_jump_state.querySelector("span.input").appendChild(document.createTextNode(value)); } quick_jump_prevent_key = true; quick_jump_update(); } }); function quick_jump_key(key){ if (document.getElementById("quick_jump_input").classList.contains("visible")) return; if (quick_jump_prevent_key) return; for (let li of quick_jump_state.getElementsByTagName("li")){ let action = li.getElementsByClassName("action")[0]; if (action.dataset.key == key) { for (let hide_li of quick_jump_state.getElementsByTagName("li")) hide_li.classList.remove("visible"); li.classList.add("visible"); li.getElementsByClassName("menu")[0].classList.add("selected"); quick_jump_state = action; if (action.dataset.input == "yes") { document.getElementById("quick_jump_input").classList.add("visible"); document.getElementById("quick_jump_input").focus(); } let span_input = quick_jump_state.querySelector("span.input"); if (span_input) span_input.innerHTML = ""; if (action.dataset.go == "yes") quick_jump_go(); break; } } quick_jump_update(key); return; } document.addEventListener("keydown", function(e){ quick_jump_prevent_key = false; if (document.getElementById("popup").classList.contains("visible")) e.stopPropagation(); }); document.addEventListener("keyup", function(e){ if (e.code == "F8") { quick_jump_toggle(); e.stopPropagation(); } else if (document.getElementById("popup").classList.contains("visible")) { if (e.code == "Escape") { quick_jump_show(false); } else if (quick_jump_state != null) { quick_jump_key(e.key); } e.stopPropagation(); } });