andrew4582

stats_js_Aug_22_2010_404PM

Aug 22nd, 2010
219
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2. Scripts used to change or enable/disable the refresh intraval to load server data
  3.  
  4. last updated : Sunday August 22,2010 12:53 PM
  5. */
  6.  
  7. var _loadedStylesheet;
  8. var _refreshEnabled = true;
  9. var _refreshInterval = 1000;
  10. var _customInterval = _refreshInterval;
  11. var _loading = false;
  12. var _lastSelectedDisable = false;
  13. var _timeoutId = -1;
  14. var _lastBeforeDisable = 1000;
  15. var _disableRefreshClicked = false;
  16.  
  17.  
  18. var _historyDownload = [];
  19. var _historyUpload = [];
  20. var _historyMaxPeers = 0;
  21.  
  22. var REFRESH_SELECTID = "#refreshIntervalSelect";
  23. var REFRESH_SELECT_SELECTED = "#refreshIntervalSelect option[selected]";
  24. var REFRESH_CUSTOMID = "#refreshIntervalCustom";
  25. var REFRESH_CUSTOM_TEXTID = "#customIntervalText";
  26. var DISABLE_REFRESHID = "#disableRefresh";
  27. var TIMEOUT_CRUMSID = "#timeoutcrums";
  28. var STATUSID = "#status";
  29.  
  30. /* inital document load */
  31. $(document).ready(function() {
  32.     //default values
  33.     $(REFRESH_CUSTOM_TEXTID).val(_customInterval);
  34.    
  35.     /* inital value is 'Disable' to make sure click works */
  36.     $(DISABLE_REFRESHID).html("Disable");
  37.    
  38.     /* first load */
  39.     loadData();
  40.    
  41.     $("#displayHistoryTitle").html("Page Loaded: " + getTime());
  42.     /*
  43.         Event handling - rest of function
  44.     */
  45.      
  46.    
  47.     $("#title a").click(function () {
  48.        
  49.         loadData();
  50.     });
  51.    
  52.     /* resets the select to inital values */
  53.     $('#resetrefresh').click(function() {
  54.         _lastBeforeDisable = 1000;
  55.         $(DISABLE_REFRESHID).html("Disable");
  56.         $(REFRESH_SELECTID).attr("disabled","");
  57.         $(REFRESH_SELECTID).find("option[value='1000']").attr("selected","selected");
  58.         $(REFRESH_SELECTID).change();
  59.            
  60.     });
  61.    
  62.     /* Quick link to disable/enable refresh */
  63.     $(DISABLE_REFRESHID).click(function() {
  64.         _disableRefreshClicked = true;
  65.        
  66.         if($(this).html() == "Disable"){
  67.             _lastBeforeDisable = $(REFRESH_SELECTID).find("option[selected]").attr("value");
  68.            
  69.             $(REFRESH_SELECTID).find("option[value='0']").attr("selected","selected");
  70.             $(REFRESH_SELECTID).change();
  71.             $(this).html("Enable");
  72.            
  73.             $(REFRESH_SELECTID).attr("disabled","disabled");
  74.         }else{
  75.             $(REFRESH_SELECTID).find("option[value='"+ _lastBeforeDisable +"']").attr("selected","selected");
  76.             $(REFRESH_SELECTID).change();
  77.             $(this).html("Disable");
  78.        
  79.             $(REFRESH_SELECTID).attr("disabled","");
  80.         }
  81.        
  82.     });
  83.     $(REFRESH_SELECTID).change(function () {
  84.  
  85.         var selected = $(this).find("option[selected]").first();
  86.         var interval = selected.attr("value");
  87.  
  88.         if (interval == -1) { //custom
  89.             $(REFRESH_CUSTOMID).removeClass("hidded");
  90.             $(REFRESH_CUSTOMID).addClass("visible");
  91.             _refreshInterval = 1000;
  92.  
  93.             var customVal = $(REFRESH_CUSTOM_TEXTID).val();
  94.             customVal = customVal * 1;
  95.             if (customVal > 0) {
  96.                 _refreshInterval = customVal;
  97.                 _refreshEnabled = true;
  98.                 $(REFRESH_CUSTOM_TEXTID).select();
  99.             }
  100.             loadData();
  101.         }
  102.         else {
  103.             $(REFRESH_CUSTOMID).removeClass("visible");
  104.             $(REFRESH_CUSTOMID).addClass("hidded");
  105.  
  106.             if (interval == 0) { //disabled
  107.                 _refreshInterval = 0;
  108.                 _refreshEnabled = false;
  109.                 _lastSelectedDisable = true;
  110.                 $(STATUSID).html("<i>Refresh Disabled</i>");
  111.                 $(TIMEOUT_CRUMSID).html("");
  112.            
  113.                  
  114.             }
  115.             else {
  116.                 _refreshInterval = interval;
  117.                 _refreshEnabled = true;
  118.                 _lastSelectedDisable = false;
  119.                 loadData();
  120.                  
  121.             }
  122.         }
  123.     });
  124.     $(REFRESH_CUSTOM_TEXTID).blur(function () {
  125.         var selected = $(REFRESH_SELECT_SELECTED).first();
  126.         var interval = selected.attr("value");
  127.  
  128.         var customVal = $(this).val();
  129.  
  130.         customVal = customVal * 1;
  131.         if (customVal > 0) {
  132.             _refreshInterval = customVal;
  133.             _refreshEnabled = true;
  134.             loadData();
  135.         }
  136.     });
  137. }); //document ready
  138.  
  139. function loadData() {
  140.    
  141.     if (_lastSelectedDisable == true) {
  142.         _lastSelectedDisable = false;
  143.         return;
  144.     }
  145.     if (_loading == true)
  146.         return;
  147.     _loading = true;
  148.     try {
  149.         var refreshms = _refreshInterval;
  150.         var txhtml = null;
  151.         var xmlurl = "Azureus_Stats.xml";
  152.         var xslurl = "azureus.xsl";
  153.         // code for IE
  154.         if (window.ActiveXObject) {
  155.             try {
  156.                 var source = null; //xml source
  157.                 var attempts = 0;
  158.                 var maxattempts = 3;
  159.  
  160.                 while (attempts <= maxattempts) {
  161.                     try {
  162.                         source = new ActiveXObject("Msxml2.DOMDocument.3.0");
  163.                         source.async = false;
  164.                         source.load(xmlurl);
  165.                         break;
  166.                     }
  167.                     catch (e) {
  168.                         attempts++;
  169.                         if (attempts >= maxattempts) {
  170.                             displayError(e);
  171.                             break;
  172.                         }
  173.                         source = null;
  174.                     }
  175.                 } //while
  176.  
  177.                 if (_loadedStylesheet == null) {
  178.                     _loadedStylesheet = new ActiveXObject("Msxml2.DOMDocument.3.0");
  179.                     _loadedStylesheet.async = false
  180.                     _loadedStylesheet.load(xslurl);
  181.                 }
  182.  
  183.                 txhtml = source.transformNode(_loadedStylesheet)
  184.  
  185.             } catch (e) {
  186.                 _loadedStylesheet = null;
  187.                 displayError(e);
  188.             }
  189.         }
  190.         // code for Mozilla, Firefox, Opera, etc.
  191.         else if (document.implementation && document.implementation.createDocument) {
  192.             try {
  193.                 var source = $.ajax({
  194.                     url: xmlurl,
  195.                     cache: false,
  196.                     async: false
  197.                 }).responseText;
  198.                 var stylesheet = $.ajax({
  199.                     url: xslurl,
  200.                     cache: false,
  201.                     async: false
  202.                 }).responseText;
  203.                 var xsltProcessor = new XSLTProcessor();
  204.                 xsltProcessor.importStylesheet(stylesheet);
  205.                 txhtml = xsltProcessor.transformToFragment(source, document);
  206.             } catch (e) { displayError(e.message); }
  207.         }
  208.         //load html into page
  209.         $('#result').html(txhtml);
  210.         var showdebug = false;
  211.         //update status
  212.         if(showdebug==true)
  213.             $("body").append("<textarea style='height:300px;width:100%;' rows='2' cols='2'>" + txhtml + "</textarea>");
  214.         $(STATUSID).html("" + getTime() + " Interval: " + (refreshms / 1000) + " seconds");
  215.        
  216.         //set timeout crums
  217.         var count = $(TIMEOUT_CRUMSID).attr("count");
  218.         if (!count)
  219.             count = 0;
  220.         if (count > 4) {
  221.             $(TIMEOUT_CRUMSID).html("");
  222.             count = 0;
  223.         }
  224.         count++;
  225.  
  226.         $(TIMEOUT_CRUMSID).append(".");
  227.         $(TIMEOUT_CRUMSID).attr("count", count);
  228.  
  229.         //reset timeout
  230.         if (_refreshEnabled == true) {
  231.             //set timer
  232.             if (1000 >= refreshms)
  233.                 refreshms = 1200;
  234.             if(_timeoutId != -1)
  235.                 clearTimeout(_timeoutId);
  236.             _timeoutId = window.setTimeout("loadData()", refreshms);
  237.         }
  238.     }
  239.     catch (e) { displayError(e.message); }
  240.     finally {
  241.         updateGlobals();
  242.         _loading = false;
  243.     }
  244. }
  245. function updateGlobals() {
  246.    
  247.     var dlspeed =  parseInt(_globals.values[0].dlspeed);
  248.     var ulspeed = parseInt(_globals.values[0].ulspeed);
  249.    
  250.     var dlspeedraw =  parseInt(_globals.values[0].dlspeedraw);
  251.     var ulspeedraw = parseInt(_globals.values[0].ulspeedraw);
  252.     var total_peers = parseInt(_globals.values[0].total_peers);
  253.    
  254.     _historyUpload.push(ulspeedraw);
  255.     _historyDownload.push(dlspeedraw);
  256.    
  257.     if(total_peers > _historyMaxPeers)
  258.         _historyMaxPeers = total_peers;
  259.    
  260.     renderGlobals();
  261. }
  262. function renderGlobals(){
  263.  
  264.     var dlavg = average(_historyDownload) / 1000;
  265.     var ulavg = average(_historyUpload) / 1000;
  266.    
  267.     var dlsum = sum(_historyDownload) / 1000;
  268.     var ulsum = sum(_historyUpload) / 1000;
  269.    
  270.     var html = ""
  271.     html += "<div class='parent'>";
  272.        
  273.         html += "<div class ='child'>";
  274.         html += "<h5>Average</h5>";
  275.         html += "<ul class='avg'>";
  276.         html += "<li>Download :<span class='avg dlavg'>" + addCommas(dlavg) + " kB/s</span></li>";
  277.         html += "<li>Upload  :<span style='margin-left:22px;' class='avg ulavg'>" + addCommas(ulavg) + " kB/s</span></li>";
  278.         html += "</ul>";
  279.         html += "</div>";
  280.        
  281.         html += "<div class ='child'>";
  282.         html += "<h5>Sum (per intraval) </h5>";
  283.         html += "<ul class='avg'>";
  284.         html += "<li>Download :<span class='avg dlavg'>" + addCommas(dlsum) + " kB/s</span></li>";
  285.         html += "<li>Upload  :<span style='margin-left:22px;' class='avg ulavg'>" + addCommas(ulsum) + " kB/s</span></li>";
  286.         html += "</ul>";
  287.         html += "</div>";
  288.        
  289.         html += "<div class ='child'>";
  290.         html += "<h5>Max Peers - " + _historyMaxPeers + " </h5>";
  291.         html += "</div>";
  292.        
  293.        
  294.     html += "</div>";
  295.    
  296.     $("#displayHistory").html(html);
  297. }
  298. function average(numArray)
  299. {
  300.    var sum = 0
  301.    for (i = 0; i < numArray.length;i++)
  302.    {
  303.       sum += numArray[i]
  304.    }
  305.    return Math.round((sum/numArray.length));
  306. }
  307. function sum(numArray)
  308. {
  309.    var val = 0
  310.    for (i = 0; i < numArray.length;i++)
  311.    {
  312.       val += numArray[i]
  313.    }
  314.    return Math.round(val);
  315. }
  316. function getTime() {
  317.     var today = new Date();
  318.     var h = today.getHours();
  319.     var m = today.getMinutes();
  320.     var s = today.getSeconds();
  321.     var ampm = "AM";
  322.     if (h > 12) {
  323.         h = h - 12;
  324.         ampm = "PM";
  325.     }
  326.     m = checkTime(m);
  327.     s = checkTime(s);
  328.     return h + ":" + m + ":" + s + " " + ampm;
  329. }
  330. function addCommas(nStr)
  331. {
  332.     nStr += '';
  333.     x = nStr.split('.');
  334.     x1 = x[0];
  335.     x2 = x.length > 1 ? '.' + x[1] : '';
  336.     var rgx = /(\d+)(\d{3})/;
  337.     while (rgx.test(x1)) {
  338.         x1 = x1.replace(rgx, '$1' + ',' + '$2');
  339.     }
  340.     return x1 + x2;
  341. }
  342.  
  343. function checkTime(i) {
  344.     if (i < 10) {
  345.         i = "0" + i;
  346.     }
  347.     return i;
  348. }
  349. function displayError(e) {
  350.     var message = e ? e.toString() : " unknown error";
  351.     $("#errorOutput").append("<div>" + message + "</div>");
  352. }
Advertisement
Add Comment
Please, Sign In to add comment