From a88d84fd6d016fee449b4795e43f4802b5c1df3a Mon Sep 17 00:00:00 2001 From: Mark Vejvoda Date: Thu, 31 Oct 2013 09:49:23 +0000 Subject: [PATCH] added aynch fetch for game stats --- source/masterserver/scripts/utils.js | 50 +++++++++++++++++++++++++++ source/masterserver/showGameStats.php | 2 +- source/masterserver/showServers.php | 15 +++++++- source/masterserver/style/screen.css | 2 ++ 4 files changed, 67 insertions(+), 2 deletions(-) create mode 100644 source/masterserver/scripts/utils.js diff --git a/source/masterserver/scripts/utils.js b/source/masterserver/scripts/utils.js new file mode 100644 index 00000000..fa7b83ab --- /dev/null +++ b/source/masterserver/scripts/utils.js @@ -0,0 +1,50 @@ +function asynchGet(url, target) { + //debugger; + //alert(target); + //document.getElementById(target).style.display='visible'; + document.getElementById(target).innerHTML = ' Fetching data...'; + if (window.XMLHttpRequest) { + req = new XMLHttpRequest(); + } else if (window.ActiveXObject) { + req = new ActiveXObject("Microsoft.XMLHTTP"); + } + if (req != undefined) { + req.onreadystatechange = function() {asynchDone(url, target);}; + req.open("GET", url, true); + req.send(""); + } +} + +function asynchDone(url, target) { + //debugger; + if (req.readyState == 4) { // only if req is "loaded" + if (req.status == 200) { // only if "OK" + document.getElementById(target).innerHTML = req.responseText; + } else { + document.getElementById(target).innerHTML=" MG Error:\n"+ req.status + "\n" +req.statusText; + } + } +} + +//debugger; +for(var gameIndex = 1; gameIndex < 200; ++gameIndex) { + if(document.getElementById('gameStats_' + gameIndex) ) { + var link = document.getElementById('gameStats_' + gameIndex); + link.onclick = function() { + var row = document.getElementById('content_row_' + this.getAttribute('gameuuid')); + if(row && row.className == 'fullyhide') { + row.className = 'fullyshow'; + row.innerHTML = 'Hide Stats
'; + + var link2 = document.getElementById('hide_stats_' + this.getAttribute('gameuuid')); + link2.onclick = function() { + this.parentNode.parentNode.className = 'fullyhide'; + }; + + var div = document.getElementById('content_' + this.getAttribute('gameuuid')); + asynchGet('showGameStats.php?gameUUID=' + this.getAttribute('gameuuid'),div.id); + } + return false; + }; + } +} diff --git a/source/masterserver/showGameStats.php b/source/masterserver/showGameStats.php index a12a3558..768e296e 100644 --- a/source/masterserver/showGameStats.php +++ b/source/masterserver/showGameStats.php @@ -20,7 +20,7 @@ echo ' ' . PHP_EOL; echo ' ' . PHP_EOL; echo ' ' . PHP_EOL; - echo '

' . htmlspecialchars( PRODUCT_NAME ) . ' game stats

' . PHP_EOL; +// echo '

Game Stats

' . PHP_EOL; echo ' ' . PHP_EOL; echo ' ' . PHP_EOL; echo ' ' . PHP_EOL; diff --git a/source/masterserver/showServers.php b/source/masterserver/showServers.php index 2bf9e5e0..157ef34f 100644 --- a/source/masterserver/showServers.php +++ b/source/masterserver/showServers.php @@ -80,6 +80,7 @@ echo ' ' . PHP_EOL; echo ' ' . PHP_EOL; + $games_with_stats = 0; foreach( $all_servers as $server ) { # Filter by version if requested @@ -125,7 +126,9 @@ if (($status_code == 2 || $status_code == 3) && $server['gameUUID'] != "") { - printf( "\t\t\t\t%s", $server['status'], $status_class, $server['gameUUID'], htmlspecialchars( $status_title, ENT_QUOTES ), PHP_EOL ); + $games_with_stats++; + printf( "\t\t\t\t%s", PHP_EOL ); } else { @@ -179,6 +182,14 @@ printf( "\t\t\t\t%s", htmlspecialchars( $server['binaryCompileDate'], ENT_QUOTES ), PHP_EOL ); echo "\t\t\t" . '' . PHP_EOL; + + if (($status_code == 2 || $status_code == 3) && $server['gameUUID'] != "") + { + //echo "\t\t\t" . '' . PHP_EOL; + printf( "\t\t\t\t%s", $server['gameUUID'], PHP_EOL ); + printf( "%s", PHP_EOL ); + echo "\t\t\t" . '' . PHP_EOL; + } } } @@ -188,6 +199,8 @@ echo '
' . PHP_EOL; echo '

' . PHP_EOL; + echo ' ' . PHP_EOL; + if ( FILTER_VERSION != '' ) { echo "\t\t

Filters active:

" . PHP_EOL; diff --git a/source/masterserver/style/screen.css b/source/masterserver/style/screen.css index a2b4f356..9b9cead1 100644 --- a/source/masterserver/style/screen.css +++ b/source/masterserver/style/screen.css @@ -62,3 +62,5 @@ th { background-color: Red; } +.fullyhide { display: none } +.fullyshow { display: }
Game DurationBuild date
%s%s", $server['status'], $status_class, $games_with_stats, $server['gameUUID'], htmlspecialchars( $status_title, ENT_QUOTES ) ); + printf( "%s