summaryrefslogtreecommitdiffstats
path: root/uftow-stats-simple.user.js
diff options
context:
space:
mode:
Diffstat (limited to 'uftow-stats-simple.user.js')
-rw-r--r--uftow-stats-simple.user.js134
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;
- }
}
};