//===== Fetching console text function fetchText(delay, repeat) { var el = $("#console"); if (el.textEnd == undefined) { el.textEnd = 0; el.innerHTML = ""; } window.setTimeout(function() { ajaxJson('GET', console_url + "?start=" + el.textEnd, function(resp) { var dly = updateText(resp); if (repeat) fetchText(dly, repeat); }, function() { retryLoad(repeat); }); }, delay); } function updateText(resp) { var el = $("#console"); var delay = 3000; if (resp != null && resp.len > 0) { console.log("updateText got", resp.len, "chars at", resp.start); var isScrolledToBottom = el.scrollHeight - el.clientHeight <= el.scrollTop + 1; //console.log("isScrolledToBottom="+isScrolledToBottom, "scrollHeight="+el.scrollHeight, // "clientHeight="+el.clientHeight, "scrollTop="+el.scrollTop, // "" + (el.scrollHeight - el.clientHeight) + "<=" + (el.scrollTop + 1)); // append the text if (resp.start > el.textEnd) { el.innerHTML = el.innerHTML.concat("\r\n= sendHistory.children.length) { idx = 0; } loadHistory(idx); } sendHistory.addEventListener("change", function(e) { inputText.value = sendHistory.value; }); function pushHistory(text) { var idx = findHistory(text); if (idx !== null) { loadHistory(idx); return false; } var newOption = m(''); newOption.value = text; sendHistory.appendChild(newOption); sendHistory.value = text; for (; sendHistory.children.length > 15; ) { sendHistory.removeChild(sendHistory.children[0]); } return true; } inputText.addEventListener("keydown", function(e) { switch (e.keyCode) { case 38: /* the up arrow key pressed */ e.preventDefault(); navHistory(-1); break; case 40: /* the down arrow key pressed */ e.preventDefault(); navHistory(+1); break; case 27: /* the escape key pressed */ e.preventDefault(); inputText.value = ""; sendHistory.value = ""; break; case 13: /* the enter key pressed */ e.preventDefault(); var text = inputText.value; if (inputAddCr.checked) text += '\r'; if (inputAddLf.checked) text += '\n'; pushHistory(inputText.value); inputText.value = ""; ajaxSpin('POST', "/console/send?text=" + encodeURIComponent(text), function(resp) { showNotification("Text sent"); }, function(s, st) { showWarning("Error sending text"); } ); break; } }); } //===== Log page function showDbgMode(mode) { var btns = $('.dbg-btn'); for (var i=0; i < btns.length; i++) { if (btns[i].id === "dbg-"+mode) addClass(btns[i], "button-selected"); else removeClass(btns[i], "button-selected"); } }