$(function() { var info = $('#info'); var infoAlert = $('#info>div'); var infoHead = $('#info>h1'); var main = $('#main'); var plBody = $('#processList>tbody'); var serverList = $('#serverList>ul'); var interval = null; var plCols = $('#processList>thead>tr>th') .map(function() { return $(this).text(); }).get(); function commonError(jqXHR, textStatus, errorThrown) { plBody.empty(); main.hide(); infoHead.text('An error has occured'); infoAlert.text((0 == jqXHR.readyState) ? 'Service unavailable' : errorThrown); infoAlert.removeClass().addClass('alert alert-danger'); info.show(); } function switchServer(server) { clearInterval(interval); if ('' !== server) { document.title = server + ' — ' + 'MyWatch'; serverList.find('.active').removeClass('active'); var s = $('a[href="#' + server + '"]'); if (s) { s.parent().addClass('active'); getProcessList(server); interval = setInterval(getProcessList, 60 * 1000, server); } } else { document.title = 'MyWatch'; } } function onHash() { switchServer(location.hash.substring(1)); }; window.onhashchange = onHash; function getProcessList(server) { $.ajax({ url: "server/" + server + "/processlist.json", method: "GET", error: commonError, success: function(procs) { plBody.empty(); procs.map(function(p) { var tr = $('