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); if (resp.start > el.textEnd) { el.innerHTML = el.innerHTML.concat("\r\n'+baud+'')); $("#"+baud+"-button").addEventListener("click", function(e) { e.preventDefault(); ajaxSpin('POST', "/console/baud?rate="+baud, function(resp) { showNotification("" + baud + " baud set"); showRate(baud); }, function(s, st) { showWarning("Error setting baud rate: " + st); } ); }); } function consoleSendInit() { var sendHistory = $("#send-history"); var inputText = $("#input-text"); var inputAddCr = $("#input-add-cr"); var inputAddLf = $("#input-add-lf"); function findHistory(text) { for (var i = 0; i < sendHistory.children.length; i++) { if (text == sendHistory.children[i].value) { return i; } } return null; } function loadHistory(idx) { sendHistory.value = sendHistory.children[idx].value; inputText.value = sendHistory.children[idx].value; } function navHistory(rel) { var idx = findHistory(sendHistory.value) + rel; if (idx < 0) { idx = sendHistory.children.length - 1; } if (idx >= 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'; ajaxSpin('POST', "/console/send?text=" + encodeURIComponent(text), function(resp) { showNotification("uC sent"); pushHistory(inputText.value); }, function(s, st) { showWarning("Error sending text to uC"); } ); 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"); } }