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<missing lines\r\n"); } el.innerHTML = el.innerHTML.concat(resp.text); el.textEnd = resp.start + resp.len; delay = 500; } return delay; } function retryLoad(repeat) { fetchText(1000, repeat); } //===== Console page function showRate(rate) { rates.forEach(function(r) { var el = $("#"+r+"-button"); el.className = el.className.replace(" button-selected", ""); }); var el = $("#"+rate+"-button"); if (el != null) el.className += " button-selected"; } function baudButton(baud) { $("#baud-btns").appendChild(m( ' <a id="'+baud+'-button" href="#" class="pure-button">'+baud+'</a>')); $("#"+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); } ); }); } //===== 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"); } }