diff options
Diffstat (limited to 'uftow-stats-simple.user.js')
-rw-r--r-- | uftow-stats-simple.user.js | 134 |
1 files changed, 77 insertions, 57 deletions
diff --git a/uftow-stats-simple.user.js b/uftow-stats-simple.user.js index f04c987..c8993b7 100644 --- a/uftow-stats-simple.user.js +++ b/uftow-stats-simple.user.js @@ -2,7 +2,7 @@ // @name uftow-stats-simple // @namespace uftow-stats-simple // @include https://ubuntuforums.org/showthread.php?t=1579442* -// @version 1.3.0 +// @version 1.4.0 // @Description Generates stats for Tug of War - simple variant. // @grant GM_log // @grant GM_getValue @@ -15,7 +15,7 @@ var towStats = { alreadyHasStartCounting:false, scores:new Array(), - lastPostNumber:null, + lastPostNumber:0, lastPoster:null, startPostNumber:null, endPostNumber:null, @@ -24,12 +24,17 @@ var towStats = { 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; + this.addStartCounting(); }else{ - this.startCounting(); + this.continueCounting(); } - GM_registerMenuCommand("Clear counter",function(){towStats.clearStats();},'A'); + GM_registerMenuCommand("Tug of War: Clear counter",function(){towStats.clearStats();},'A'); + }, + addStartCounting: function(){ + GM_registerMenuCommand("Tug of War: Start counting",function(){towStats.startCounting();},'S'); + GM_registerMenuCommand("Tug of War: Continue counting",function(){towStats.continueCounting();},'C'); + GM_registerMenuCommand("Tug of War: Show last results",function(){towStats.showSummary();},'R'); + this.alreadyHasStartCounting=true; }, recordPosts: function(startPost){ var postNumber; @@ -71,6 +76,13 @@ var towStats = { } }, getSummary: function(){ + if(this.scores.length>=2 && !(this.endPostNumber!=null && this.lastPostNumber<this.endPostNumber)){ + window.alert("Counting complete.\n"+ + "Stats will be displayed in the next dialog box."); + }else{ + window.alert("Tug of War is yet to be completed."); + return false; + } var alertText="[B]TUG OF WAR LAST ROUND STATS[/B]\n"; var totalParticipants=0; var totalPosts=0; @@ -131,57 +143,59 @@ var towStats = { } return new Array(statsText); }, - restoreStats: function(){ - if(!GM_getValue("statsActive",false)){ - GM_setValue("statsActive",true); + goToNextPage: function(){ + var pageLinks=document.getElementsByClassName('pagination_top')[0]; + var nextLinkContainer=pageLinks.getElementsByClassName('prev_next')[1]; + if(nextLinkContainer!=undefined){ + nextLinkContainer.getElementsByTagName('a')[0].click(); + return true; + }else{ return false; } - var scoresCount=GM_getValue("scores.count",0); - this.lastPoster=GM_getValue("lastPoster",null); - this.lastPostNumber=parseInt(GM_getValue("lastPostNumber")); - this.startPostNumber=parseInt(GM_getValue("startPostNumber")); - this.endPostNumber=GM_getValue("endPostNumber"); - if(this.endPostNumber!=null){ - this.endPostNumber=parseInt(this.endPostNumber); - } - for(i=0;i<scoresCount;i++){ - this.scores.push(GM_getValue("scores."+i)); - } - return true; }, startCounting: function(){ + this.clearStats(); + answerStart=window.prompt("Specifiy a post number to begin counting.\n"+ + "If you do not know the post number, click Cancel."); + if(answerStart!=null){ + startPost=parseInt(answerStart); + this.startPostNumber=startPost; + answerEnd=window.prompt("Specifiy a post number to end counting.\n"+ + "If you want to count until the end, click Cancel."); + if(answerEnd!=null){ + this.endPostNumber=parseInt(answerEnd); + } + GM_setValue("statsActive",true); + this.doCounting(startPost); + } + }, + continueCounting: function(){ if(this.restoreStats()){ startPost=this.lastPostNumber+1; - }else{ - answerStart=window.prompt("Specifiy a post number to begin counting.\n"+ - "If you do not know the post number, click Cancel."); - if(answerStart!=null){ - startPost=parseInt(answerStart); - this.startPostNumber=startPost; - answerEnd=window.prompt("Specifiy a post number to end counting.\n"+ - "If you want to count until the end, click Cancel."); - if(answerEnd!=null){ - this.endPostNumber=parseInt(answerEnd); - } - GM_setValue("statsActive",true); - }else{ - this.clearStats(); - return false; - } + GM_setValue("statsActive",true); + this.doCounting(startPost); } + }, + doCounting: function(startPost){ if(!this.recordPosts(startPost)){ + this.endCounting(); return false; } this.saveStats(); if((this.endPostNumber!=null && this.lastPostNumber>=this.endPostNumber) || !this.goToNextPage()){ - if(this.scores.length>=2 && !(this.endPostNumber!=null && this.lastPostNumber<this.endPostNumber)){ - window.alert("Counting complete.\n"+ - "Stats will be displayed in the next dialog box."); - this.getSummary(); - }else{ - window.alert("Tug of War is yet to be completed."); - } - this.clearStats(); + this.getSummary(); + this.endCounting(); + } + }, + endCounting: function(){ + GM_setValue("statsActive",false); + if(!this.alreadyHasStartCounting){ + this.addStartCounting(); + } + }, + showSummary: function(){ + if(this.restoreStats()){ + this.getSummary(); } }, saveStats: function(){ @@ -194,20 +208,30 @@ var towStats = { GM_setValue("lastPoster",this.lastPoster); GM_setValue("startPostNumber",this.startPostNumber); GM_setValue("endPostNumber",this.endPostNumber); + GM_setValue("statsCached",true); }, - goToNextPage: function(){ - var pageLinks=document.getElementsByClassName('pagination_top')[0]; - var nextLinkContainer=pageLinks.getElementsByClassName('prev_next')[1]; - if(nextLinkContainer!=undefined){ - nextLinkContainer.getElementsByTagName('a')[0].click(); - return true; - }else{ + restoreStats: function(){ + if(!GM_getValue("statsCached",false)){ + window.alert("No cached stats.") return false; } + var scoresCount=GM_getValue("scores.count",0); + this.lastPoster=GM_getValue("lastPoster",null); + this.lastPostNumber=parseInt(GM_getValue("lastPostNumber")); + this.startPostNumber=parseInt(GM_getValue("startPostNumber")); + this.endPostNumber=GM_getValue("endPostNumber"); + if(this.endPostNumber!=null){ + this.endPostNumber=parseInt(this.endPostNumber); + } + this.scores=new Array(); + for(i=0;i<scoresCount;i++){ + this.scores.push(GM_getValue("scores."+i)); + } + return true; }, clearStats: function(){ this.scores=new Array(); - this.lastPostNumber=null; + this.lastPostNumber=0; this.lastPoster=null; this.startPostNumber=null; this.endPostNumber=null; @@ -215,10 +239,6 @@ var towStats = { for (var i=0,key=null; key=keys[i];i++) { GM_deleteValue(key); } - if(!this.alreadyHasStartCounting){ - GM_registerMenuCommand("Start counting posts",function(){towStats.startCounting()},'S'); - this.alreadyHasStartCounting=true; - } } }; |