Player Value To League Page

Add player value info to GLB league pages.

  1. // ==UserScript==
  2. // @name Player Value To League Page
  3. // @namespace pbr
  4. // @include http://goallineblitz.com/game/league.pl?league_id=*
  5. // @include http://glb.warriorgeneral.com/game/league.pl?league_id=*
  6. // @copyright 2010, pabst
  7. // @license (CC) Attribution Share Alike; http://creativecommons.org/licenses/by-sa/3.0/
  8. // @version 13.12.29
  9. // @description Add player value info to GLB league pages.
  10. // ==/UserScript==
  11.  
  12. window.setTimeout( function() {
  13. var button = document.createElement("input");
  14. button.setAttribute("value","Get Eff Levels");
  15. button.setAttribute("type","button");
  16. button.addEventListener("click", main, true);
  17. button.setAttribute("id","levelbutton");
  18.  
  19. var endorsements = document.getElementById("endorsements");
  20. endorsements.parentNode.insertBefore(button, endorsements);
  21. }, 100);
  22.  
  23. var numTeams;
  24. var data = new Array();
  25.  
  26. function main() {
  27. document.getElementById("levelbutton").disabled = "true";
  28.  
  29. var conferences = document.getElementsByClassName("conference_table");
  30. numTeams = conferences.length*16;
  31. for (var c=0; c<conferences.length; c++) {
  32. var teams = conferences[c].getElementsByTagName("a");
  33. for (var t=0; t<teams.length; t++) {
  34. // console.log(teams[t].href.toString());
  35. if (teams[t].href.toString().indexOf("team.pl") != -1) {
  36. getInetPage(teams[t].href.toString().replace("team","roster"), handleTeam);
  37. }
  38. }
  39. }
  40. setTimeout(finish, 2000);
  41. }
  42.  
  43. function tsort(arr, col) {
  44. for (var i=0; i<arr.length-1; i++) {
  45. for (var j=i; j<arr.length; j++) {
  46. if (parseFloat(arr[i][col]) < parseFloat(arr[j][col])) {
  47. var temp = arr[i];
  48. arr[i] = arr[j];
  49. arr[j] = temp;
  50. }
  51. }
  52. }
  53. }
  54.  
  55. function finish() {
  56. if (data.length != numTeams) {
  57. setTimeout(finish, 2000);
  58. return;
  59. }
  60.  
  61. tsort(data,4);
  62.  
  63. var text = "";
  64.  
  65. var str = "<table><tbody>";
  66. var hdr = "<tr class='nonalternating_color'>";
  67. var titles = ["Rank","Team","Players","Age","Level","Value","Eff Level","Salary"];
  68. for (var i=0; i<titles.length; i++) {
  69. hdr += "<td>"+titles[i]+"</td>";
  70. }
  71. hdr += "</tr>";
  72.  
  73. var cap = document.getElementsByClassName("info_item")[0].lastChild.textContent;
  74. cap = parseFloat(cap.replace(/\$/g,"").replace(/\,/g,""));
  75. var output = str+hdr;
  76. var t = "";
  77. for (var i=0; i<data.length; i++) {
  78. output += "<tr class='alternating_color"+(i%2+1)+"'>";
  79. output += "<td>"+(i+1)+"</td>";
  80.  
  81. if ((i+1) < 10) text += ".";
  82. text += (i+1)+" ... ";
  83.  
  84. for (var j=0; j<data[i].length; j++) {
  85. output += "<td";
  86. if (j == 6) {
  87. output += " style='text-align: right;";
  88. if (parseFloat(data[i][j].replace(/\$/g,"").replace(/\,/g,"")) > cap) {
  89. output += " color:red;";
  90. }
  91. output += "'";
  92. }
  93. else if (j > 0) {
  94. output += " style='text-align: center'";
  95. }
  96. output += ">"+data[i][j]+"</td>";
  97.  
  98. if (j == 0) {
  99. t = data[i][j].slice(data[i][j].indexOf(">")+1, data[i][j].indexOf("</a"));
  100. t = t.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
  101. }
  102. else {
  103. var d = [null, 2, 3, 2, 7, 2, 11];
  104. if (isNaN(data[i][j].toString().slice(-1)) == true) data[i][j] = 0;
  105. while (data[i][j].toString().length < d[j]) data[i][j] = "."+data[i][j];
  106. text += data[i][j] + " ... ";
  107. }
  108.  
  109. if (j == 6) {
  110. text += t + " ... ";
  111. }
  112. }
  113. output += "</tr>";
  114. text = text.slice(0,text.length-4) + "\n";
  115. }
  116. output += "</tbody></table>";
  117. console.log(text);
  118.  
  119. var btn = document.getElementById("levelbutton");
  120. btn.style.visibility = "hidden";
  121. btn.style.display = "none";
  122.  
  123. var div = document.createElement("div");
  124. div.innerHTML = output;
  125.  
  126. var end = document.getElementById("endorsements");
  127. end.parentNode.insertBefore(div,end);
  128. }
  129.  
  130. var processed=0;
  131.  
  132. function handleTeam(address, page) {
  133. processed++;
  134. var pr = page.responseText.replace(/<img/g,"<div").replace(/\/img/g,"/div>");
  135. var team = pr.split('"big_head subhead_head">')[1].split("<")[0];
  136. team = team.split("(")[0].replace(/\s+$/g,"");;
  137. var color="#ff0000";
  138. if (processed > 16) color = "#0000ff";
  139. team = "<a style=color:"+color+" href="+address+">"+team+"</a>";
  140.  
  141. var text = page.responseText.split("Count:")[1].split("Roster")[0];
  142. var salary = "$"+text.split("($")[1].split("/yr)")[0];
  143. var numPlayers = parseInt(text.split(">")[2]);
  144. var avgLevel = parseInt(text.split("Avg Lv ")[1]);
  145. var avgValue = parseFloat(text.split('margin-bottom: 6px;">')[3].split("</div>"));
  146. var effLevel = parseInt(text.split("Effective Lv ")[1]);
  147.  
  148. text = page.responseText.split("content_contracts")[0];
  149. text = text.split("content_rosters")[1];
  150. // console.log(text);
  151.  
  152. var cpuPlayers = text.split('class="cpu"').length - 1;
  153. numPlayers -= cpuPlayers;
  154.  
  155. var avgAge = 0;
  156. // td class name bug here
  157. var ages = text.split("player_level\">");
  158. if (ages.length > 0) {
  159. for (var i=2; i<ages.length; i=i+2) {
  160. var tmp = ages[i].split("<")[0];
  161. if (isNaN(parseInt(tmp)) == false) {
  162. avgAge += parseInt(ages[i]);
  163. }
  164. }
  165. }
  166. avgAge = avgAge / numPlayers;
  167. // console.log(team+") "+numPlayers+" - "+cpuPlayers+" - "+avgLevel+" - "+avgValue+" - "+avgAge+" - "+effLevel+" - "+salary);
  168. data.push([team,numPlayers,avgAge.toFixed(0),avgLevel,avgValue.toFixed(2),effLevel,salary]);
  169. document.getElementById("levelbutton").value += ".";
  170. }
  171.  
  172. function getInetPage(address, func) {
  173. // console.log("getInetPage : "+address);
  174. var req = new XMLHttpRequest();
  175. req.open( 'GET', address, true );
  176. req.onload = function() {
  177. if (this.status != 200) {
  178. alert("pbr gm script: Error "+this.status+" loading "+address);
  179. }
  180. else {
  181. // console.log("loaded: "+address)
  182. func(address,this);
  183. }
  184. };
  185.  
  186. req.send(null);
  187. return req;
  188. }
  189.  
  190.