// ==UserScript== // @name DS-ActivityControl // @namespace ds // @include *.die-staemme.de/game.php*screenmode=view_thread* // @include *.die-staemme.de/game.php*mode=members* // @include *.die-staemme.de/game.php* // @author Dummbroesel // @description Activity control for ds ally member. // @version 0.9.0 // @grant none // @downloadURL none // ==/UserScript== // SEETINGS var greenMarkHours = 72; //hour range for green highlighting var yellowMarkHours = 240; //hour range for yellow highlighting //var redMarkHours = everything else! // SOME PROTOTYPING if (!String.prototype.format) { String.prototype.format = function() { var args = arguments; return this.replace(/{(\d+)}/g, function(match, number) { return typeof args[number] != 'undefined' ? args[number] : match; }); }; } if (!Date.prototype.getLocaleDate) { Date.prototype.getLocaleDate = function () { return "{0}.{1}.{2}".format(this.getDate(), (this.getMonth()+1), this.getFullYear()); }; } if (!Date.prototype.getLocaleDateOfYesterday) { Date.prototype.getLocaleDateOfYesterday = function () { return "{0}.{1}.{2}".format((this.getDate() -1), (this.getMonth()+1), this.getFullYear()); }; } if (!Date.prototype.getLocaleTime) { Date.prototype.getLocaleTime = function () { return "{0}:{1}:{2}".format(this.getHours(), this.getMinutes(), this.getSeconds()); }; } if (!Date.prototype.getLocaleFullDate) { Date.prototype.getLocaleFullDate = function () { //return "{0}.{1}.{2} {3}:{4}:{5} ".format(this.getDate(), (this.getMonth()+1), this.getFullYear(), this.getHours(), this.getMinutes(), this.getSeconds()); return "{0}.{1}.{2} {3}:{4}".format(this.getDate(), (this.getMonth()+1), this.getFullYear(), this.getHours(), this.getMinutes());//, this.getSeconds()); }; } if (!Date.prototype.parseLocaleFullDate) { Date.prototype.parseLocaleFullDate = function (input) { var parts = input.split(/([\.\ :])\b/g); return new Date(parts[4], parts[2]-1, parts[0], parts[6], parts[8]); }; } if (!Date.prototype.getLocaleParsedFullDate) { Date.prototype.getLocaleParsedFullDate = function (input) { var parts = input.split(/([\.\ :])\b/g); var tDay = (parts[0]) ? parts[0] : 1; var tMonth = (parts[2]) ? parts[2] : 1; var tYear = (parts[4]) ? parts[4] : 1900; var tHours = (parts[6]) ? parts[6] : 1; var tMinutes = (parts[8]) ? parts[8] : 1; var tSeconds = (parts[10]) ? parts[10] : 1; if(parts[4] <2000) { tYear = 2014; tHours = (parts[4]) ? parts[4] : 1; tMinutes = (parts[6]) ? parts[6] : 1; tSeconds = (parts[8]) ? parts[8] : 1; } var tDate = new Date(tYear, tMonth-1, tDay, tHours, tMinutes); return "{0}.{1}.{2} {3}:{4}".format( (tDate.getDate() <10) ? "0"+tDate.getDate() : tDate.getDate(), ((tDate.getMonth()+1) <10) ? "0"+(tDate.getMonth()+1):(tDate.getMonth()+1), tDate.getFullYear(), (tDate.getHours() <10)?"0"+tDate.getHours():tDate.getHours(), (tDate.getMinutes() <10)?"0"+tDate.getMinutes():tDate.getMinutes() );//, this.getSeconds()); }; } // INIT var date = new Date(); // HERE WE GOES jQuery(document).ready(function () { if (window.location.search.indexOf('mode=members') > 0) { CompareActiveMembers(); } else if (window.location.search.indexOf('screenmode=view_thread') > 0) { EvaluatePosts(); } }); jQuery(document).keypress(function(event) { if($('input[type=text], textarea').is(":focus")) return; var eCode = (event.keyCode == 0)? event.charCode : event.keyCode; console.log(eCode); switch (eCode) { case 120: //x ImportActiveMemberList(); return false; break; case 99: //c ExportActiveMemberList(); break; default: break; } }); function SetActiveAllyMemberListFromObject(object) { var memberList = object; localStorage.setItem('ActiveMemberList', JSON.stringify(memberList)); } function AddActiveAllyMemberToList(memberName, currentDate, currentAction) { var memberList = (!GetActiveAllyMemberList()) ? new Object() : GetActiveAllyMemberList(); if(!memberList[memberName]) { memberList[memberName] = { postCount: (currentAction == 'post') ? new Array(date.getLocaleParsedFullDate(currentDate)) : new Array(), thanksCount: (currentAction == 'thanks') ? new Array(date.getLocaleParsedFullDate(currentDate)) : new Array(), latestAction: {dateTime: date.getLocaleParsedFullDate(currentDate), action: currentAction} }; } else { if(currentAction == 'post') { var cDate = date.getLocaleParsedFullDate(currentDate); if(memberList[memberName].postCount.indexOf(cDate) < 0) { memberList[memberName].postCount.push(cDate); } } else if(currentAction == 'thanks'){ var cDate = date.getLocaleParsedFullDate(currentDate); if(memberList[memberName].thanksCount.indexOf(cDate) < 0) { memberList[memberName].thanksCount.push(cDate); } } if(memberList[memberName].latestAction.dateTime != currentDate) { var cDate = date.parseLocaleFullDate(currentDate); var lDate = date.parseLocaleFullDate(memberList[memberName].latestAction.dateTime); if(cDate > lDate) { memberList[memberName].latestAction.dateTime = date.getLocaleParsedFullDate(currentDate); memberList[memberName].latestAction.action = currentAction; } } } localStorage.setItem('ActiveMemberList', JSON.stringify(memberList)); } function GetActiveAllyMemberList() { return JSON.parse(localStorage.getItem('ActiveMemberList')); } function GetMemberFromActiveAllyMemberList(pName) { var memberList = (!GetActiveAllyMemberList()) ? false : GetActiveAllyMemberList(); if(!memberList) return false; if(!memberList[pName]) return false; return memberList[pName]; } function EvaluatePosts() { var postList = $('.post'); if(!postList) return console.log('Keine Foreneinträge vorhanden!'); postList.each(function (){ post = jQuery(this); GetActiveMembersFromPost(post); }); } function GetActiveMembersFromPost(post) { var fMember = jQuery(post).find('span.postheader_left'); var fMemberName = fMember.find('a').text(); var fMemberFormatedName = EvaluateName(fMemberName); var fMemberDate = fMember.text().replace(fMemberName,""); var fMemberFormatedDate = EvaluateDate(fMemberDate); var memberThanks = jQuery(post).find('div.post_thanks_who'); var thanks = memberThanks.text().split(','); for (var val in thanks) { if(!thanks[val]) return; var bMember = thanks[val].split(" ("); var bMemberName = bMember[0]; var bMemberFormatedName = EvaluateName(bMemberName); var bMemberDate = bMember[1].replace(")", ""); var bMemberFormatedDate = EvaluateDate(bMemberDate); } } function EvaluateName(pName) { var reps = { "\t": "", "\n": "" }; var formatedName = pName; for (var val in reps) { formatedName = formatedName.replace(new RegExp(val, "g"), reps[val]); } return (formatedName[0] == " ") ? formatedName.replace(/[(\ )]/, "") : formatedName; } function EvaluateDate(dsDate) { var reps = { am: "", Am: "", um: "", Um: "", uhr: "", Uhr: "", heute: date.getLocaleDate(), Heute: date.getLocaleDate(), gestern: date.getLocaleDateOfYesterday(), Gestern: date.getLocaleDateOfYesterday(), "\t": "", "\n": "" }; var formatedDate = dsDate; for (var val in reps) { formatedDate = formatedDate.replace(new RegExp(val, "g"), reps[val]); } return (formatedDate[0] == " ") ? formatedDate.replace(/[(\ )]/, "") : formatedDate; } function CompareActiveMembers(){ var allRows = jQuery('div#ally_content table tr'); allRows.each(function () { var cRow = jQuery(this); if(cRow.find('th').length > 0) { cRow.append('