Instantly share code, notes, and snippets.
Created
May 3, 2021 16:09
-
Save MartinMuzatko/2452f9416e0eb0258f01596cd38bba42 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<html> | |
<head> | |
<!-- Site optimized with MySEO 1.0 --> | |
{$seo_index} | |
<!-- Site optimized with MySEO 1.0 --> | |
<title>{$mybb->settings['bbname']}</title> | |
<meta http-equiv=“Pragma” content=”no-cache”> | |
<meta http-equiv=“Expires” content=”-1″> | |
<meta http-equiv=“CACHE-CONTROL” content=”NO-CACHE”> | |
{$headerinclude} | |
<style> | |
.button.small { | |
width: 70px; | |
} | |
.button.big { | |
width: 94px; | |
} | |
.button.gigantic { | |
width: 143px; | |
} | |
.inactive:hover:not(.exception) { | |
background-color: #666666; | |
cursor: pointer; | |
} | |
.inactive { | |
background-color: #222222; | |
} | |
.active:hover:not(.exception) { | |
background-color: #cccccc; | |
} | |
.active { | |
background-color: #aaaaaa; | |
cursor: pointer; | |
} | |
.button { | |
-webkit-touch-callout: none; | |
-webkit-user-select: none; | |
-khtml-user-select: none; | |
-moz-user-select: none; | |
-ms-user-select: none; | |
user-select: none; | |
color: #fff; | |
display: inline-block; | |
text-align: center; | |
font-weight: bold; | |
} | |
.button.upper{ | |
margin-bottom: 2px; | |
} | |
.button.left { | |
margin-right: -2px; | |
} | |
.button.left.double { | |
margin-left: -3px; | |
} | |
.button.left.upper { | |
border-radius: 10px 0px 0px 0px; | |
} | |
.button.left.lower { | |
border-radius: 0px 0px 0px 10px; | |
} | |
.button.mid { | |
margin-right: -2px; | |
} | |
.button.right.upper { | |
border-radius: 0px 10px 0px 0px; | |
} | |
.button.right.lower { | |
border-radius: 0px 0px 10px 0px; | |
} | |
.invisible { | |
visibility: hidden; | |
width: 0px !important; | |
} | |
.buttonWrapper { | |
white-space: nowrap; | |
overflow-x: hidden; | |
width: 300px; | |
} | |
</style> | |
<script type="text/javascript"> | |
<!-- | |
lang.no_new_posts = "{$lang->no_new_posts}"; | |
lang.click_mark_read = "{$lang->click_mark_read}"; | |
// --> | |
</script> | |
<style type="text/css"> | |
.navigation {display:none;} /*Index only*/ | |
</style> | |
</head> | |
<body> | |
{$header} | |
<table width="100%" cellspacing="0" cellpadding="{$theme['tablespace']}" border="0"> | |
<tr> | |
<td valign="top" width="78%"> | |
{$forums} | |
{$boardstats} | |
</td> | |
<td valign="top"> | |
<table border="0" cellspacing="{$theme['borderwidth']}" cellpadding="{$theme['tablespace']}" class="tborder"> | |
<tr> | |
<td class="thead"> | |
<div class="float_left"><strong>SERVER INFORMATIONEN</strong></div | |
</td> | |
</tr> | |
<tr> | |
<td align="center" class="trow2"> | |
<img src="images/icons/Minecraft.png"> | |
<strong>Minecraft: athalon.de<i style="font-size: 16px;"></i></strong><br> | |
<i class="fab fa-teamspeak" style="color:#7AD7F0"></i> | |
<strong>Teamspeak: </strong><a href="ts3server://ts.athalon.de?port=9987">ts.athalon.de</a><br> | |
<i class="fab fa-discord" style="color:#7289da"></i> | |
<strong>Discord: <i style="font-size: 16px;"></i></strong><a href=https://discord.gg/DVHzrMC> Discord beitreten!</a><br> | |
<i class="fab fa-wikipedia-w"></i> | |
<strong>Athalon Wiki:<i style="font-size: 16px;"></i></strong><a href=http://wiki.athalon.de> wiki.athalon.de</a><br> | |
<br> | |
</td> | |
</tr> | |
</table> | |
<br /> | |
<table border="0" cellspacing="{$theme['borderwidth']}" cellpadding="{$theme['tablespace']}" class="tborder"> | |
<thead> | |
<tr> | |
<td class="thead"> | |
<strong>Zitate</strong> | |
</td> | |
</tr> | |
</thead> | |
<tbody> | |
<tr class="portal"> | |
<td class="trow2" id="zitate"> | |
</td> | |
</tr> | |
</tbody> | |
</table> | |
<br /> | |
<script> | |
var object = { | |
"2019":[ | |
["Freunde des Alkohols.. Es muss ja mal gesagt werden. Ich trinke auch nicht NUR Alkohol...","René","2019"], | |
["Ich bin nicht nachtragend!","René","2019"], | |
["Das gaaaanze Internet spinnt grade!","Chris","2019"], | |
["Kann es sein, dass ich verzögert weinen muss, weil ich vorhin Zwiebeln gegessen habe?","Zwocke (Zwiebel-Socke)","2019"], | |
["Dürfte ich vielleicht einmal...an Ihrem Kind riechen?","Chilaili","2019"], | |
["Mit dem Thema [G20] sollten wir aufhören, dabei steigt mein Cholesterinspiegel","Seb","2019"], | |
["Was ist, Seb? Äh...Bernt? Äh...Ati? Äh...Ardy?","Chris","2019"], | |
["*Jasmin legt ihm eine Schulter auf die Hand*","Jasmin (Lea)","2019"], | |
["Gehört diese Birke euch?","Chilaili","2019"], | |
["WAS IST NE MAP?! WAS IST NE MAP????","Chris","2019"], | |
["Christians Kinder, die er später wegen Cannabis Besitz anzeigt, entstehen auch nur aus einem Emote!","Ardy","2019"], | |
["Ich hasse Socken!","Socke","2019"], | |
["Steht auf und verschwindet, sonst scheiße ich euch vom Prioreisberg!","Amelie (Cookey)","2019"] | |
], | |
"2020":[ | |
["Sie ist nicht katholisch, sie ist Italienerin","Chris","2020"], | |
["Drei ist eine große Zahl.","Cookey","2020"], | |
["... du schläfst schon nur mit deiner Mama zusammen oder Bernt?","Socke","2020"], | |
["Wir sollten einen offensiven Rückzug in ihre Richtung machen!","Alfredo Angelo (René)","2020"], | |
["Sag mal [Dennis], seit wann ist denn dein Ding SO GROß!?","Josi","2020"], | |
["Das Fleisch spritzt mich an, Hilfe!","Josi","2020"], | |
["Wie heißt diese Währung in Polen? Knöllies?","Socke","2020"], | |
["Leute wenn die jetzt gewinnen, dann haben wir verloren!","Dennis","2020"], | |
["Nicht zu wild pipettieren!","Chris","2020"], | |
["Zum Glück bin ich zu dumm!","Josi","2020"], | |
["Christian, du hast mal wieder gar keine Ahnung.","Chilaili","2020"], | |
["Aber jetzt mal ehrlich, Kartoffeln sind voll die geilen Früchte","Sam","2020"], | |
["Amin, warum willst du mich nicht heiraten?","Chris","2020"], | |
["...wer kann sich sowas bitte merken? Bist du zufällig Autist?","Itsy","2020"], | |
["Er wurde attentätert!", "Misan", 2020], | |
["Die Untoten müssen doch auch von etwas leben", "Misan", 2020], | |
["Aber ich habe meine Maus im Bett, haha!", "Chris", 2020], | |
["Von wann bis wann gingen die 70er Jahre?", "Josi", 2020], | |
["Das ist nicht mein Esel, das ist Chilaili!", "Misan", 2020], | |
["Habt ihr Bock auf serious Sam?", "Sam", 2020], | |
["Was ist ein Ei?", "Itsy", 2020], | |
["Was heißt nochmal Spiderweb auf Englisch?", "René", 2020], | |
["Exekutionen müssen interaktiver werden!", "Michi", 2020] | |
], | |
"2021":[ | |
["Dieses Heilkraut ist sehr gut als Heilkraut geeignet","Dennis","2021"], | |
["Es gibt ja jede Richtung.","Janny","2021"], | |
["Wie hat mein PC eben meine Seele eingefangen?","Chris","2021"], | |
["Sniper laden so lange nach. Die sind echt nicht gut für long range.","Denis","2021"] | |
] | |
} | |
var years = []; | |
for (var key in object) years.push(key); | |
years.splice(years.length-3,0,years[years.length-3]); | |
years.splice(years.length-2,0,years[years.length-2]); years.splice(years.length-2,0,years[years.length-2]); years.splice(years.length-2,0,years[years.length-2]); | |
years.splice(years.length-1,0,years[years.length-1]); years.splice(years.length-1,0,years[years.length-1]); years.splice(years.length-1,0,years[years.length-1]); | |
years.splice(years.length-1,0,years[years.length-1]); years.splice(years.length-1,0,years[years.length-1]); years.splice(years.length-1,0,years[years.length-1]); | |
var yearMax = years.length; | |
var yearNumber = Math.floor(Math.random()*yearMax); | |
var array = object[years[yearNumber]]; | |
var max = array.length; | |
var number = Math.floor(Math.random()*max); | |
document.getElementById("zitate").innerHTML = array[number][0] + "</br><i><small>" + array[number][1] + " ("+array[number][2]+")</small></i>"; | |
</script> | |
<!-- Hier die Anpassung --> | |
<table border="0" cellspacing="0" cellpadding="5" class="tborder"> | |
<tbody> | |
<tr> | |
<td class="thead"> | |
<strong>Server Status</strong> | |
</td> | |
</tr> | |
<tr> | |
<td class="trow2 " id="server-list"> | |
</td> | |
</tr> | |
</tbody> | |
</table> | |
<br /> | |
<table border="0" cellspacing="0" cellpadding="5" class="tborder"> | |
<tbody> | |
<tr> | |
<td class="thead"> | |
<strong>Minecraft Online</strong> | |
</td> | |
</tr> | |
<tr> | |
<td class="trow2 " id="minecraft-server-player-amount"> | |
</td> | |
</tr> | |
<tr> | |
<td class="trow2 " id="minecraft-server-player-list"> | |
</td> | |
</tr> | |
</tbody> | |
</table> | |
<br /> | |
<table border="0" cellspacing="0" cellpadding="5" class="tborder"> | |
<tbody> | |
<tr> | |
<td class="thead"> | |
<strong>Top Voter!</strong> | |
</td> | |
</tr> | |
<tr> | |
<td class="trow2 "> | |
<div class="buttonWrapper"> | |
<span onclick="clickedUpperOne(this)" class="active button left upper small" id="upperOne">Insg.</span> | |
<span onclick="clickedUpperTwo(this)" class="inactive button mid upper small" id="upperTwo">Akt.</span> | |
<span onclick="clickedUpperThr(this)" class="inactive button mid upper small" id="upperThr">Beste</span> | |
<span onclick="clickedUpperFou(this)" class="inactive button right upper small" id="upperFou">Rekord</span> | |
<br> | |
<span onclick="clickedLowerOne(this)" class="active button left lower small" id="lowerOne">Monat</span> | |
<span onclick="clickedLowerTwo(this)" class="inactive button mid lower small" id="lowerTwo">Woche</span> | |
<span onclick="clickedLowerThr(this)" class="inactive button mid lower small" id="lowerThr">Tag</span> | |
<span onclick="clickedLowerFou(this)" class="inactive button right lower small" id="lowerFou">Insg.</span> | |
<div> | |
</td> | |
</tr> | |
<tr> | |
<td class="trow2 " id="top-voters"> | |
</td> | |
</tr> | |
</tbody> | |
</table> | |
<br /> | |
<!-- Anfang des Scriptteiles --> | |
<script> | |
const MCAPI = 'https://api.mcsrvstat.us/2/'; | |
const TSAPI = 'https://api.cleanvoice.ru/ts3/?address='; | |
const IDAPI = 'https://api.minetools.eu/uuid/'; | |
const PLAYERNAMES = 'https://board.athalon.de/data/nicks.json'; | |
const PLAYERPROFI = 'https://de.namemc.com/profile/'; | |
const AVATARAPI = `https://minotar.net/helm/`; | |
const REFRESHRATE = 10 * 1000; // 10 seconds | |
const MCSERVER = '5.9.51.136:25565'; | |
const TSSERVER = '5.9.51.136:9987'; | |
const SERVERONLINE = '/images/revolution/serverstatus/green.png'; | |
const SERVEROFFLINE = '/images/revolution/serverstatus/red.png'; | |
const map = (fn, list) => list.map(fn); | |
const concat = array => { | |
var retString = ""; | |
for (var elementInt in array) { | |
retString += array[elementInt]; | |
} | |
return retString; | |
}; | |
const getMinecraftServerInfo = async server => { | |
const response = await fetch(MCAPI + server) | |
const info = await response.json() | |
return info | |
}; | |
const getTeamspeakServerInfo = async server => { | |
const response = await fetch(TSAPI + server) | |
const info = await response.json() | |
return info | |
}; | |
const getPlayerNames = async server => { | |
const response = await fetch(PLAYERNAMES) | |
const info = await response.text() | |
var array = info.split("\n"); | |
for (var key in array) { | |
var element = array[key]; | |
var first = element.substr(0, element.indexOf(":")); | |
var second = element.substr((element.indexOf(":")+2)); | |
array[key] = [ first, second ]; | |
} | |
return array; | |
}; | |
const getPlayers = async server => { | |
const info = await getMinecraftServerInfo(server) | |
return info.players.list | |
}; | |
const getMinecraftServerStatus = async server => { | |
const info = await getMinecraftServerInfo(server) | |
//return info.debug.ping | |
return true; | |
}; | |
const getTeamspeakServerStatus = async server => { | |
const info = await getTeamspeakServerInfo(server) | |
return info.can_connect | |
}; | |
const renderPlayer = player => { | |
var accountname = player[0]; | |
var charname = player[1]; | |
var retString = "" + "\r\n" + | |
"<div style=\"display: flex; padding: .25em; align-items: center;\">" + "\r\n" + | |
" <a href=\""+PLAYERPROFI+accountname+".1"+"\" style=\"display: flex; align-items: center;\"><img src=\""+ AVATARAPI + accountname + "/32.png\" width=\"32\" height=\"32\" alt=\"Katonia\" title=\"\">" + "\r\n" + | |
" <div style=\"margin-left: .5em\">" + charname + "</div></a>" + "\r\n" + | |
"</div>"; | |
return retString; | |
}; | |
const renderPlayerName = name => { | |
var nameArray = name.split("§"); | |
retString = ""; | |
for (var key in nameArray) { | |
var element = nameArray[key]; | |
if (element != "") | |
retString += translateColor(element.substring(0,1), element.substring(1)); | |
} | |
return retString; | |
}; | |
const translateColor = (colorCode, string) => { | |
var retVal = ""; | |
retVal += "<p style=\"color:"+translateColorCode(colorCode)+"; float:left;\";>"; | |
retVal += string.replace(/ /g, " "); | |
retVal += "</p>"; | |
return retVal; | |
}; | |
const translateColorCode = colorCode => { | |
if (colorCode == "0") return "Black"; | |
else if (colorCode == "1") return "Blue"; | |
else if (colorCode == "2") return "Green"; | |
else if (colorCode == "3") return "DarkCyan"; | |
else if (colorCode == "4") return "Red"; | |
else if (colorCode == "5") return "Purple"; | |
else if (colorCode == "6") return "Gold"; | |
else if (colorCode == "7") return "DarkGray"; | |
else if (colorCode == "8") return "Gray"; | |
else if (colorCode == "9") return "LightBlue"; | |
else if (colorCode == "a") return "LightGreen"; | |
else if (colorCode == "b") return "Cyan"; | |
else if (colorCode == "c") return "Salmon"; | |
else if (colorCode == "d") return "Magenta"; | |
else if (colorCode == "e") return "Yellow"; | |
else if (colorCode == "f") return "White"; | |
}; | |
const getPlayerUUID = async name => { | |
const response = await fetch(IDAPI + name) | |
const info = await response.json() | |
return info.id | |
}; | |
const getPlayerName = async uuid => { | |
var array = await getPlayerNames(); | |
var finalName = ""; | |
for (var key in array) { | |
var set = array[key]; | |
var setUuid = set[0]; | |
setUuid = setUuid.replace(/-/gi,""); | |
var setName = set[1]; | |
if (uuid == setUuid) return setName; | |
}; | |
return false; | |
}; | |
const renderPlayerList = async () => { | |
const listElementPlayers = document.querySelector('#minecraft-server-player-list') | |
const listElementAmount = document.querySelector('#minecraft-server-player-amount') | |
const players = await getPlayers(MCSERVER) | |
for (var playerNumber in players) { | |
var accountname = players[playerNumber]; | |
var uuid = await getPlayerUUID(accountname); | |
var name = await getPlayerName(uuid); | |
var charname = renderPlayerName(name); | |
players[playerNumber] = [accountname, charname]; | |
} | |
var athalonMC = await getMinecraftServerStatus(MCSERVER) | |
if (!athalonMC) return listElementPlayers.innerHTML = 'Der Server ist gerade offline :(' | |
if (players == undefined || players == null) { | |
listElementAmount.innerHTML = "<center>0 / 50</center>" | |
return "empty"//listElementPlayers.innerHTML = 'Momentan ist niemand online.' | |
} | |
listElementPlayers.innerHTML = concat(map(renderPlayer, players)) | |
listElementAmount.innerHTML = "<center>" + players.length + " / 50</center>" | |
} | |
renderPlayerList(); | |
setInterval(renderPlayerList, REFRESHRATE); | |
const renderServer = (name, online) => { | |
var link = SERVEROFFLINE; | |
var title = "Offline"; | |
if (online) { link = SERVERONLINE; title = "Online"; } | |
var retString = "" + "\r\n" + | |
"<div style=\"display: flex; padding: .25em; align-items: center;\">" + "\r\n" + | |
" <img src=\""+ link +"\" width=\"24\" height=\"24\" alt=\"\" title=\""+ title +"\">" + "\r\n" + | |
" <div style=\"margin-left: .5em\">" + name + "</div>" + "\r\n" + | |
"</div>"; | |
return retString; | |
}; | |
const renderServerList = async () => { | |
const listElementServers = document.querySelector('#server-list') | |
const servers = [] | |
var athalonMC = await getMinecraftServerStatus(MCSERVER) | |
var athalonTS = await getTeamspeakServerStatus(TSSERVER) | |
var athalonCl = true; | |
servers.push(renderServer("Minecraft", athalonMC)) | |
servers.push(renderServer("Teamspeak", athalonTS)) | |
servers.push(renderServer("LegacyClonk", athalonCl)) | |
servers.push(renderServer("Trouble in Terrorist Town", athalonCl)) | |
listElementServers.innerHTML = concat(servers) | |
}; | |
renderServerList(); | |
setInterval(renderServerList, REFRESHRATE); | |
var chosenUpper = 1; | |
var chosenLower = 1; | |
function clickedUpperOne(button) { | |
clicked(button,true,false,1); | |
} | |
function clickedUpperTwo(button) { | |
clicked(button,true,false,2); | |
} | |
function clickedUpperThr(button) { | |
clicked(button,true,false,3); | |
} | |
function clickedUpperFou(button) { | |
clicked(button,true,false,4); | |
} | |
function clickedLowerOne(button) { | |
clicked(button,false,true,1); | |
} | |
function clickedLowerTwo(button) { | |
clicked(button,false,true,2); | |
} | |
function clickedLowerThr(button) { | |
clicked(button,false,true,3); | |
} | |
function clickedLowerFou(button) { | |
clicked(button,false,true,4); | |
} | |
function clicked(button,upper,lower,value) { | |
choseButton(button,upper,lower); | |
if (upper) chosenUpper = value; | |
if (lower) chosenLower = value; | |
if (chosenUpper==1) { | |
specialCaseTotalAdd(); | |
} else { | |
specialCaseTotalRemove(); | |
} | |
if (chosenUpper==3) { | |
specialCaseBestChainAdd(); | |
} else { | |
specialCaseBestChainRemove(); | |
document.getElementById("lowerOne").classList.remove("exception"); | |
} | |
renderTopVoters(determineCriterium()); | |
} | |
function determineCriterium() { | |
if (chosenUpper==2) { | |
if (chosenLower==1) return "MonthVoteStreak"; | |
else if (chosenLower==2) return "WeekVoteStreak"; | |
else if (chosenLower==3) return "DayVoteStreak"; | |
else return "MonthVoteStreak" | |
} else if (chosenUpper==3) { | |
if (chosenLower==2) return "BestWeekVoteStreak"; | |
else if (chosenLower==3) return "BestDayVoteStreak"; | |
else return "BestWeekVoteStreak" | |
} else if (chosenUpper==4) { | |
if (chosenLower==1) return "HighestMonthlyTotal"; | |
else if (chosenLower==2) return "HighestWeeklyTotal"; | |
else if (chosenLower==3) return "HighestDailyTotal"; | |
else return "HighestMonthlyTotal" | |
} else { | |
if (chosenLower==1) return "MonthTotal"; | |
else if (chosenLower==2) return "WeeklyTotal"; | |
else if (chosenLower==3) return "DailyTotal"; | |
else if (chosenLower==4) return "AllTimeTotal"; | |
else return "MonthTotal"; | |
} | |
} | |
function isStreak(criterium) { | |
if (criterium == "BestWeekVoteStreak" | |
|| criterium == "BestDayVoteStreak" | |
|| criterium == "BestWeekVoteStreak" | |
|| criterium == "MonthVoteStreak" | |
|| criterium == "WeekVoteStreak" | |
|| criterium == "DayVoteStreak") { | |
return true; | |
} else { | |
return false; | |
} | |
} | |
function choseButton(button,upper,lower){ | |
var els = document.getElementsByClassName("button"+(upper?" upper":"")+(lower?" lower":"")); | |
Array.prototype.forEach.call(els, function(el) { | |
el.classList.add("inactive"); | |
el.classList.remove("active"); | |
}); | |
button.classList.add("active"); | |
button.classList.remove("inactive"); | |
} | |
function specialCaseBestChainAdd() { | |
if (chosenLower==1) { | |
chosenLower = 2; | |
var lowerTwo = document.getElementById("lowerTwo"); | |
choseButton(lowerTwo,false,true); | |
} | |
document.getElementById("lowerOne").classList.add("invisible"); | |
var lowerTwo = document.getElementById("lowerTwo"); | |
lowerTwo.classList.remove("small"); | |
lowerTwo.classList.remove("big"); | |
lowerTwo.classList.add("gigantic"); | |
lowerTwo.classList.add("double"); | |
lowerTwo.classList.replace("mid","left"); | |
var lowerThr = document.getElementById("lowerThr"); | |
lowerThr.classList.remove("small"); | |
lowerThr.classList.remove("big"); | |
lowerThr.classList.add("gigantic"); | |
} | |
function specialCaseBestChainRemove() { | |
document.getElementById("lowerOne").classList.remove("invisible"); | |
var lowerTwo = document.getElementById("lowerTwo"); | |
lowerTwo.classList.remove("gigantic"); | |
lowerTwo.classList.remove("double"); | |
if (chosenUpper==1) | |
lowerTwo.classList.add("small"); | |
else lowerTwo.classList.add("big"); | |
lowerTwo.classList.replace("left","mid"); | |
var lowerThr = document.getElementById("lowerThr"); | |
lowerThr.classList.remove("gigantic"); | |
if (chosenUpper==1) | |
lowerThr.classList.add("small"); | |
else lowerThr.classList.add("big"); | |
} | |
function specialCaseTotalAdd() { | |
document.getElementById("lowerOne").classList.replace("big","small"); | |
document.getElementById("lowerTwo").classList.replace("big","small"); | |
var lowerThr = document.getElementById("lowerThr"); | |
lowerThr.classList.replace("big","small"); | |
lowerThr.classList.replace("right","mid"); | |
document.getElementById("lowerFou").classList.remove("invisible"); | |
} | |
function specialCaseTotalRemove() { | |
var lowerOne = document.getElementById("lowerOne"); | |
lowerOne.classList.replace("small","big"); | |
document.getElementById("lowerTwo").classList.replace("small","big"); | |
var lowerThr = document.getElementById("lowerThr"); | |
lowerThr.classList.replace("small","big"); | |
lowerThr.classList.replace("mid","right"); | |
document.getElementById("lowerFou").classList.add("invisible"); | |
if (chosenLower==4) { | |
choseButton(lowerOne,false,true); | |
chosenLower=1; | |
} | |
} | |
const filterPlayers = (players, criterium) => { | |
var maxPlace = 5; | |
var retVal = []; | |
for (var numberKey in players) { | |
player = players[numberKey]; | |
monthTotal = parseInt(player[criterium]); | |
if (monthTotal > 0 && !(player.TopVoterIgnore.toLowerCase() == "true")) { | |
found = false; | |
for(var retKey in retVal) { | |
if (monthTotal > retVal[retKey][criterium]) { | |
if (!found) { | |
retVal.splice(retKey,0,player); | |
found = true; | |
while (retVal.length>maxPlace) retVal.splice(maxPlace,1); | |
} | |
} | |
} | |
if (!found && retVal.length<maxPlace) retVal.push(player); | |
} | |
} | |
return retVal; | |
} | |
const renderPlayerLine = (player, place, criterium) => { | |
var retVal = "<tr>"; | |
retVal += "<td class=\"trow2 \">"+place+"</td>"; | |
retVal += "<td class=\"trow2 \">"; | |
var accountname = player.PlayerName; | |
retVal += renderPlayer([accountname, accountname]); | |
retVal += "</td>"; | |
retVal += "<td class=\"trow2 \">"+player[criterium]+"</td>"; | |
retVal += "</tr>"; | |
return retVal; | |
} | |
const wrapVoters = (playerStrings,isStreak) => { | |
var retVal = "<table border=\"0\" cellspacing=\"0\" cellpadding=\"5\" class=\"tborder\"><tbody>"; | |
retVal += "<tr><td class=\"thead \" style=\"font-size: smaller;\">"+"<strong>Platz</strong>"+ | |
"</td><td class=\"thead \" style=\"font-size: smaller;\">"+"<strong>Name</strong>"+ | |
"</td><td class=\"thead \" style=\"font-size: smaller;\">"+"<strong>"+(isStreak?"Strecke":"Votes")+"</strong>"+"</td></tr>"; | |
retVal += playerStrings; | |
retVal += "</tbody></table>"; | |
return retVal; | |
} | |
const renderTopVoters = async (criterium) => { | |
const response = await fetch('https://vote.athalon.de'); | |
var jsonResp = await response.json(); | |
var players = jsonResp.Table; | |
players = filterPlayers(players,criterium); | |
var lines = []; | |
for(var playerID in players) { | |
var player = players[playerID]; | |
var playerLine = renderPlayerLine(player, parseInt(playerID)+1,criterium); | |
lines.push(playerLine); | |
} | |
var playerStrings = concat(lines); | |
document.querySelector('#top-voters').innerHTML = wrapVoters(playerStrings, isStreak(criterium)); | |
} | |
renderTopVoters("MonthTotal"); | |
</script> | |
<!-- Ende des Scriptteiles --> | |
<!-- Ende der Anpassung --> | |
<script type="text/javascript"> | |
jQuery(function(){ | |
jQuery(".latestthreads").load("{$mybb->settings['bburl']}/portal.php .latestthreads_portal"); | |
}); | |
</script> | |
<table border="0" cellspacing="{$theme['borderwidth']}" cellpadding="{$theme['tablespace']}" class="tborder"> | |
<tr> | |
<td class="thead"> | |
<div class="float_left"><strong>{$lang->latest_threads}</strong></div> | |
</td> | |
</tr> | |
<tr> | |
<td class="trow2"> | |
<div class="latestthreads float_left"></div> | |
</td> | |
</tr> | |
</table> | |
<br /> | |
</td> | |
</tr> | |
</table> | |
<br class="clear" /> | |
{$footer} | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment