This repository has been archived on 2023-01-26. You can view files and clone it, but cannot push or open issues or pull requests.
scripts-old/dist/quickbar/inADayTribeRankingGenerator.js

1 line
3.5 KiB
JavaScript

!function(){var e=e=>parseInt(new URLSearchParams(e).get("id"));class t{isValidRow(e){return!!e&&((!this.filters.playerID||e.playerID===this.filters.playerID)&&!(this.filters.tribes&&Array.isArray(this.filters.tribes)&&!this.filters.tribes.some((t=>t===e.tribe))))}parseRow(t){if(!t||!t instanceof HTMLTableRowElement)return;let r={};return r.rank=parseInt(t.children[0].innerText.trim()),r.name=t.children[1].innerText.trim(),r.playerID=e(t.children[1].querySelector("a").getAttribute("href")),r.tribe=t.children[2].innerText.trim(),r.tribeID=0,r.tribe&&(r.tribeID=e(t.children[2].querySelector("a").getAttribute("href"))),r.score=parseInt(t.children[3].innerText.trim().replace(/\./g,"")),r.date=t.children[4].innerText.trim(),r}parse(){const e=[];for(let t=1;t<this.trs.length;t++){const r=this.trs[t],n=this.parseRow(r);this.isValidRow(n)&&e.push(n)}return e}constructor(e="",t={}){this.dom=(new DOMParser).parseFromString(e,"text/html"),this.trs=this.dom.querySelectorAll("#in_a_day_ranking_table tbody tr"),this.filters=t}}const r={pl_PL:{addTribe:"Dodaj plemię",generate:"Wygeneruj",delete:"Usuń",player:"Gracz",tribe:"Plemię",rank:"Ranking",score:"Wynik",date:"Data",loaded:"Załadowano"},en_DK:{addTribe:"Add tribe",generate:"Generate",delete:"Delete",player:"Player",tribe:"Tribe",rank:"Rank",score:"Score",date:"Date",loaded:"Loaded"},de_DE:{addTribe:"Stamm hinzufügen",generate:"Generieren",delete:"Löschen",player:"Spieler",tribe:"Stamm",rank:"Rang",score:"Punkte",date:"Datum",loaded:"Geladen"}};var n=e=>new Promise((t=>setTimeout(t,e)));const a=r[window.game_data.locale]||r.en_DK,i=()=>{const e=document.querySelector("#iad_tribes"),t=document.createElement("div");t.innerHTML=`\n <label>${a.tribe}: </label>\n <input type="text" required />\n <button type="button">${a.delete}</button>\n `,t.querySelector("button").addEventListener("click",(()=>{e.children.length>1&&t.remove()})),e.appendChild(t)},l=async e=>{e.preventDefault();const r=parseInt(document.querySelector("#iad_limit").value),i=[],l=new URLSearchParams(window.location.search).get("type")||"kill_att";document.querySelectorAll("#iad_tribes input").forEach((e=>{e.value&&i.push(e.value.trim())}));let d=[],o=0;for(;d.length<r;){Dialog.show("iad_loading",`${a.loaded}: <strong>${d.length}/${r}</strong>`);try{const e=await fetch(TribalWars.buildURL("",{screen:"ranking",mode:"in_a_day",type:l,offset:25*o})),r=await e.text(),a=new t(r,{tribes:i});if(26!==a.trs.length)break;d=[...d,...a.parse()],o++,await n(200)}catch(e){break}}d.length>r&&(d=d.slice(0,r)),Dialog.show("iad_result",`\n <textarea cols=30 rows=8 readonly>[table]\n[**][||]${a.player}[||]${a.tribe}[||]${a.rank}[||]${a.score}[||]${a.date}[/**]\n${d.map(((e,t)=>`[*]${t+1}.[|][player]${e.name}[/player][|][ally]${e.tribe}[/ally][|]${e.rank}[|]${e.score.toLocaleString()}[|]${e.date}`)).join("\n")}\n[/table]</textarea>\n `)};!function(){try{(()=>{const e=document.createElement("div"),t=`\n <form>\n <div id="iad_tribes">\n </div>\n <div>\n <label>Limit: </label>\n <input id="iad_limit" type="number" min="1" value="10" required />\n </div>\n <button type="submit">${a.generate}</button>\n <button id="iad_add" type="button">${a.addTribe}</button>\n </form>\n `;e.innerHTML=t,document.querySelector("#content_value > table > tbody > tr > td:nth-child(2)").prepend(e),e.querySelector("form").addEventListener("submit",l),e.querySelector("#iad_add").addEventListener("click",i),i()})()}catch(e){console.log("'In A Day' Tribe Ranking Generator",e)}}()}();