/* Most widgets update their backend data every 10 seconds. 11 seconds * will ensure that we update the GUI right after the stats are updated. * Seconds * 1000 = value */ var Seconds = 11; var update_interval = (Math.abs(Math.ceil(Seconds))-1)*1000 + 990; function updateMeters() { url = '/getstats.php'; jQuery.ajax(url, { type: 'get', success: function(data) { response = data || ""; if (response != "") stats(data); } }); setTimer(); } function setTimer() { timeout = window.setTimeout('updateMeters()', update_interval); } function stats(x) { var values = x.split("|"); if (jQuery.each(values,function(key,value){ if (value == 'undefined' || value == null) return true; else return false; })) updateUptime(values[2]); updateDateTime(values[5]); updateCPU(values[0]); updateMemory(values[1]); updateState(values[3]); updateTemp(values[4]); updateInterfaceStats(values[6]); updateInterfaces(values[7]); updateGatewayStats(values[8]); updateCpuFreq(values[9]); updateLoadAverage(values[10]); updateMbuf(values[11]); updateMbufMeter(values[12]); updateStateMeter(values[13]); } function updateMemory(x) { if(jQuery('#memusagemeter')) jQuery("#memusagemeter").html(x + '%'); if(jQuery('#memUsagePB')) jQuery('#memUsagePB').css( { width: parseInt(x)+'%' } ); } function updateMbuf(x) { if(jQuery('#mbuf')) jQuery("#mbuf").html(x); } function updateMbufMeter(x) { if(jQuery('#mbufusagemeter')) jQuery("#mbufusagemeter").html(x + '%'); if(jQuery('#mbufPB')) jQuery('#mbufPB').css( { width: parseInt(x)+'%' } ); } function updateCPU(x) { if(jQuery('#cpumeter')) jQuery("#cpumeter").html(x + '%'); if(jQuery('#cpuPB')) jQuery('#cpuPB').css( { width: parseInt(x)+'%' } ); } function updateTemp(x) { if(jQuery("#tempmeter")) jQuery("#tempmeter").html(x + '\u00B0' + 'C'); if(jQuery('#tempPB')) jQuery("#tempPB").css( { width: parseInt(x)+'%' } ); } function updateDateTime(x) { if(jQuery('#datetime')) jQuery("#datetime").html(x); } function updateUptime(x) { if(jQuery('#uptime')) jQuery("#uptime").html(x); } function updateState(x) { if(jQuery('#pfstate')) jQuery("#pfstate").html(x); } function updateStateMeter(x) { if(jQuery('#pfstateusagemeter')) jQuery("#pfstateusagemeter").html(x + '%'); if(jQuery('#statePB')) jQuery('#statePB').css( { width: parseInt(x)+'%' } ); } function updateGatewayStats(x){ if (widgetActive("gateways")){ gateways_split = x.split(","); for (var y=0; y<gateways_split.length; y++){ if(jQuery('#gateway' + (y + 1))) { jQuery('#gateway' + (y + 1)).html(gateways_split[y]); } } } } function updateCpuFreq(x) { if(jQuery('#cpufreq')) jQuery("#cpufreq").html(x); } function updateLoadAverage(x) { if(jQuery('#load_average')) jQuery("#load_average").html(x); } function updateInterfaceStats(x){ if (widgetActive("interface_statistics")){ statistics_split = x.split(","); var counter = 1; for (var y=0; y<statistics_split.length-1; y++){ if(jQuery('#stat' + counter)) { jQuery('#stat' + counter).html(statistics_split[y]); counter++; } } } } function updateInterfaces(x){ if (widgetActive("interfaces")){ interfaces_split = x.split("~"); //interfaces_split.each(function(iface){ jQuery.each(interfaces_split, function(id,iface){ details = iface.split(","); switch(details[1]) { case "up": // Interface Arrow color jQuery('#' + details[0] ).addClass( "text-success" ) jQuery('#' + details[0] ).removeClass( "text-danger" ) // Interface Icon color jQuery('#' + details[0] + 'icon').addClass( "text-success" ) jQuery('#' + details[0] + 'icon').removeClass( "text-danger" ) // Interface Arrow type jQuery('#' + details[0] ).addClass( "glyphicon-arrow-up" ) jQuery('#' + details[0] ).removeClass( "glyphicon-arrow-down" ) jQuery('#' + details[0] ).removeClass( "glyphicon-arrow-remove" ) break; case "down": jQuery('#' + details[0] ).addClass( "text-danger" ) jQuery('#' + details[0] ).removeClass( "text-success" ) // Interface Icon color jQuery('#' + details[0] + 'icon').addClass( "text-danger" ) jQuery('#' + details[0] + 'icon').removeClass( "text-success" ) // Interface Arrow type jQuery('#' + details[0] ).addClass( "glyphicon-arrow-down" ) jQuery('#' + details[0] ).removeClass( "glyphicon-arrow-up" ) jQuery('#' + details[0] ).removeClass( "glyphicon-arrow-remove" ) break; case "block": // Interface Icon color jQuery('#' + details[0] ).addClass( "text-danger" ) jQuery('#' + details[0] ).removeClass( "text-success" ) // Interface Arrow type jQuery('#' + details[0] ).addClass( "glyphicon-arrow-remove" ) jQuery('#' + details[0] ).removeClass( "glyphicon-arrow-up" ) jQuery('#' + details[0] ).removeClass( "glyphicon-arrow-down" ) break; } }); } } function widgetActive(x) { var widget = jQuery('#' + x + '-container'); if ((widget != null) && (widget.css('display') != null) && (widget.css('display') != "none")) return true; else return false; } /* start updater */ jQuery(document).ready(function(){ setTimer(); });