$(function () { /* add container before each proxy location to show status */ var isActive = false; function setup_html_widget() { var option_li = $('.fetch-backend-proxy li').filter(function () { return $("input", this)[0].value.length > 0; }); $(option_li).prepend('
'); $(option_li).append('
'); } function set_proxy_check_status(proxy_key, state) { // select input by value name const proxy_li = $('input[value="' + proxy_key + '" ]').parent(); if (state['status'] === 'RUNNING') { $('.proxy-status', proxy_li).html(''); } if (state['status'] === 'OK') { $('.proxy-status', proxy_li).html('OK'); $('.proxy-check-details', proxy_li).html(state['text']); } if (state['status'] === 'ERROR' || state['status'] === 'ERROR OTHER') { $('.proxy-status', proxy_li).html('X'); $('.proxy-check-details', proxy_li).html(state['text']); } $('.proxy-timing', proxy_li).html(state['time']); } function pollServer() { if (isActive) { window.setTimeout(function () { $.ajax({ url: proxy_recheck_status_url, success: function (data) { var all_done = true; $.each(data, function (proxy_key, state) { set_proxy_check_status(proxy_key, state); if (state['status'] === 'RUNNING') { all_done = false; } }); if (all_done) { console.log("Shutting down poller, all done.") isActive = false; } else { pollServer(); } }, error: function () { //ERROR HANDLING pollServer(); } }); }, 2000); } } $('#check-all-proxies').click(function (e) { e.preventDefault() if (!$('body').hasClass('proxy-check-active')) { setup_html_widget(); $('body').addClass('proxy-check-active'); } $('.proxy-check-details').html(''); $('.proxy-status').html('').fadeIn(); $('.proxy-timing').html(''); // Request start, needs CSRF? $.ajax({ type: "GET", url: recheck_proxy_start_url, }).done(function (data) { $.each(data, function (proxy_key, state) { set_proxy_check_status(proxy_key, state['status']) }); isActive = true; pollServer(); }).fail(function (data) { console.log(data); alert('There was an error communicating with the server.'); }); }); });