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.user.js | 265 ++++++++++++++++++++++------------------------------ 1 file changed, 111 insertions(+), 154 deletions(-) (limited to 'uftow-stats.user.js') diff --git a/uftow-stats.user.js b/uftow-stats.user.js index fdfb838..db2a51e 100644 --- a/uftow-stats.user.js +++ b/uftow-stats.user.js @@ -1,23 +1,23 @@ // ==UserScript== // @name uftow-stats // @namespace uftow-stats -// @include http://ubuntuforums.org/showthread.php?t=1579442* -// @version 1.2.1 -// @Description Generates stats for Tug of War. +// @include https://ubuntuforums.org/showthread.php?t=1579442* +// @version 1.3.0 +// @Description Generates stats for Tug of War. +// @grant GM_log // @grant GM_getValue // @grant GM_setValue -// @grant GM_log // @grant GM_listValues -// @grant GM_setValue -// @grant GM_addStyle // @grant GM_deleteValue // @grant GM_registerMenuCommand // ==/UserScript== var towConfig = { multipliers:new Array( - //Forum Staff + //Forum Moderator 'images/rank_uf_moderator_2013-07.png',-2, + //Forum Super Moderator + 'images/rank_uf_super_moderator_2014_12.png',-3, //Forum Admin 'images/rank_uf_admin_2013-07.png',-4, //LoCo mods @@ -41,14 +41,14 @@ var towStats = { scores:new Array(), currentScore:0, lastPostNumber:null, + lastPoster:null, winner:null, marker:null, markerPost:null, - lastPoster:null, - init:function(){ + init: function(){ this.postContainers=document.getElementsByClassName('postcontainer'); - this.firstPostNumber=this.parsePostNumber(this.postContainers[0].getElementsByClassName('postcounter')[0].textContent); - this.lastPostNumber=this.parsePostNumber(this.postContainers[this.postContainers.length-1].getElementsByClassName('postcounter')[0].textContent); + 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)); this.currentScore=0; if(!GM_getValue("statsActive",false)){ GM_registerMenuCommand("Start counting posts",function(){towStats.startCounting();},'S'); @@ -58,24 +58,19 @@ var towStats = { } GM_registerMenuCommand("Clear counter",function(){towStats.clearStats();},'A'); }, - recordPosts: function(start){ + recordPosts: function(startPost){ var postNumber; - var startDiff=start-this.firstPostNumber; + var startDiff=startPost-this.firstPostNumber; var postInfo; - GM_log("Seek ahead by "+startDiff+" posts"); - //alt4Number=1+(startDiff*2); - if(startDiff<0){ - alert("No such post exists on this page"); + if(startDiff<0 || startPost>this.firstPostNumber+this.postContainers.length-1){ + alert("Post #"+startPost+" is not on this page."); return false; } for (var i=startDiff;i=200){ this.winner='community'; - }if(this.winner!=undefined){ + }if(this.winner!=null){ this.marker=postInfo[0]; this.markerPost=postInfo[3]; break; } - GM_log("Post: "+postInfo[3]+", Round score: "+this.currentScore); + //GM_log("Post: "+postInfo[3]+", Round score: "+this.currentScore); } + return true; }, getPostInfo: function(postElement){ var userSpanTag=postElement.getElementsByClassName('username')[0].getElementsByTagName('span')[0]; var userName=userSpanTag.textContent; var css=userSpanTag.getAttribute('style'); var rankURL=postElement.getElementsByClassName('rank')[0].getElementsByTagName('img')[0].getAttribute('src'); - var postNumber=this.parsePostNumber(postElement.getElementsByClassName('postcounter')[0].textContent); - if(userName==""){ - userName='[UNKNOWN USERNAME]'; - } + var postNumber=parseInt(postElement.getElementsByClassName('postcounter')[0].textContent.substr(1)); return new Array(userName,css,rankURL,postNumber); }, scorePost: function(postInfo){ @@ -121,94 +114,75 @@ var towStats = { } }, getSummary: function(){ - if(this.winner!=undefined){ - var alertText="[B]TUG OF WAR LAST ROUND STATS[/B]\n"; - var totalPoints=0; - var totalPosts=0; - var totalModPoints=0; - var totalModPosts=0; - var totalCommunityPoints=0; - var totalCommunityPosts=0; - var minimumRequiredMVP; - var mvpList=new Array(); - var communityParticipants=new Array(); - var winners; - var allowMVP; - var modParticipants=new Array(); - GM_log(this.scores); - for(var i=1;i0){ - totalCommunityPoints+=this.scores[i+1]*this.scores[i]; - totalCommunityPosts+=this.scores[i+1]; - } - totalPosts+=this.scores[i+1]; - } - minimumRequiredMVP=Math.round(((this.winner=='community')?totalCommunityPoints:totalModPoints)*0.15); - alertText+="[B]Total points:[/B] "+totalPoints+" from "+totalPosts+" posts\n"; - alertText+="[B]Total community points:[/B] "; - if(totalCommunityPosts>0){ - alertText+=totalCommunityPoints+" from "+totalCommunityPosts+" posts\n"; - }else{ - alertText+="None\n"; + var alertText="[B]TUG OF WAR LAST ROUND STATS[/B]\n"; + var totalPoints=0; + var totalPosts=0; + var totalModPoints=0; + var totalModPosts=0; + var totalCommunityPoints=0; + var totalCommunityPosts=0; + var totalWinningPoints=0; + var minimumRequiredMVP; + var mvpList=new Array(); + var communityParticipants=new Array(); + var modParticipants=new Array(); + for(var i=1;i0){ + totalCommunityPoints+=this.scores[i+1]*this.scores[i]; + totalCommunityPosts+=this.scores[i+1]; } - alertText+="[B]Total mod points:[/B] "; - if(totalModPosts>0){ - alertText+=totalModPoints+" from "+totalModPosts+" posts\n"; + totalPosts+=this.scores[i+1]; + } + totalWinningPoints=(this.winner=='community')?totalCommunityPoints:totalModPoints; + minimumRequiredMVP=Math.round(totalWinningPoints*0.15); + alertText+="[B]Total points:[/B] "+totalPoints+" from "+totalPosts+" posts\n"; + alertText+="[B]Total community points:[/B] "; + alertText+=((totalCommunityPosts>0)?totalCommunityPoints+" from "+totalCommunityPosts+" posts":"None")+"\n"; + alertText+="[B]Total mod points:[/B] "; + alertText+=((totalModPosts>0)?totalModPoints+" from "+totalModPosts+" posts":"None")+"\n"; + alertText+="[B]Minimum required for MVP* ("+totalWinningPoints+" x 0.15):[/B] "+minimumRequiredMVP+"\n\n"; + for(var i=0;i=participants.length){ @@ -228,12 +202,12 @@ var towStats = { } for(var i=0;i=minimumRequiredMVP){ - GM_log("Adding "+participants[i]+" to the MVP list."); + //GM_log("Adding "+participants[i]+" to the MVP list."); mvpList.push(participants[i]); } } @@ -243,68 +217,61 @@ var towStats = { return new Array(statsText,mvpList); }, restoreStats: function(){ - var statsActive=GM_getValue("statsActive",false); - var scoresCount=GM_getValue("scores.count",0); - if(statsActive==false){ - GM_log("Attempting to save setting statsActive"); + if(!GM_getValue("statsActive",false)){ GM_setValue("statsActive",true); return false; - }else{ - this.lastUser=GM_getValue("lastPoster",null); - this.currentScore = parseInt(GM_getValue("CurrentScore")); - this.lastPostNumber = parseInt(GM_getValue("lastPostNumber")); - for(i=0;i