Zählt die bereits geschauten/gelesenen Animes/Mangas und erlaubt es die Tabellen per Klick zusammenzuklappen bzw. sich mehr Details anzeigen zu lassen.
当前为
// ==UserScript==
// @name Proxer Statistics
// @namespace *
// @version 1.0
// @description Zählt die bereits geschauten/gelesenen Animes/Mangas und erlaubt es die Tabellen per Klick zusammenzuklappen bzw. sich mehr Details anzeigen zu lassen.
// @author Deimos
// @include http://proxer.me/*
// @include https://proxer.me/*
// @include http://www.proxer.me/*
// @include https://www.proxer.me/*
// @grant none
// ==/UserScript==
var page = 0;
var cookie = "vvvvvvvv"; //v:= visible h:= hidden
createObserver();
tableListener();
//Observer um auf AJAX zu reagieren
function createObserver()
{
var target = $("#main").get(0);
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
console.log(mutation.type);
tableListener();
});
});
var config = { attributes: true, childList: true, characterData: true };
observer.observe(target, config);
}
//Ermitteeln der Tabellenlänge und setzen der EventListener
function tableListener()
{
var tables = $("table");
page = getPage(tables[0].rows[0].getElementsByTagName("th")[0].innerHTML);
if(page == 1 || page == 2)
{
cookie=checkCookie();
for(i = 0; i<tables.length;i++)
{
var tr = tables[i].rows;
var l = tr.length;
var message= ": " + (l-2);
tr[0].getElementsByTagName("th")[0].innerHTML+= message;
tr[0].addEventListener("click",action);
tr[0].id ="tr"+(i+(page*4)-4);
if(cookie[i+(page*4)-4]=="h")
hide(tr);
}
}
}
//Auswahl ob "hide" oder "details"
function action(e)
{
var tr = this.parentElement.parentElement.rows;
var xPosition = e.clientX;
var rect = tr[0].getBoundingClientRect();
var width = tr[0].offsetWidth;
if(xPosition<width/2)
details(tr);
else
{
hide(tr);
setCookie("proxStat",cookie,365);
}
}
//Anzeigen der genaueren Details der ausgewählten Tabelle
function details(tr)
{
var text = tr[0].getElementsByTagName("th")[0].innerHTML;
if(text.includes("<br>"))
{
text = text.slice(0,text.indexOf("<br>"));
tr[0].getElementsByTagName("th")[0].innerHTML = text;
return true;
}
var l = tr.length;
var movies = 0;
var ovas = 0;
var animes = 0;
var mangas = 0;
var doujinshis = 0;
var one_shots = 0;
var h_mangas = 0;
for(i = 2; i<l; i++)
{
var type = tr[i].getElementsByTagName("td")[2].innerHTML;
switch(type)
{
case "Movie":
movies++;
break;
case "OVA":
ovas++;
break;
case "Animeserie":
animes++;
break;
case "Mangaserie":
mangas++;
break;
case "H-Manga":
h_mangas++;
break;
case "Doujinshi":
doujinshis++;
break;
case "One-Shot":
one_shots++;
break;
}
}
var message= "";
if(animes!==0)
message+= "<br> Animeserien: "+animes;
if(movies!==0)
message+= "<br> Movies: "+movies;
if(ovas!==0)
message+= "<br> OVAs: "+ovas;
if(mangas!==0)
message+= "<br> Mangaserien: "+mangas;
if(h_mangas!==0)
message+= "<br> H-Mangas: "+h_mangas;
if(doujinshis!==0)
message+= "<br> Doujinshis:: "+doujinshis;
if(one_shots!==0)
message+= "<br> One-Shots: "+one_shots;
tr[0].getElementsByTagName("th")[0].innerHTML+= message;
}
//Einklappen der ausgewählten Tabelle
function hide(tr)
{
var id = parseInt(tr[0].id[2]);
var visibility;
var char;
if(tr[1].style.display == "none")
{
visibility = "table-row";
char = "v";
}
else
{
visibility = "none";
char = "h";
}
cookie = cookie.substring(0,id) + char + cookie.substring(id+1, cookie.length);
for(e = 1; e < tr.length; e++)
{
tr[e].style.display =visibility;
}
}
//Befindet sich der User auf seinem Manga oder Anime Verzeichnis?
function getPage(innerHTML)
{
switch(innerHTML)
{
case "Gelesen": //Mangas
return 1;
case "Geschaut": //Animes
return 2;
default: //Anderes
return 0;
}
}
//Cookie, welcher speichert ob eine Tabelle versteckt ist, oder nicht
function checkCookie()
{
var cookie = getCookie("proxStat");
if (cookie == "")
{
cookie = "vvvvvvvv";
setCookie("proxStat", cookie, 365);
}
return cookie;
}
function getCookie(cname)
{
var name = cname + "=";
var ca = document.cookie.split(";");
for(var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
function setCookie(cname, cvalue, exdays)
{
var d = new Date();
d.setTime(d.getTime() + (exdays*24*60*60*1000));
var expires = "expires="+d.toUTCString();
document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}