// ==UserScript== // @name uftow-stats-simple // @namespace uftow-stats-simple // @include https://ubuntuforums.org/showthread.php?t=1579442* // @version 1.3.0 // @Description Generates stats for Tug of War - simple variant. // @grant GM_log // @grant GM_getValue // @grant GM_setValue // @grant GM_listValues // @grant GM_deleteValue // @grant GM_registerMenuCommand // ==/UserScript== var towStats = { alreadyHasStartCounting:false, scores:new Array(), lastPostNumber:null, lastPoster:null, startPostNumber:null, endPostNumber:null, init: function(){ this.postContainers=document.getElementsByClassName('postcontainer'); this.firstPostNumber=parseInt(this.postContainers[0].getElementsByClassName('postcounter')[0].textContent.substr(1)); this.lastPostNumber=parseInt(this.postContainers[this.postContainers.length-1].getElementsByClassName('postcounter')[0].textContent.substr(1)); if(!GM_getValue("statsActive",false)){ GM_registerMenuCommand("Start counting posts",function(){towStats.startCounting();},'S'); this.alreadyHasStartCounting=true; }else{ this.startCounting(); } GM_registerMenuCommand("Clear counter",function(){towStats.clearStats();},'A'); }, recordPosts: function(startPost){ var postNumber; var startDiff=startPost-this.firstPostNumber; var postInfo; if(startDiff<0 || startPost>this.firstPostNumber+this.postContainers.length-1){ alert("Post #"+startPost+" is not on this page."); return false; } for (var i=startDiff;ithis.endPostNumber){ break; } this.scorePost(postInfo); } return true; }, getPostInfo: function(postElement){ var userSpanTag=postElement.getElementsByClassName('username')[0].getElementsByTagName('span')[0]; var userName=userSpanTag.textContent; var postNumber=parseInt(postElement.getElementsByClassName('postcounter')[0].textContent.substr(1)); return new Array(userName,postNumber); }, scorePost: function(postInfo){ this.lastPoster=postInfo[0]; userIndex=this.scores.indexOf(postInfo[0]); //The second check in the if statement makes sure users with usernames being actual numbers don't break this script if(userIndex!=-1&&userIndex%2==0){ this.scores[userIndex+1]++; }else{ this.scores.push(postInfo[0]); this.scores.push(1); } }, getSummary: function(){ var alertText="[B]TUG OF WAR LAST ROUND STATS[/B]\n"; var totalParticipants=0; var totalPosts=0; for(var i=1;i=participants.length){ break; } if(participants[i+1]=this.endPostNumber) || !this.goToNextPage()){ if(this.scores.length>=2 && !(this.endPostNumber!=null && this.lastPostNumber