Sort Players On GLB Homepage

sdfsdf

目前为 2014-05-22 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Sort Players On GLB Homepage
  3. // @namespace http://goallinebliz.com
  4. // @include http://goallineblitz.com/game/home.pl
  5. // @include http://goallineblitz.com/game/home.pl?user_id=*
  6. // @version 08.12.22.2
  7. // @description sdfsdf
  8. // ==/UserScript==
  9.  
  10. /*
  11. *
  12. * written by forestmb@userscripts.org
  13. *
  14. * modified by pabst 12/22/08+
  15. *
  16. */
  17.  
  18. window.setTimeout( function() {
  19.  
  20. function compare(a, b) {
  21. var item1 = a[0];
  22. var item2 = b[0];
  23. if (item1 < item2) return 1;
  24. if (item1 > item2) return -1;
  25. return 0;
  26. }
  27.  
  28.  
  29. function player(info,num) {
  30. //console.log(info.innerHTML);
  31. this.id= num;
  32. this.name = getElementsByClassName("playerhead",info)[0].firstChild.innerHTML;
  33.  
  34. if(document.location.href=="http://goallineblitz.com") {
  35. var stringXp = getElementsByClassName("player_xp",info)[0].innerHTML.substring(0,getElementsByClassName("player_xp",info)[0].innerHTML.indexOf("/"));
  36. this.xp = parseFloat(stringXp);
  37. var stringVXp = getElementsByClassName("player_xp",info)[1].innerHTML.substring(0,getElementsByClassName("player_xp",info)[0].innerHTML.indexOf("/"));
  38. this.vxp = parseFloat(stringVXp);
  39. }
  40. else {
  41. var stringXp = "0";
  42. this.xp = parseFloat(stringXp);
  43. var stringVXp = "0";
  44. this.vxp = parseFloat(stringVXp);
  45. }
  46.  
  47. var text;
  48. var levelText = getElementsByClassName("player_level",info)[0].innerHTML;
  49. this.level = parseFloat(levelText.substring(levelText.indexOf(".")+2));
  50.  
  51. this.position = getElementsByClassName("position",info)[0].innerHTML;
  52.  
  53. var trn = getElementsByClassName("player_vital_head",info)[1];
  54. if (trn != null) {
  55. this.training = parseInt(trn.parentNode.cells[1].innerHTML);
  56. }
  57. else {
  58. this.training = 0;
  59. }
  60. var links = info.getElementsByTagName("a");
  61.  
  62. for(var i=0; i<links.length;i++) {
  63. var link = links[i];
  64. if(link.href.indexOf("/game/player.pl?player_id=")!=-1) {
  65. this.date = parseFloat(link.href.substring(link.href.indexOf("player_id=")+10));
  66. }
  67. if(link.href.indexOf("/game/team.pl?team_id=")!=-1) {
  68. this.team = link.innerHTML;
  69. }
  70. if(link.href.indexOf("compare_teams.pl?")!=-1) {
  71. text = link.parentNode.innerHTML;
  72. var gameText = text.substring(text.indexOf("(in")+4,text.indexOf(")"));
  73. gameText = gameText.replace(/:/g,'');
  74. this.game = parseFloat(gameText);
  75. }
  76. }
  77. if(!this.game) {
  78. this.game=999999;
  79. }
  80. /*
  81. console.log("id="+this.id);
  82. console.log("name="+this.name);
  83. console.log("xp="+this.xp);
  84. console.log("vxp="+this.vxp);
  85. console.log("level="+this.level);
  86. console.log("pos="+this.position);
  87. console.log("date="+this.date);
  88. console.log("team="+this.team);
  89. console.log("game="+this.game);
  90. console.log("training="+this.training);
  91. */
  92. }
  93.  
  94. function testFunc(testing) {
  95. var testElement = document.createElement("p");
  96. testElement.innerHTML = testing;
  97. var testContainer = getElementsByClassName("medium_head subhead_head",document)[0];
  98. testContainer.appendChild(testElement);
  99. }
  100.  
  101. function getElementsByClassName(classname, par) {
  102. var a=[];
  103. var re = new RegExp('\\b' + classname + '\\b');
  104.  
  105. var els = par.getElementsByTagName("*");
  106.  
  107. for(var i=0,j=els.length; i<j; i++) {
  108. if(re.test(els[i].className)) {
  109. a.push(els[i]);
  110. }
  111. }
  112.  
  113.  
  114. return a;
  115. };
  116.  
  117. var playerInfo = getElementsByClassName("player_box",document);
  118. playerInfo = playerInfo.concat(getElementsByClassName("player_box_vet",document));
  119. var players = new Array();
  120. for(var i=0; i<playerInfo.length; i++) {
  121. players[i] = new player(playerInfo[i],i);
  122. }
  123.  
  124. var container = getElementsByClassName("medium_head subhead_head",document)[0];
  125. var options = "<option value=''> Sort Players </option>";
  126. var sortTypes = new Array();
  127. sortTypes[0]="Alphabetical";
  128. sortTypes[1]="Next Game";
  129. sortTypes[2]="Team";
  130. sortTypes[3]="Position";
  131. sortTypes[4]="Level";
  132. sortTypes[5]="XP";
  133. sortTypes[6]="VXP";
  134. sortTypes[7]="Date Created";
  135. sortTypes[8]="Training";
  136.  
  137. var saved = GM_getValue("type","0");
  138. for(var i=0; i<sortTypes.length; i++) {
  139. if(sortTypes[i]==saved)
  140. options+="<option value='"+sortTypes[i]+"' selected='selected'>"+sortTypes[i]+"</option>";
  141. else
  142. options+="<option value='"+sortTypes[i]+"'>"+sortTypes[i]+"</option>";
  143. }
  144.  
  145. container.innerHTML = container.innerHTML +" | <select id='sortPlayers'>"+options+"</select> ";
  146.  
  147. var oSelect = document.getElementById("sortPlayers");
  148. oSelect.addEventListener("change",sortList,true);
  149.  
  150. var adOptions = "<option value='Descending'>Descending</option><option value='Ascending'>Ascending</option>";
  151. var adSE = document.createElement("select");
  152. adSE.id="adSelect";
  153. adSE.innerHTML=adOptions;
  154. var savedOrder = GM_getValue("sortOrder","0");
  155. if(savedOrder!="0") {
  156. if(savedOrder=="Ascending") {
  157. adSE.options[1].selected = true;
  158. }
  159. else {
  160. adSE.options[0].selected = true;
  161. }
  162. }
  163. container.appendChild(adSE);
  164.  
  165. var adSelectElement = document.getElementById("adSelect");
  166. adSelectElement.addEventListener("change",sortList,true);
  167.  
  168. if(saved!="0") {
  169. sortList();
  170. }
  171. function sortList() {
  172. var oSelect = document.getElementById("sortPlayers");
  173. var type = oSelect.options[oSelect.selectedIndex].value;
  174.  
  175. var newOrder = new Array();
  176.  
  177. if(type=="Alphabetical") {
  178. newOrder = sortKey("name","text");
  179. }
  180. else if(type=="Next Game") {
  181. newOrder = sortKey("game","num");
  182. }
  183. else if(type=="Team") {
  184. newOrder = sortKey("team","text");
  185. }
  186. else if(type=="Position") {
  187. newOrder = sortKey("position","text");
  188. }
  189. else if(type=="Level") {
  190. newOrder = sortKey("level","num");
  191. }
  192. else if(type=="XP") {
  193. newOrder = sortKey("xp","num");
  194. }
  195. else if(type=="VXP") {
  196. newOrder = sortKey("vxp","num");
  197. }
  198. else if(type=="Date Created") {
  199. newOrder = sortKey("date","num");
  200. }
  201. else if(type=="Training") {
  202. newOrder = sortKey("training","num");
  203. }
  204. if (type!="") {
  205. var box = document.getElementById("players");
  206.  
  207. for(var i=0; i<newOrder.length; i++) {
  208. var side = i+1;
  209. if(side%2!=0) {
  210. newOrder[i].style.marginRight = "10px";
  211. }
  212. else {
  213. newOrder[i].style.marginRight= "0px";
  214. }
  215. box.appendChild(newOrder[i]);
  216. }
  217. GM_setValue("type",type);
  218. }
  219.  
  220. }
  221.  
  222. function sortKey(k,sortVar) {
  223.  
  224. var key = new Array(players.length);
  225. var sortedArray = new Array();
  226.  
  227.  
  228. for(var i=0; i<players.length; i++) {
  229. var toAdd;
  230. if(k=="position")
  231. toAdd = players[i].position;
  232. else if (k=="team")
  233. toAdd = players[i].team;
  234. else if (k=="name")
  235. toAdd = players[i].name;
  236. else if (k=="level")
  237. toAdd = players[i].level;
  238. else if (k=="xp")
  239. toAdd = players[i].xp;
  240. else if (k=="vxp")
  241. toAdd = players[i].vxp;
  242. else if (k=="game")
  243. toAdd = players[i].game;
  244. else if (k=="date")
  245. toAdd = players[i].date;
  246. else if (k=="training")
  247. toAdd = players[i].training;
  248.  
  249. key[i] = new Array(2);
  250. key[i][0] = toAdd;
  251. key[i][1] = players[i].id;
  252. }
  253.  
  254. if(sortVar=="text") {
  255. key.sort();
  256. }
  257. else if(sortVar == "num") {
  258. key.sort(compare);
  259. }
  260.  
  261. var sortSelect = document.getElementById("adSelect");
  262. var sortOrder = sortSelect.options[sortSelect.selectedIndex].value;
  263.  
  264. if(sortOrder=="Ascending") {
  265. key.reverse();
  266. }
  267. GM_setValue("sortOrder",sortOrder);
  268.  
  269. for(var i=0; i<players.length; i++) {
  270. sortedArray[i] = playerInfo[key[i][1]];
  271. }
  272.  
  273.  
  274. return sortedArray;
  275. }
  276.  
  277. },100);