var ajax_log = null; function addlog (msg) { if (ajax_log == null) ajax_log = document.getElementById ('ajax-log'); if (ajax_log == null) return; var newText = msg + "\n" + ajax_log.innerText; if (newText.length > 1024) newText = newText.substring (0, 1024); ajax_log.innerText = newText; } function toggleLogVisibility (logName) { var button = document.getElementById ('button_' + logName); var logs = document.getElementById ('logs_' + logName); if (logs.style.display == 'none' && logs.innerText.trim () != '') { logs.style.display = 'block'; button.innerText = '-'; } else { logs.style.display = 'none'; button.innerText = '+'; } } function toggleContainerVisibility2 (containerName) { var button = document.getElementById ('button_container2_' + containerName); var div = document.getElementById ('test_container2_' + containerName); if (div.style.display == 'none') { div.style.display = 'block'; button.innerText = '-'; } else { div.style.display = 'none'; button.innerText = '+'; } } function quit () { var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { window.close (); } }; xhttp.open("GET", "/quit", true); xhttp.send(); } function toggleAjaxLogVisibility() { if (ajax_log == null) ajax_log = document.getElementById ('ajax-log'); var button = document.getElementById ('ajax-log-button'); if (ajax_log.style.display == 'none') { ajax_log.style.display = 'block'; button.innerText = 'Hide log'; } else { ajax_log.style.display = 'none'; button.innerText = 'Show log'; } } function toggleVisibility (css_class) { var objs = document.getElementsByClassName (css_class); for (var i = 0; i < objs.length; i++) { var obj = objs [i]; var pname = 'original-' + css_class + '-display'; if (obj.hasOwnProperty (pname)) { obj.style.display = obj [pname]; delete obj [pname]; } else { obj [pname] = obj.style.display; obj.style.display = 'none'; } } } function keyhandler(event) { switch (String.fromCharCode (event.keyCode)) { case "q": case "Q": quit (); break; } } function buildtest(id) { sendrequest ("/build?" + id); } function runtest(id) { sendrequest ("/run?" + id); } function stoptest(id) { sendrequest ("/stop?" + id); } function sendrequest(url, callback) { var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (this.readyState == 4) { addlog ("Loaded url: " + url + " with status code: " + this.status + "\nResponse: " + this.responseText); if (callback) callback (this.responseText); } }; xhttp.open("GET", url, true); xhttp.send(); addlog ("Loading url: " + url); } function autorefresh() { if (window.location.protocol == "file:") { console.log ("Can't autorefresh from file:// urls"); return; } var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (this.readyState == 4) { addlog ("Reloaded."); var parser = new DOMParser (); var r = parser.parseFromString (this.responseText, 'text/html'); var ar_objs = document.getElementsByClassName ("autorefreshable"); for (var i = 0; i < ar_objs.length; i++) { var ar_obj = ar_objs [i]; if (!ar_obj.id || ar_obj.id.length == 0) { console.log ("Found object without id"); continue; } var new_obj = r.getElementById (ar_obj.id); if (new_obj) { if (ar_obj.innerHTML != new_obj.innerHTML) ar_obj.innerHTML = new_obj.innerHTML; if (ar_obj.style.cssText != new_obj.style.cssText) { ar_obj.style = new_obj.style; } var evt = ar_obj.getAttribute ('data-onautorefresh'); if (evt != '') { autoshowdetailsmessage (evt); } } else { console.log ("Could not find id " + ar_obj.id + " in updated page."); } } setTimeout (autorefresh, 1000); } }; xhttp.open("GET", window.location.href, true); xhttp.send(); } function autoshowdetailsmessage (id) { var input_id = 'logs_' + id; var message_id = 'button_' + id; var input_div = document.getElementById (input_id); if (input_div == null) return; var message_div = document.getElementById (message_id); var txt = input_div.innerText.trim (); if (txt == '') { message_div.style.opacity = 0; } else { message_div.style.opacity = 1; if (input_div.style.display == 'block') { message_div.innerText = '-'; } else { message_div.innerText = '+'; } } } function oninitialload () { var autorefreshable = document.getElementsByClassName ("autorefreshable"); for (var i = 0; i < autorefreshable.length; i++) { var evt = autorefreshable [i].getAttribute ("data-onautorefresh"); if (evt != '') autoshowdetailsmessage (evt); } } function toggleAll (show) { var expandable = document.getElementsByClassName ('expander'); var counter = 0; var value = show ? '-' : '+'; for (var i = 0; i < expandable.length; i++) { var div = expandable [i]; if (div.textContent != value) div.textContent = value; counter++; } var togglable = document.getElementsByClassName ('togglable'); counter = 0; value = show ? 'block' : 'none'; for (var i = 0; i < togglable.length; i++) { var div = togglable [i]; if (div.style.display != value) { if (show && div.innerText.trim () == '') { // don't show nothing } else { div.style.display = value; } } counter++; } }