mirror of
https://github.com/FAUSheppy/open-web-leaderboard.git
synced 2025-12-07 15:41:35 +01:00
204 lines
4.5 KiB
JavaScript
204 lines
4.5 KiB
JavaScript
positions = [ "Top", "Jungle", "Mid", "Support" , "Bottom" ]
|
|
acceptedParser = [ "top", "jungle", "mid", "sup" , "bot", "adc", "support", "bottom", "*" ]
|
|
|
|
function checkPlayer() {
|
|
if(this.value == ""){
|
|
return
|
|
}
|
|
url = "/player?id=" + this.value
|
|
fetch(url).then(r => {
|
|
if(r.status == 200){
|
|
this.style.background = "#74bb74"
|
|
}else{
|
|
//this.style.background = "#d25252"
|
|
}
|
|
})
|
|
}
|
|
|
|
function fastPosChanged() {
|
|
|
|
accepted = [ "top", "jungle", "mid", "sup" , "bot" ]
|
|
uniqArr = []
|
|
prioArray = [5, 5, 5, 5, 5]
|
|
|
|
/* commence cleanup */
|
|
clean = this.value.replaceAll(" ", "").toLocaleLowerCase()
|
|
clean = clean.replace("support", "sup")
|
|
clean = clean.replace("adc", "bot")
|
|
clean = clean.replace("bottom", "bot")
|
|
|
|
retVal = true
|
|
if(clean.includes("<")){
|
|
console.log("Not accepted (includes <)")
|
|
retVal = false
|
|
}
|
|
|
|
list = clean.split(">")
|
|
cur = 1
|
|
list.forEach(el => {
|
|
if(el.includes("=")){
|
|
listEq = el.split("=")
|
|
listEq.forEach(sub => {
|
|
if(accepted.includes(sub) && !uniqArr.includes(sub)){
|
|
prioArray[accepted.indexOf(sub)] = cur
|
|
uniqArr += [sub]
|
|
}else{
|
|
console.log("Not accepted (=): " + sub)
|
|
retVal = false
|
|
}
|
|
})
|
|
cur++
|
|
}else{
|
|
if(accepted.includes(el) && !uniqArr.includes(el)){
|
|
prioArray[accepted.indexOf(el)] = cur
|
|
uniqArr += [el]
|
|
cur++
|
|
}else{
|
|
console.log("Not accepted (>): " + el)
|
|
retVal = false
|
|
}
|
|
}
|
|
})
|
|
for(i = 0; i<5; i++){
|
|
arr = this.id.split("-")
|
|
pNr = arr[arr.length-1]
|
|
side = this.id.includes("left") ? "left" : "right"
|
|
string = "prio-" + side + "-" + accepted[i] + "-" + pNr
|
|
|
|
string = string.replace("top","Top")
|
|
string = string.replace("jungle","Jungle")
|
|
string = string.replace("mid","Mid")
|
|
string = string.replace("sup","Support")
|
|
string = string.replace("bot","Bottom")
|
|
|
|
selector = document.getElementById(string)
|
|
selector.value = prioArray[i]
|
|
selector.style.background = "lightblue"
|
|
}
|
|
|
|
/* allow some basic shit */
|
|
if(clean == "*" || clean == ""){
|
|
retVal = true
|
|
}
|
|
|
|
if(retVal){
|
|
this.style.background = "#74bb74"
|
|
}else{
|
|
this.style.background = "#d25252"
|
|
}
|
|
}
|
|
|
|
function balance(){
|
|
|
|
sides = ["left", "right"]
|
|
|
|
blue = [ "", "", "", "", ""]
|
|
red = [ "", "", "", "", ""]
|
|
|
|
dictToBeSorted = {
|
|
0 : [],
|
|
1 : [],
|
|
2 : [],
|
|
3 : [],
|
|
4 : []
|
|
}
|
|
filler = []
|
|
impossible = []
|
|
|
|
dictAll = {}
|
|
for(sid = 0; sid < 2; sid++){
|
|
for(id = 0; id < 5; id++){
|
|
|
|
var pname = "undef"
|
|
var prioList = [5, 5, 5, 5, 5]
|
|
|
|
stringPid = `playername-${sides[sid]}-${id}`
|
|
pnameObj = document.getElementById(stringPid)
|
|
pname = pnameObj.value
|
|
for(acc = 0; acc < 5; acc++){
|
|
stringSelectorId = `prio-${sides[sid]}-${positions[acc]}-${id}`
|
|
selObj = document.getElementById(stringSelectorId)
|
|
prioList[acc] = selObj.value
|
|
}
|
|
|
|
dictAll[pname] = prioList
|
|
|
|
}
|
|
}
|
|
|
|
jsonData = JSON.stringify(dictAll, null, 4);
|
|
|
|
/* transmitt */
|
|
fetch(window.location.href, {
|
|
method: 'post',
|
|
headers: {
|
|
'Accept': 'application/json, text/plain, */*',
|
|
'Content-Type': 'application/json' },
|
|
body: jsonData
|
|
}).then(r => r.json()).then(j => {
|
|
cont = document.getElementById("response-container")
|
|
cont.innerHTML = j["content"]
|
|
})
|
|
|
|
}
|
|
|
|
function parseMultiline(){
|
|
|
|
var names = []
|
|
var prioStrings = []
|
|
|
|
field = document.getElementById("multi-line-copy")
|
|
lines = field.value.split("\n")
|
|
lines.forEach(l => {
|
|
|
|
lowestIndex = 100
|
|
|
|
acceptedParser.forEach( p => {
|
|
i = l.indexOf(" " + p)
|
|
if(i > 3 && i < lowestIndex){
|
|
lowestIndex = i
|
|
}
|
|
})
|
|
|
|
if(lowestIndex != 100){
|
|
name = l.substring(0, lowestIndex)
|
|
prioStr = l.substring(lowestIndex)
|
|
names.push(name)
|
|
prioStrings.push(prioStr)
|
|
}
|
|
})
|
|
|
|
sides = [ "left", "right"]
|
|
count = 0
|
|
sides.forEach(s => {
|
|
for(i = 0; i<5; i++){
|
|
|
|
pObjField = document.getElementById("playername-" + s + "-" + i)
|
|
prObjField = document.getElementById("check-" + s + "-fastpos-" + i)
|
|
|
|
if(count >= names.length){
|
|
pObjField.value = ""
|
|
prObjField.value = ""
|
|
}else{
|
|
pObjField.value = names[count]
|
|
prObjField.value = prioStrings[count]
|
|
}
|
|
|
|
count++;
|
|
}
|
|
})
|
|
|
|
const focusEvent = new Event("focus")
|
|
fastPosFields.forEach(el => el.dispatchEvent(focusEvent))
|
|
balance()
|
|
}
|
|
|
|
fastPosFields = document.getElementsByClassName("fastpos")
|
|
playerNameFields = document.getElementsByClassName("pname")
|
|
|
|
playerNameFields.forEach(el => el.addEventListener('input', checkPlayer));
|
|
playerNameFields.forEach(el => el.addEventListener('focus', checkPlayer));
|
|
|
|
fastPosFields.forEach(el => el.addEventListener('input', fastPosChanged));
|
|
fastPosFields.forEach(el => el.addEventListener('focus', fastPosChanged));
|