]> de.git.xonotic.org Git - xonotic/xonstat.git/blobdiff - xonstat/views/player.py
Ajaxify the accuracy graph.
[xonotic/xonstat.git] / xonstat / views / player.py
index 1f06b47f4abe46b5402599228108c15f5a7b9843..9f2751f86b1c6ee2b92aa5a4d5161aaa8115cd27 100755 (executable)
@@ -125,11 +125,7 @@ def get_accuracy_stats(player_id, weapon_cd, games):
                 filter(PlayerWeaponStat.weapon_cd == weapon_cd).\\r
                 one()\r
 \r
-        raw_avg = round(float(raw_avg[0])/raw_avg[1]*100, 2)\r
-\r
-        avg = []\r
-        for i in range(games):\r
-            avg.append((i, raw_avg))\r
+        avg = round(float(raw_avg[0])/raw_avg[1]*100, 2)\r
 \r
         # Determine the raw accuracy (hit, fired) numbers for $games games\r
         # This is then enumerated to create parameters for a flot graph\r
@@ -144,16 +140,14 @@ def get_accuracy_stats(player_id, weapon_cd, games):
         # they come out in opposite order, so flip them in the right direction\r
         raw_accs.reverse()\r
 \r
-        games = []\r
         accs = []\r
         for i in range(len(raw_accs)):\r
-            games.append((i, raw_accs[i][0]))\r
-            accs.append((i, round(float(raw_accs[i][1])/raw_accs[i][2]*100, 2)))\r
+            accs.append((raw_accs[i][0], round(float(raw_accs[i][1])/raw_accs[i][2]*100, 2)))\r
     except:\r
         accs = 0\r
         avg = 0\r
 \r
-    return (games, avg, accs)\r
+    return (avg, accs)\r
 \r
 \r
 def player_info(request):\r
@@ -192,7 +186,7 @@ def player_info(request):
 \r
         # data for the accuracy graph, which is converted into a JSON array for\r
         # usage by flot\r
-        (games, avg, accs) = get_accuracy_stats(player_id, 'nex', 20)\r
+        (avg, accs) = get_accuracy_stats(player_id, 'nex', 20)\r
 \r
         avg = json.dumps(avg)\r
         accs = json.dumps(accs)\r
@@ -283,7 +277,25 @@ def player_accuracy(request):
         if request.params['weapon'] in allowed_weapons:\r
             weapon_cd = request.params['weapon']\r
 \r
-    (games, avg, accs) = get_accuracy_stats(player_id, weapon_cd, games)\r
-\r
-    return {'weapon':weapon_cd, 'games':games, 'avg':avg, 'accs':accs}\r
+    if request.params.has_key('games'):\r
+        try:\r
+            games = request.params['games']\r
+\r
+            if games < 0:\r
+                games = 20\r
+            if games > 50:\r
+                games = 50\r
+        except:\r
+            games = 20\r
+\r
+    (avg, accs) = get_accuracy_stats(player_id, weapon_cd, games)\r
+\r
+    return {\r
+            'player_id':player_id, \r
+            'player_url':request.route_url('player_info', id=player_id), \r
+            'weapon':weapon_cd, \r
+            'games':games, \r
+            'avg':avg, \r
+            'accs':accs\r
+            }\r
 \r