From db531fd4775033ee85b3ef5ade3f4d045a9bdb57 Mon Sep 17 00:00:00 2001 From: Krytarik Raido Date: Sun, 17 Sep 2017 22:45:04 +0200 Subject: uftow-stats, -simple 1.3.0 --- uftow-stats-simple.user.js | 225 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 225 insertions(+) create mode 100644 uftow-stats-simple.user.js (limited to 'uftow-stats-simple.user.js') diff --git a/uftow-stats-simple.user.js b/uftow-stats-simple.user.js new file mode 100644 index 0000000..f04c987 --- /dev/null +++ b/uftow-stats-simple.user.js @@ -0,0 +1,225 @@ +// ==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