(0,l.getItem)(b),w=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(0,l.setItem)(b,e)},M=e=>Math.abs(e.getTime()-(new Date).getTime())>864e5,T=async()=>{let e=h();return e&&e.server&&!M(new Date(e.loadedAt))&&e.server.config&&e.server.config.speed&&e.server.config.snob&&e.server.config.snob.maxDist&&e.server.config.unitSpeed&&e.server.unitConfig||((e=await(0,t.default)({query:y,variables:{key:m}})).loadedAt=new Date,w(e)),e&&e.server&&e.server.config?{config:e.server.config,unitConfig:e.server.unitConfig}:{}},q=async function(e){let{cacheOnly:n=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(n||TWMap.popup.extendedMapPopupCache[e])return TWMap.popup.extendedMapPopupCache[e];try{const n=await(0,t.default)({query:f,variables:{server:m,sort:["ennobledAt DESC"],filter:{villageID:[e]},limit:1}});return TWMap.popup.extendedMapPopupCache[e]=n,n}catch(r){console.log("loadVillageData",r)}},O=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const n=[];for(let t in e)0!==e[t].speed&&n.push(u(u({},e[t]),{},{name:t,img:(0,i.default)(t)}));return n},S=e=>e%2==0?"#f8f4e8":"#ded3b9;",C=(e,n)=>'\n \n \n | \n '),x=(n,t)=>'\n \n ').concat((0,r.default)((0,e.default)(Timing.getCurrentServerTime(),n)),"\n | \n "),D=(e,n,t)=>{let{config:a,unitConfig:i}=t;const l=TWMap.CoordByXY(TWMap.villageKey[e]),c=(0,o.calcDistanceBetweenTwoPoints)(l[0],l[1],window.game_data.village.x,window.game_data.village.y),s=n&&n.ennoblements&&n.ennoblements.items&&n.ennoblements.items.length>0?n.ennoblements.items[0]:void 0,u=document.querySelector("#map_popup #info_content tbody");let g=u.querySelector("#units");g||((g=document.createElement("tr")).id="units",u.appendChild(g));const m=O(i);g.innerHTML='\n \n \n \n \n '.concat(m.map(C).join(""),'\n \n \n ').concat(m.map((e,n)=>x((0,p.calcAttackDuration)(c,a.unitSpeed*a.speed,e.speed),n)).join(""),"\n \n \n \n | \n ");let y=u.querySelector("#lastEnnobledAt");y||((y=document.createElement("tr")).id="lastEnnobledAt",u.appendChild(y)),y.innerHTML="\n \n ".concat(v.ennobledAt,":\n | \n \n ").concat(s?(0,r.default)(s.ennobledAt):v.never,"\n | \n ");let f=u.querySelector("#loyalty");f||((f=document.createElement("tr")).id="loyalty",u.appendChild(f)),f.innerHTML="\n \n ".concat(v.possibleLoyalty,":\n | \n \n ").concat(s?(0,d.default)(new Date(s.ennobledAt),a.speed):100,"\n | \n ");let b=u.querySelector("#canSendNoble");b||((b=document.createElement("tr")).id="canSendNoble",u.appendChild(b)),b.innerHTML="\n \n ".concat(v.canSendNoble,":\n | \n \n ").concat(c\n ")},P=e=>async n=>{TWMap.popup._loadVillage(n);const t=await q(parseInt(n));D(parseInt(n),t,e)},_=e=>async(n,t,r)=>{TWMap.popup._displayForVillage(n,t,r);const a=await q(parseInt(n.id),{cacheOnly:window.game_data.features.Premium.active});D(parseInt(n.id),a,e)};!async function(){try{const n=await T();TWMap.popup.extendedMapPopupCache={},TWMap.popup._loadVillage=TWMap.popup.loadVillage,TWMap.popup.loadVillage=P(n),TWMap.popup._displayForVillage=TWMap.popup.displayForVillage,TWMap.popup.displayForVillage=_(n)}catch(e){console.log("extended map popup",e)}}();
-},{"date-fns/addMinutes":"pfh4","./i18n/extendedMapPopup":"ddIN","./libs/requestCreator":"Ph2E","./utils/formatDate":"V6Mf","./utils/getCurrentServer":"DMkL","./utils/math":"XOOL","./utils/buildUnitImgURL":"KX6P","./utils/localStorage":"KWxH","./utils/tribalwars":"fHHP","./utils/countLoyalty":"ATOB"}]},{},["HdqX"], null)
\ No newline at end of file
+"use strict";var e=c(require("date-fns/addMinutes")),n=c(require("./i18n/extendedMapPopup")),t=c(require("./libs/requestCreator")),r=c(require("./utils/formatDate")),a=c(require("./utils/getCurrentServer")),o=require("./utils/math"),i=c(require("./utils/buildUnitImgURL")),l=require("./utils/localStorage"),p=require("./utils/tribalwars"),d=c(require("./utils/calcLoyalty"));function c(e){return e&&e.__esModule?e:{default:e}}function s(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter(function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable})),t.push.apply(t,r)}return t}function u(e){for(var n=1;n(0,l.getItem)(b),w=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(0,l.setItem)(b,e)},M=e=>Math.abs(e.getTime()-(new Date).getTime())>864e5,T=async()=>{let e=h();return e&&e.server&&!M(new Date(e.loadedAt))&&e.server.config&&e.server.config.speed&&e.server.config.snob&&e.server.config.snob.maxDist&&e.server.config.unitSpeed&&e.server.unitConfig||((e=await(0,t.default)({query:y,variables:{key:m}})).loadedAt=new Date,w(e)),e&&e.server&&e.server.config?{config:e.server.config,unitConfig:e.server.unitConfig}:{}},q=async function(e){let{cacheOnly:n=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(n||TWMap.popup.extendedMapPopupCache[e])return TWMap.popup.extendedMapPopupCache[e];try{const n=await(0,t.default)({query:f,variables:{server:m,sort:["ennobledAt DESC"],filter:{villageID:[e]},limit:1}});return TWMap.popup.extendedMapPopupCache[e]=n,n}catch(r){console.log("loadVillageData",r)}},O=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const n=[];for(let t in e)0!==e[t].speed&&n.push(u(u({},e[t]),{},{name:t,img:(0,i.default)(t)}));return n},S=e=>e%2==0?"#f8f4e8":"#ded3b9;",C=(e,n)=>'\n \n \n | \n '),x=(n,t)=>'\n \n ').concat((0,r.default)((0,e.default)(Timing.getCurrentServerTime(),n)),"\n | \n "),D=(e,n,t)=>{let{config:a,unitConfig:i}=t;const l=TWMap.CoordByXY(TWMap.villageKey[e]),c=(0,o.calcDistanceBetweenTwoPoints)(l[0],l[1],window.game_data.village.x,window.game_data.village.y),s=n&&n.ennoblements&&n.ennoblements.items&&n.ennoblements.items.length>0?n.ennoblements.items[0]:void 0,u=document.querySelector("#map_popup #info_content tbody");let g=u.querySelector("#units");g||((g=document.createElement("tr")).id="units",u.appendChild(g));const m=O(i);g.innerHTML='\n \n \n \n \n '.concat(m.map(C).join(""),'\n \n \n ').concat(m.map((e,n)=>x((0,p.calcAttackDuration)(c,e.speed),n)).join(""),"\n \n \n \n | \n ");let y=u.querySelector("#lastEnnobledAt");y||((y=document.createElement("tr")).id="lastEnnobledAt",u.appendChild(y)),y.innerHTML="\n \n ".concat(v.ennobledAt,":\n | \n \n ").concat(s?(0,r.default)(s.ennobledAt):v.never,"\n | \n ");let f=u.querySelector("#loyalty");f||((f=document.createElement("tr")).id="loyalty",u.appendChild(f)),f.innerHTML="\n \n ".concat(v.possibleLoyalty,":\n | \n \n ").concat(s?(0,d.default)(new Date(s.ennobledAt),a.speed):100,"\n | \n ");let b=u.querySelector("#canSendNoble");b||((b=document.createElement("tr")).id="canSendNoble",u.appendChild(b)),b.innerHTML="\n \n ".concat(v.canSendNoble,":\n | \n \n ").concat(c\n ")},P=e=>async n=>{TWMap.popup._loadVillage(n);const t=await q(parseInt(n));D(parseInt(n),t,e)},_=e=>async(n,t,r)=>{TWMap.popup._displayForVillage(n,t,r);const a=await q(parseInt(n.id),{cacheOnly:window.game_data.features.Premium.active});D(parseInt(n.id),a,e)};!async function(){try{const n=await T();TWMap.popup.extendedMapPopupCache={},TWMap.popup._loadVillage=TWMap.popup.loadVillage,TWMap.popup.loadVillage=P(n),TWMap.popup._displayForVillage=TWMap.popup.displayForVillage,TWMap.popup.displayForVillage=_(n)}catch(e){console.log("extended map popup",e)}}();
+},{"date-fns/addMinutes":"pfh4","./i18n/extendedMapPopup":"ddIN","./libs/requestCreator":"Ph2E","./utils/formatDate":"V6Mf","./utils/getCurrentServer":"DMkL","./utils/math":"XOOL","./utils/buildUnitImgURL":"KX6P","./utils/localStorage":"KWxH","./utils/tribalwars":"fHHP","./utils/calcLoyalty":"kcC2"}]},{},["HdqX"], null)
\ No newline at end of file
diff --git a/dist/quickbar/extendedPlayerProfile.js b/dist/quickbar/extendedPlayerProfile.js
index f93a819..4a9f435 100644
--- a/dist/quickbar/extendedPlayerProfile.js
+++ b/dist/quickbar/extendedPlayerProfile.js
@@ -21,9 +21,9 @@ parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcel
},{}],"V6Mf":[function(require,module,exports) {
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=(e,t)=>new Date(e).toLocaleDateString(window.game_data.locale.replace("_","-"),t||{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"});exports.default=e;
},{}],"fHHP":[function(require,module,exports) {
-"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.buildImgURL=exports.calcAttackDuration=exports.formatVillageName=exports.formatVillageURL=exports.formatPlayerURL=exports.formatTribeURL=void 0;const o=o=>window.location.origin+TribalWars.buildURL("",{screen:"info_ally",id:o});exports.formatTribeURL=o;const t=o=>window.location.origin+TribalWars.buildURL("",{screen:"info_player",id:o});exports.formatPlayerURL=t;const r=o=>window.location.origin+TribalWars.buildURL("",{screen:"info_village",id:o});exports.formatVillageURL=r;const e=function(){let o=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:500,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:500;const e="K"+String(r)[0]+String(t)[0];return"".concat(o," (").concat(t,"|").concat(r,") ").concat(e)};exports.formatVillageName=e;const i=(o,t,r)=>Math.round(o*r/t);exports.calcAttackDuration=i;const a=o=>image_base+o;exports.buildImgURL=a;
+"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.buildImgURL=exports.calcAttackDuration=exports.buildVillageName=exports.buildVillageURL=exports.buildPlayerURL=exports.buildTribeURL=void 0;const i=i=>window.location.origin+TribalWars.buildURL("",{screen:"info_ally",id:i});exports.buildTribeURL=i;const o=i=>window.location.origin+TribalWars.buildURL("",{screen:"info_player",id:i});exports.buildPlayerURL=o;const e=i=>window.location.origin+TribalWars.buildURL("",{screen:"info_village",id:i});exports.buildVillageURL=e;const t=function(){let i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:500,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:500;const t="K"+String(e)[0]+String(o)[0];return"".concat(i," (").concat(o,"|").concat(e,") ").concat(t)};exports.buildVillageName=t;const l=(i,o)=>Math.round(i*o);exports.calcAttackDuration=l;const r=i=>image_base+i;exports.buildImgURL=r;
},{}],"vNT1":[function(require,module,exports) {
-"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var t=l(require("../i18n/showEnnoblementsPopup")),e=require("../utils/pagination"),n=l(require("../utils/showPopup")),a=l(require("../utils/formatDate")),o=require("../utils/tribalwars");function l(t){return t&&t.__esModule?t:{default:t}}const r="ennoblementsPagination",i=(0,t.default)(),c=(t,e)=>t?'').concat(t.name," (").concat(e?'').concat(e.tag,""):"-",") | "):"- | ";var d=function(t,l){let{limit:d=0,currentPage:s=1,onPageChange:u=(()=>{})}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const g=(0,e.generatePaginationItems)({total:l.total,limit:d,currentPage:s}),m='\n \n ').concat(g.join(""),'\n \n \n \n \n \n ').concat(i.date,"\n | \n \n ").concat(i.village,"\n | \n \n ").concat(i.newOwner,"\n | \n \n ").concat(i.oldOwner,"\n | \n \n ").concat(l.items.map(t=>{let e=""+"".concat((0,a.default)(t.ennobledAt)," | ");return t.village?e+='').concat((0,o.formatVillageName)(t.village.name,t.village.x,t.village.y)," | "):e+="- | ",e+=c(t.newOwner,t.newOwnerTribe),(e+=c(t.oldOwner,t.oldOwnerTribe))+" "}).join(""),"\n \n \n ");(0,n.default)({e:t,title:i.title,id:"ennoblements",html:m}),document.querySelectorAll("#ennoblementsPagination a").forEach(t=>{t.addEventListener("click",u)})};exports.default=d;
+"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=l(require("../i18n/showEnnoblementsPopup")),t=require("../utils/pagination"),n=l(require("../utils/showPopup")),r=l(require("../utils/formatDate")),a=i(require("../utils/tribalwars"));function o(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return o=function(){return e},e}function i(e){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=o();if(t&&t.has(e))return t.get(e);var n={},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)){var i=r?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(n,a,i):n[a]=e[a]}return n.default=e,t&&t.set(e,n),n}function l(e){return e&&e.__esModule?e:{default:e}}const c="ennoblementsPagination",u=(0,e.default)(),d=(e,t)=>e?'').concat(e.name," (").concat(t?'').concat(t.tag,""):"-",") | "):"- | ";var s=function(e,o){let{limit:i=0,currentPage:l=1,onPageChange:s=(()=>{})}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const f=(0,t.generatePaginationItems)({total:o.total,limit:i,currentPage:l}),p='\n \n ').concat(f.join(""),'\n \n \n \n \n \n ').concat(u.date,"\n | \n \n ").concat(u.village,"\n | \n \n ").concat(u.newOwner,"\n | \n \n ").concat(u.oldOwner,"\n | \n \n ").concat(o.items.map(e=>{let t=""+"".concat((0,r.default)(e.ennobledAt)," | ");return e.village?t+='').concat(a.buildVillageName(e.village.name,e.village.x,e.village.y)," | "):t+="- | ",t+=d(e.newOwner,e.newOwnerTribe),(t+=d(e.oldOwner,e.oldOwnerTribe))+" "}).join(""),"\n \n \n ");(0,n.default)({e:e,title:u.title,id:"ennoblements",html:p}),document.querySelectorAll("#ennoblementsPagination a").forEach(e=>{e.addEventListener("click",s)})};exports.default=s;
},{"../i18n/showEnnoblementsPopup":"tKRp","../utils/pagination":"fCHX","../utils/showPopup":"chDM","../utils/formatDate":"V6Mf","../utils/tribalwars":"fHHP"}],"VYL5":[function(require,module,exports) {
"use strict";function e(e){if(null===e||!0===e||!1===e)return NaN;var r=Number(e);return isNaN(r)?r:r<0?Math.ceil(r):Math.floor(r)}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=e;
},{}],"kK6Q":[function(require,module,exports) {
@@ -37,7 +37,7 @@ parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcel
},{"../_lib/toInteger/index.js":"VYL5","../addDays/index.js":"lQIY","../_lib/requiredArgs/index.js":"kK6Q"}],"hNDe":[function(require,module,exports) {
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;const e={pl_PL:{title:"Historia",date:"Data",tribe:"Plemię",points:"Punkty",rank:"Ranking",villages:"Liczba wiosek",members:"Liczba członków",oda:"Pokonani przeciwnicy jako agresor",odd:"Pokonani przeciwnicy jako obrońca",ods:"Pokonani przeciwnicy jako wspierający",od:"Pokonani przeciwnicy"},en_DK:{title:"History",date:"Date",tribe:"Tribe",points:"Points",villages:"Villages",members:"Members",oda:"ODA",odd:"ODD",ods:"ODS",od:"OD"}};var o=()=>e[window.game_data.locale]||e.en_DK;exports.default=o;
},{}],"kEDU":[function(require,module,exports) {
-"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var t=r(require("date-fns/subDays")),n=r(require("../i18n/showHistoryPopup")),e=r(require("../utils/showPopup")),o=require("../utils/pagination"),a=r(require("../utils/formatDate")),c=require("../utils/tribalwars");function r(t){return t&&t.__esModule?t:{default:t}}const i="historyPagination",s=(0,n.default)(),l=t=>t>0?"+"+t:t;var d=function(n,r,i){let{currentPage:d=1,limit:g=0,onPageChange:u=(()=>{}),tribe:h=!1}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};const p=(0,o.generatePaginationItems)({total:r.total,limit:g,currentPage:d}),f='\n \n ').concat(p.join(""),'\n \n \n \n \n \n ').concat(s.date,"\n | \n ").concat(h?"":"".concat(s.tribe," | "),"\n \n ").concat(s.points,"\n | \n \n ").concat(s.villages,"\n | \n ").concat(h?"".concat(s.members," | "):"","\n \n ").concat(s.od,"\n | \n \n ").concat(s.oda,"\n | \n \n ").concat(s.odd,"\n | \n ").concat(h?"":"".concat(s.ods," | "),"\n \n ").concat(r.items.map(n=>{const e=(0,t.default)(new Date(n.createDate),1).toISOString().split(".")[0]+"Z",o=i.items.find(t=>t.createDate===e);let r=""+"".concat((0,a.default)(n.createDate,{year:"numeric",month:"2-digit",day:"2-digit"})," | ");return!h&&n.tribe?r+='').concat(n.tribe.tag," | "):h||(r+="- | "),r+='\n \n ').concat(n.points.toLocaleString()," (").concat(n.rank,')\n | \n \n ').concat(n.totalVillages.toLocaleString(),"\n | \n ").concat(h?'\n \n ').concat(n.totalMembers,"\n | \n "):"",'\n \n ').concat(n.scoreTotal.toLocaleString()," (").concat(n.rankTotal,')\n | \n \n ').concat(n.scoreAtt.toLocaleString()," (").concat(n.rankAtt,')\n | \n \n ').concat(n.scoreDef.toLocaleString()," (").concat(n.rankDef,")\n | \n ").concat(h?"":'\n \n ').concat(n.scoreSup.toLocaleString()," (").concat(n.rankSup,")\n | \n "),"\n ")+" "}).join(""),"\n \n \n ");(0,e.default)({e:n,title:s.title,id:"history",html:f}),document.querySelectorAll("#historyPagination a").forEach(t=>{t.addEventListener("click",u)})};exports.default=d;
+"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var t=l(require("date-fns/subDays")),n=l(require("../i18n/showHistoryPopup")),e=l(require("../utils/showPopup")),o=require("../utils/pagination"),a=l(require("../utils/formatDate")),r=i(require("../utils/tribalwars"));function c(){if("function"!=typeof WeakMap)return null;var t=new WeakMap;return c=function(){return t},t}function i(t){if(t&&t.__esModule)return t;if(null===t||"object"!=typeof t&&"function"!=typeof t)return{default:t};var n=c();if(n&&n.has(t))return n.get(t);var e={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in t)if(Object.prototype.hasOwnProperty.call(t,a)){var r=o?Object.getOwnPropertyDescriptor(t,a):null;r&&(r.get||r.set)?Object.defineProperty(e,a,r):e[a]=t[a]}return e.default=t,n&&n.set(t,e),e}function l(t){return t&&t.__esModule?t:{default:t}}const s="historyPagination",d=(0,n.default)(),u=t=>t>0?"+"+t:t;var g=function(n,c,i){let{currentPage:l=1,limit:s=0,onPageChange:g=(()=>{}),tribe:f=!1}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};const p=(0,o.generatePaginationItems)({total:c.total,limit:s,currentPage:l}),h='\n \n ').concat(p.join(""),'\n \n \n \n \n \n ').concat(d.date,"\n | \n ").concat(f?"":"".concat(d.tribe," | "),"\n \n ").concat(d.points,"\n | \n \n ").concat(d.villages,"\n | \n ").concat(f?"".concat(d.members," | "):"","\n \n ").concat(d.od,"\n | \n \n ").concat(d.oda,"\n | \n \n ").concat(d.odd,"\n | \n ").concat(f?"":"".concat(d.ods," | "),"\n \n ").concat(c.items.map(n=>{const e=(0,t.default)(new Date(n.createDate),1).toISOString().split(".")[0]+"Z",o=i.items.find(t=>t.createDate===e);let c=""+"".concat((0,a.default)(n.createDate,{year:"numeric",month:"2-digit",day:"2-digit"})," | ");return!f&&n.tribe?c+='').concat(n.tribe.tag," | "):f||(c+="- | "),c+='\n \n ').concat(n.points.toLocaleString()," (").concat(n.rank,')\n | \n \n ').concat(n.totalVillages.toLocaleString(),"\n | \n ").concat(f?'\n \n ').concat(n.totalMembers,"\n | \n "):"",'\n \n ').concat(n.scoreTotal.toLocaleString()," (").concat(n.rankTotal,')\n | \n \n ').concat(n.scoreAtt.toLocaleString()," (").concat(n.rankAtt,')\n | \n \n ').concat(n.scoreDef.toLocaleString()," (").concat(n.rankDef,")\n | \n ").concat(f?"":'\n \n ').concat(n.scoreSup.toLocaleString()," (").concat(n.rankSup,")\n | \n "),"\n ")+" "}).join(""),"\n \n \n ");(0,e.default)({e:n,title:d.title,id:"history",html:h}),document.querySelectorAll("#historyPagination a").forEach(t=>{t.addEventListener("click",g)})};exports.default=g;
},{"date-fns/subDays":"mRRL","../i18n/showHistoryPopup":"hNDe","../utils/showPopup":"chDM","../utils/pagination":"fCHX","../utils/formatDate":"V6Mf","../utils/tribalwars":"fHHP"}],"GxsT":[function(require,module,exports) {
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=e=>{const t=e.split(/[_-]/);let r="";for(let s=1;s1&&void 0!==arguments[1]?arguments[1]:{};const o=localStorage.getItem(e);let s=t;return o&&(s=JSON.parse(o)),s};exports.getItem=e;const t=(e,t)=>{localStorage.setItem(e,JSON.stringify(t))};exports.setItem=t;
},{}],"yRop":[function(require,module,exports) {
-"use strict";var e=b(require("./libs/InADayParser")),t=b(require("./libs/requestCreator")),n=b(require("./i18n/extendedPlayerProfile")),r=b(require("./common/renderTodaysStats")),a=b(require("./utils/showPopup")),i=b(require("./common/showEnnoblementsPopup")),o=b(require("./common/showHistoryPopup")),l=b(require("./utils/hyphensToCamelCase")),s=require("./utils/pagination"),c=b(require("./utils/getIDFromURL")),d=b(require("./utils/getCurrentServer")),u=b(require("./utils/getServerVersionCode")),y=b(require("./utils/formatDate")),f=require("./utils/tribalwars"),m=h(require("./utils/twhelp")),p=require("./utils/localStorage");function g(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return g=function(){return e},e}function h(e){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=g();if(t&&t.has(e))return t.get(e);var n={},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)){var i=r?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(n,a,i):n[a]=e[a]}return n.default=e,t&&t.set(e,n),n}function b(e){return e&&e.__esModule?e:{default:e}}function v(e,t){if(null==e)return{};var n,r,a=D(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}function D(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r=0||(a[n]=e[n]);return a}const S=(0,d.default)(),w=(0,u.default)(S);let P=(0,c.default)(window.location.search);const $=parseInt(game_data.player.id);!isNaN(P)&&P||(P=$);const k="kichiyaki_extended_player_profile"+P,A="\n query player($server: String!, $id: Int!, $limit: Int, $sort: [String!], $filter: DailyPlayerStatsFilter) {\n player(server: $server, id: $id) {\n id\n name\n bestRank\n bestRankAt\n mostPoints\n mostPointsAt\n mostVillages\n mostVillagesAt\n servers\n joinedAt\n nameChanges {\n oldName\n newName\n changeDate\n }\n dailyGrowth\n }\n dailyPlayerStats(server: $server, limit: $limit, sort: $sort, filter: $filter) {\n items {\n rank\n rankAtt\n rankDef\n rankSup\n rankTotal\n points\n scoreAtt\n scoreAtt\n scoreDef\n scoreSup\n scoreTotal\n villages\n }\n }\n }\n",q="\n query tribeChanges($server: String!, $limit: Int, $offset: Int, $sort: [String!], $filter: TribeChangeFilter!) {\n tribeChanges(server: $server, limit: $limit, offset: $offset, sort: $sort, filter: $filter) {\n total\n items {\n oldTribe {\n id\n tag\n }\n newTribe {\n id\n tag\n }\n createdAt\n }\n }\n }\n",T="tribeChangesPagination",C=15,L="\nquery playerHistoryAndPlayerDailyStats($server: String!,\n $playerHistoryFilter: PlayerHistoryFilter!,\n $dailyPlayerStatsFilter: DailyPlayerStatsFilter!,\n $limit: Int,\n $offset: Int,\n $sort: [String!]) {\n playerHistory(server: $server, limit: $limit, offset: $offset, sort: $sort, filter: $playerHistoryFilter) {\n total\n items {\n totalVillages\n points\n rank\n scoreAtt\n rankAtt\n scoreDef\n rankDef\n scoreSup\n rankSup\n scoreTotal\n rankTotal\n tribe {\n id\n tag\n }\n createDate\n }\n }\n dailyPlayerStats(server: $server, limit: $limit, offset: $offset, sort: $sort, filter: $dailyPlayerStatsFilter) {\n items {\n points\n scoreAtt\n scoreAtt\n scoreDef\n scoreSup\n scoreTotal\n villages\n createDate\n }\n }\n}\n",E=15,_="\n query ennoblements($server: String!, $limit: Int, $offset: Int, $sort: [String!], $filter: EnnoblementFilter!) {\n ennoblements(server: $server, limit: $limit, offset: $offset, sort: $sort, filter: $filter) {\n total\n items {\n village {\n id\n name\n x\n y\n }\n oldOwner {\n id\n name\n }\n oldOwnerTribe {\n id\n tag\n }\n newOwner {\n id\n name\n }\n newOwnerTribe {\n id\n tag\n }\n ennobledAt\n }\n }\n }\n",O=15,I=document.querySelector("#player_info > tbody"),H=P===$?I:document.querySelector("#content_value > table > tbody > tr > td:nth-child(1) > table:nth-child(2) > tbody"),j=document.querySelector(P===$?"#content_value > table:nth-child(7) > tbody > tr > td:nth-child(2)":"#content_value > table > tbody > tr > td:nth-child(2)"),M=(0,n.default)(),N=()=>(0,p.getItem)(k),R=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(0,p.setItem)(k,e)},x=async function(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{name:r}=n,a=v(n,["name"]);try{const n=await fetch(TribalWars.buildURL("",{screen:"ranking",mode:"in_a_day",type:t,name:r||""})),o=await n.text();if(!o)throw new Error;const l=new e.default(o,a).parse();if(0===l.length)throw new Error;return l[0]}catch(i){return{rank:0,playerID:0,score:0,tribeID:0,tribe:"",date:new Date}}},F=async()=>{const e=await(0,t.default)({query:A,variables:{server:S,id:P,limit:1,sort:["createDate DESC"],filter:{playerID:[P]}}});if(e.player){const t={},n={name:e.player.name,playerID:e.player.id};for(let e of["kill_att","kill_def","kill_sup","loot_res","loot_vil","scavenge","conquer"])t[(0,l.default)(e.replace("kill_",""))]=await x(e,n);e.player.inADay=t}return R(e),e},V=e=>{let{title:t,data:n,id:r}=e,a=document.querySelector("#"+r);a||((a=document.createElement("tr")).id=r,a.appendChild(document.createElement("td")),a.appendChild(document.createElement("td")),I.append(a)),a.children[0].innerHTML=t,a.children[1].innerHTML=n},W=e=>{let t=document.querySelector("#playerServers");t||((t=document.createElement("table")).id="playerServers",t.classList.add("vis"),t.width="100%",t.innerHTML="\n \n \n \n ".concat(M.playerServers,"\n | \n \n \n \n | \n \n \n "),j.prepend(t)),t.querySelector("td").innerHTML=e.servers.sort().map(t=>'').concat(t,"")).join("")},U=e=>{let t=document.querySelector("#playerOtherNames");t||((t=document.createElement("div")).id="playerOtherNames",t.width="100%",j.prepend(t)),t.innerHTML='\n \n \n \n \n '.concat(M.oldName,"\n | \n \n ").concat(M.newName,"\n | \n \n ").concat(M.date,"\n | \n \n ").concat(e.nameChanges.map(e=>"\n \n \n ".concat(e.oldName,"\n | \n \n ").concat(e.newName,"\n | \n \n ").concat((0,y.default)(e.changeDate,{year:"numeric",month:"2-digit",day:"2-digit"}),"\n | \n \n ")).join(""),"\n \n \n ")},G=e=>{let t=document.querySelector("#inADayRanks");t||((t=document.createElement("div")).id="inADayRanks",t.width="100%",j.prepend(t)),t.innerHTML='\n \n \n \n \n '.concat(M.inADayBestScores,"\n | \n \n \n \n ").concat(M.unitsDefeatedWhileAttacking,"\n | \n \n ").concat(e.inADay.att.score.toLocaleString()," (").concat(e.inADay.att.rank,".)\n | \n \n \n \n ").concat(M.unitsDefeatedWhileDefending,"\n | \n \n ").concat(e.inADay.def.score.toLocaleString()," (").concat(e.inADay.def.rank,".)\n | \n \n \n \n ").concat(M.unitsDefeatedWhileSupporting,"\n | \n \n ").concat(e.inADay.sup.score.toLocaleString()," (").concat(e.inADay.sup.rank,".)\n | \n \n \n \n ").concat(M.resourcesPlundered,"\n | \n \n ").concat(e.inADay.lootRes.score.toLocaleString()," (").concat(e.inADay.lootRes.rank,".)\n | \n \n \n \n ").concat(M.villagesPlundered,"\n | \n \n ").concat(e.inADay.lootVil.score.toLocaleString()," (").concat(e.inADay.lootVil.rank,".)\n | \n \n \n \n ").concat(M.resourcesGathered,"\n | \n \n ").concat(e.inADay.scavenge.score.toLocaleString()," (").concat(e.inADay.scavenge.rank,".)\n | \n \n \n \n ").concat(M.villagesConquered,"\n | \n \n ").concat(e.inADay.conquer.score.toLocaleString()," (").concat(e.inADay.conquer.rank,".)\n | \n \n \n \n ")},B=e=>{let{player:t,dailyPlayerStats:n}=e;[{title:M.joinedAt+":",data:(0,y.default)(t.joinedAt),id:"joined_at"},{title:M.dailyGrowth+":",data:t.dailyGrowth.toLocaleString(),id:"dg"},{title:M.bestRank+":",data:t.bestRank+" "+"(".concat((0,y.default)(t.bestRankAt),")"),id:"best_rank"},{title:M.mostPoints+":",data:t.mostPoints.toLocaleString()+" "+"(".concat((0,y.default)(t.mostPointsAt),")"),id:"most_points"},{title:M.mostVillages+":",data:t.mostVillages+" "+"(".concat((0,y.default)(t.mostVillagesAt),")"),id:"most_villages"}].forEach(e=>{V(e)}),G(t),n&&n.items.length>0&&(0,r.default)(j,n.items[0]),t.nameChanges.length>0&&U(t),t.servers.length>0&&W(t)},z=(e,t,n)=>{const r=(0,s.generatePaginationItems)({total:n.total,limit:15,currentPage:t}),i='\n \n ').concat(r.join(""),'\n \n \n \n \n \n ').concat(M.date,"\n | \n \n ").concat(M.newTribe,"\n | \n \n ").concat(M.oldTribe,"\n | \n \n ").concat(n.items.map(e=>{let t=""+"".concat((0,y.default)(e.createdAt)," | ");return e.newTribe?t+='').concat(e.newTribe.tag," | "):t+="- | ",e.oldTribe?t+='').concat(e.oldTribe.tag," | "):t+="- | ",t+" "}).join(""),"\n \n \n ");(0,a.default)({e:e,title:M.tribeChanges,id:"tribeChanges",html:i}),document.querySelectorAll("#tribeChangesPagination a").forEach(e=>{e.addEventListener("click",J)})},J=async e=>{e.preventDefault();const n=(0,s.getPage)(e.target);if(!isNaN(n)){const r=await(0,t.default)({query:q,variables:{filter:{playerID:[P]},sort:["createdAt DESC"],offset:15*(n-1),limit:15,server:S}});z(e,n,r.tribeChanges)}},K=async e=>{e.preventDefault();const n=(0,s.getPage)(e.target);if(!isNaN(n))try{const a={playerID:[P]},{playerHistory:i,dailyPlayerStats:l}=await(0,t.default)({query:L,variables:{server:S,playerHistoryFilter:a,offset:15*(n-1),limit:15,sort:["createDate DESC"],dailyPlayerStatsFilter:a}});(0,o.default)(e,i,l,{currentPage:n,limit:15,onPageChange:K,tribe:!1})}catch(r){console.log("cannot load player history",r)}},Q=async e=>{e.preventDefault();const n=(0,s.getPage)(e.target);if(!isNaN(n)){const r=await(0,t.default)({query:_,variables:{filter:{or:{oldOwnerID:[P],newOwnerID:[P]}},offset:15*(n-1),limit:15,sort:["ennobledAt DESC"],server:S}});(0,i.default)(e,r.ennoblements,{currentPage:n,limit:15,onPageChange:Q})}},X=e=>{e.preventDefault(),Dialog.show(M.exportedVillages,""))},Y=e=>{const t=document.createElement("td");t.colSpan="2",t.append(e);const n=document.createElement("tr");return n.appendChild(t),n},Z=()=>{const e=document.createElement("a");e.href=m.buildPlayerURL(w,S,P),e.innerHTML=M.action.linkToTWHelp,H.appendChild(Y(e));const t=document.createElement("a");t.href="#",(0,s.setPage)(t,"1"),t.innerHTML=M.action.showTribeChanges,t.addEventListener("click",J),H.appendChild(Y(t));const n=document.createElement("a");n.href="#",(0,s.setPage)(n,"1"),n.innerHTML=M.action.showHistory,n.addEventListener("click",K),H.appendChild(Y(n));const r=document.createElement("a");r.href="#",(0,s.setPage)(r,"1"),r.innerHTML=M.action.showEnnoblements,r.addEventListener("click",Q),H.appendChild(Y(r));const a=document.createElement("a");a.href="#",a.innerHTML=M.action.exportVillages,a.addEventListener("click",X),H.appendChild(Y(a))};!async function(){try{Z();const t=N();t&&t.player&&B(t);const n=await F();n&&B(n)}catch(e){console.log("extended player profile",e)}}();
+"use strict";var e=b(require("./libs/InADayParser")),t=b(require("./libs/requestCreator")),n=b(require("./i18n/extendedPlayerProfile")),r=b(require("./common/renderTodaysStats")),a=b(require("./utils/showPopup")),i=b(require("./common/showEnnoblementsPopup")),o=b(require("./common/showHistoryPopup")),l=b(require("./utils/hyphensToCamelCase")),s=require("./utils/pagination"),c=b(require("./utils/getIDFromURL")),d=b(require("./utils/getCurrentServer")),u=b(require("./utils/getServerVersionCode")),y=b(require("./utils/formatDate")),f=h(require("./utils/tribalwars")),m=h(require("./utils/twhelp")),p=require("./utils/localStorage");function g(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return g=function(){return e},e}function h(e){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=g();if(t&&t.has(e))return t.get(e);var n={},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)){var i=r?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(n,a,i):n[a]=e[a]}return n.default=e,t&&t.set(e,n),n}function b(e){return e&&e.__esModule?e:{default:e}}function v(e,t){if(null==e)return{};var n,r,a=D(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}function D(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r=0||(a[n]=e[n]);return a}const S=(0,d.default)(),w=(0,u.default)(S);let P=(0,c.default)(window.location.search);const $=parseInt(game_data.player.id);!isNaN(P)&&P||(P=$);const k="kichiyaki_extended_player_profile"+P,A="\n query player($server: String!, $id: Int!, $limit: Int, $sort: [String!], $filter: DailyPlayerStatsFilter) {\n player(server: $server, id: $id) {\n id\n name\n bestRank\n bestRankAt\n mostPoints\n mostPointsAt\n mostVillages\n mostVillagesAt\n servers\n joinedAt\n nameChanges {\n oldName\n newName\n changeDate\n }\n dailyGrowth\n }\n dailyPlayerStats(server: $server, limit: $limit, sort: $sort, filter: $filter) {\n items {\n rank\n rankAtt\n rankDef\n rankSup\n rankTotal\n points\n scoreAtt\n scoreAtt\n scoreDef\n scoreSup\n scoreTotal\n villages\n }\n }\n }\n",q="\n query tribeChanges($server: String!, $limit: Int, $offset: Int, $sort: [String!], $filter: TribeChangeFilter!) {\n tribeChanges(server: $server, limit: $limit, offset: $offset, sort: $sort, filter: $filter) {\n total\n items {\n oldTribe {\n id\n tag\n }\n newTribe {\n id\n tag\n }\n createdAt\n }\n }\n }\n",T="tribeChangesPagination",C=15,L="\nquery playerHistoryAndPlayerDailyStats($server: String!,\n $playerHistoryFilter: PlayerHistoryFilter!,\n $dailyPlayerStatsFilter: DailyPlayerStatsFilter!,\n $limit: Int,\n $offset: Int,\n $sort: [String!]) {\n playerHistory(server: $server, limit: $limit, offset: $offset, sort: $sort, filter: $playerHistoryFilter) {\n total\n items {\n totalVillages\n points\n rank\n scoreAtt\n rankAtt\n scoreDef\n rankDef\n scoreSup\n rankSup\n scoreTotal\n rankTotal\n tribe {\n id\n tag\n }\n createDate\n }\n }\n dailyPlayerStats(server: $server, limit: $limit, offset: $offset, sort: $sort, filter: $dailyPlayerStatsFilter) {\n items {\n points\n scoreAtt\n scoreAtt\n scoreDef\n scoreSup\n scoreTotal\n villages\n createDate\n }\n }\n}\n",E=15,_="\n query ennoblements($server: String!, $limit: Int, $offset: Int, $sort: [String!], $filter: EnnoblementFilter!) {\n ennoblements(server: $server, limit: $limit, offset: $offset, sort: $sort, filter: $filter) {\n total\n items {\n village {\n id\n name\n x\n y\n }\n oldOwner {\n id\n name\n }\n oldOwnerTribe {\n id\n tag\n }\n newOwner {\n id\n name\n }\n newOwnerTribe {\n id\n tag\n }\n ennobledAt\n }\n }\n }\n",O=15,I=document.querySelector("#player_info > tbody"),H=P===$?I:document.querySelector("#content_value > table > tbody > tr > td:nth-child(1) > table:nth-child(2) > tbody"),j=document.querySelector(P===$?"#content_value > table:nth-child(7) > tbody > tr > td:nth-child(2)":"#content_value > table > tbody > tr > td:nth-child(2)"),M=(0,n.default)(),N=()=>(0,p.getItem)(k),R=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(0,p.setItem)(k,e)},x=async function(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{name:r}=n,a=v(n,["name"]);try{const n=await fetch(TribalWars.buildURL("",{screen:"ranking",mode:"in_a_day",type:t,name:r||""})),o=await n.text();if(!o)throw new Error;const l=new e.default(o,a).parse();if(0===l.length)throw new Error;return l[0]}catch(i){return{rank:0,playerID:0,score:0,tribeID:0,tribe:"",date:new Date}}},F=async()=>{const e=await(0,t.default)({query:A,variables:{server:S,id:P,limit:1,sort:["createDate DESC"],filter:{playerID:[P]}}});if(e.player){const t={},n={name:e.player.name,playerID:e.player.id};for(let e of["kill_att","kill_def","kill_sup","loot_res","loot_vil","scavenge","conquer"])t[(0,l.default)(e.replace("kill_",""))]=await x(e,n);e.player.inADay=t}return R(e),e},V=e=>{let{title:t,data:n,id:r}=e,a=document.querySelector("#"+r);a||((a=document.createElement("tr")).id=r,a.appendChild(document.createElement("td")),a.appendChild(document.createElement("td")),I.append(a)),a.children[0].innerHTML=t,a.children[1].innerHTML=n},W=e=>{let t=document.querySelector("#playerServers");t||((t=document.createElement("table")).id="playerServers",t.classList.add("vis"),t.width="100%",t.innerHTML="\n \n \n \n ".concat(M.playerServers,"\n | \n \n \n \n | \n \n \n "),j.prepend(t)),t.querySelector("td").innerHTML=e.servers.sort().map(t=>'').concat(t,"")).join("")},U=e=>{let t=document.querySelector("#playerOtherNames");t||((t=document.createElement("div")).id="playerOtherNames",t.width="100%",j.prepend(t)),t.innerHTML='\n \n \n \n \n '.concat(M.oldName,"\n | \n \n ").concat(M.newName,"\n | \n \n ").concat(M.date,"\n | \n \n ").concat(e.nameChanges.map(e=>"\n \n \n ".concat(e.oldName,"\n | \n \n ").concat(e.newName,"\n | \n \n ").concat((0,y.default)(e.changeDate,{year:"numeric",month:"2-digit",day:"2-digit"}),"\n | \n \n ")).join(""),"\n \n \n ")},G=e=>{let t=document.querySelector("#inADayRanks");t||((t=document.createElement("div")).id="inADayRanks",t.width="100%",j.prepend(t)),t.innerHTML='\n \n \n \n \n '.concat(M.inADayBestScores,"\n | \n \n \n \n ").concat(M.unitsDefeatedWhileAttacking,"\n | \n \n ").concat(e.inADay.att.score.toLocaleString()," (").concat(e.inADay.att.rank,".)\n | \n \n \n \n ").concat(M.unitsDefeatedWhileDefending,"\n | \n \n ").concat(e.inADay.def.score.toLocaleString()," (").concat(e.inADay.def.rank,".)\n | \n \n \n \n ").concat(M.unitsDefeatedWhileSupporting,"\n | \n \n ").concat(e.inADay.sup.score.toLocaleString()," (").concat(e.inADay.sup.rank,".)\n | \n \n \n \n ").concat(M.resourcesPlundered,"\n | \n \n ").concat(e.inADay.lootRes.score.toLocaleString()," (").concat(e.inADay.lootRes.rank,".)\n | \n \n \n \n ").concat(M.villagesPlundered,"\n | \n \n ").concat(e.inADay.lootVil.score.toLocaleString()," (").concat(e.inADay.lootVil.rank,".)\n | \n \n \n \n ").concat(M.resourcesGathered,"\n | \n \n ").concat(e.inADay.scavenge.score.toLocaleString()," (").concat(e.inADay.scavenge.rank,".)\n | \n \n \n \n ").concat(M.villagesConquered,"\n | \n \n ").concat(e.inADay.conquer.score.toLocaleString()," (").concat(e.inADay.conquer.rank,".)\n | \n \n \n \n ")},B=e=>{let{player:t,dailyPlayerStats:n}=e;[{title:M.joinedAt+":",data:(0,y.default)(t.joinedAt),id:"joined_at"},{title:M.dailyGrowth+":",data:t.dailyGrowth.toLocaleString(),id:"dg"},{title:M.bestRank+":",data:t.bestRank+" "+"(".concat((0,y.default)(t.bestRankAt),")"),id:"best_rank"},{title:M.mostPoints+":",data:t.mostPoints.toLocaleString()+" "+"(".concat((0,y.default)(t.mostPointsAt),")"),id:"most_points"},{title:M.mostVillages+":",data:t.mostVillages+" "+"(".concat((0,y.default)(t.mostVillagesAt),")"),id:"most_villages"}].forEach(e=>{V(e)}),G(t),n&&n.items.length>0&&(0,r.default)(j,n.items[0]),t.nameChanges.length>0&&U(t),t.servers.length>0&&W(t)},z=(e,t,n)=>{const r=(0,s.generatePaginationItems)({total:n.total,limit:15,currentPage:t}),i='\n \n ').concat(r.join(""),'\n \n \n \n \n \n ').concat(M.date,"\n | \n \n ").concat(M.newTribe,"\n | \n \n ").concat(M.oldTribe,"\n | \n \n ").concat(n.items.map(e=>{let t=""+"".concat((0,y.default)(e.createdAt)," | ");return e.newTribe?t+='').concat(e.newTribe.tag," | "):t+="- | ",e.oldTribe?t+='').concat(e.oldTribe.tag," | "):t+="- | ",t+" "}).join(""),"\n \n \n ");(0,a.default)({e:e,title:M.tribeChanges,id:"tribeChanges",html:i}),document.querySelectorAll("#tribeChangesPagination a").forEach(e=>{e.addEventListener("click",J)})},J=async e=>{e.preventDefault();const n=(0,s.getPage)(e.target);if(!isNaN(n)){const r=await(0,t.default)({query:q,variables:{filter:{playerID:[P]},sort:["createdAt DESC"],offset:15*(n-1),limit:15,server:S}});z(e,n,r.tribeChanges)}},K=async e=>{e.preventDefault();const n=(0,s.getPage)(e.target);if(!isNaN(n))try{const a={playerID:[P]},{playerHistory:i,dailyPlayerStats:l}=await(0,t.default)({query:L,variables:{server:S,playerHistoryFilter:a,offset:15*(n-1),limit:15,sort:["createDate DESC"],dailyPlayerStatsFilter:a}});(0,o.default)(e,i,l,{currentPage:n,limit:15,onPageChange:K,tribe:!1})}catch(r){console.log("cannot load player history",r)}},Q=async e=>{e.preventDefault();const n=(0,s.getPage)(e.target);if(!isNaN(n)){const r=await(0,t.default)({query:_,variables:{filter:{or:{oldOwnerID:[P],newOwnerID:[P]}},offset:15*(n-1),limit:15,sort:["ennobledAt DESC"],server:S}});(0,i.default)(e,r.ennoblements,{currentPage:n,limit:15,onPageChange:Q})}},X=e=>{e.preventDefault(),Dialog.show(M.exportedVillages,""))},Y=e=>{const t=document.createElement("td");t.colSpan="2",t.append(e);const n=document.createElement("tr");return n.appendChild(t),n},Z=()=>{const e=document.createElement("a");e.href=m.buildPlayerURL(w,S,P),e.innerHTML=M.action.linkToTWHelp,H.appendChild(Y(e));const t=document.createElement("a");t.href="#",(0,s.setPage)(t,"1"),t.innerHTML=M.action.showTribeChanges,t.addEventListener("click",J),H.appendChild(Y(t));const n=document.createElement("a");n.href="#",(0,s.setPage)(n,"1"),n.innerHTML=M.action.showHistory,n.addEventListener("click",K),H.appendChild(Y(n));const r=document.createElement("a");r.href="#",(0,s.setPage)(r,"1"),r.innerHTML=M.action.showEnnoblements,r.addEventListener("click",Q),H.appendChild(Y(r));const a=document.createElement("a");a.href="#",a.innerHTML=M.action.exportVillages,a.addEventListener("click",X),H.appendChild(Y(a))};!async function(){try{Z();const t=N();t&&t.player&&B(t);const n=await F();n&&B(n)}catch(e){console.log("extended player profile",e)}}();
},{"./libs/InADayParser":"dSAr","./libs/requestCreator":"Ph2E","./i18n/extendedPlayerProfile":"I8dv","./common/renderTodaysStats":"yrCm","./utils/showPopup":"chDM","./common/showEnnoblementsPopup":"vNT1","./common/showHistoryPopup":"kEDU","./utils/hyphensToCamelCase":"GxsT","./utils/pagination":"fCHX","./utils/getIDFromURL":"tQUs","./utils/getCurrentServer":"DMkL","./utils/getServerVersionCode":"J1Ly","./utils/formatDate":"V6Mf","./utils/tribalwars":"fHHP","./utils/twhelp":"gvXE","./utils/localStorage":"KWxH"}]},{},["yRop"], null)
\ No newline at end of file
diff --git a/dist/quickbar/extendedTribeProfile.js b/dist/quickbar/extendedTribeProfile.js
index 1458d68..c00bee0 100644
--- a/dist/quickbar/extendedTribeProfile.js
+++ b/dist/quickbar/extendedTribeProfile.js
@@ -1,14 +1,4 @@
-parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcelRequire,u="function"==typeof require&&require;function f(t,n){if(!r[t]){if(!e[t]){var i="function"==typeof parcelRequire&&parcelRequire;if(!n&&i)return i(t,!0);if(o)return o(t,!0);if(u&&"string"==typeof t)return u(t);var c=new Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}p.resolve=function(r){return e[t][1][r]||r},p.cache={};var l=r[t]=new f.Module(t);e[t][0].call(l.exports,p,l,l.exports,this)}return r[t].exports;function p(e){return f(p.resolve(e))}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.exports={}},f.modules=e,f.cache=r,f.parent=o,f.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]};for(var c=0;c0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;for(var o in t)void 0===e[o]&&(e[o]=t[o]);return e}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=e,module.exports=exports.default,module.exports.default=exports.default;
-},{}],"KGu6":[function(require,module,exports) {
-"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=l;var e=r(require("./util/assertString")),t=r(require("./util/merge"));function r(e){return e&&e.__esModule?e:{default:e}}var u={require_tld:!0,allow_underscores:!1,allow_trailing_dot:!1};function l(r,l){(0,e.default)(r),(l=(0,t.default)(l,u)).allow_trailing_dot&&"."===r[r.length-1]&&(r=r.substring(0,r.length-1));for(var f=r.split("."),n=0;n63)return!1;if(l.require_tld){var a=f.pop();if(!f.length||!/^([a-z\u00a1-\uffff]{2,}|xn[a-z0-9-]{2,})$/i.test(a))return!1;if(/[\s\u2002-\u200B\u202F\u205F\u3000\uFEFF\uDB40\uDC20\u00A9\uFFFD]/.test(a))return!1}for(var i,o=0;o1&&void 0!==arguments[1]?arguments[1]:"";if((0,e.default)(t),!(i=String(i)))return u(t,4)||u(t,6);if("4"===i)return!!r.test(t)&&t.split(".").sort(function(e,t){return e-t})[3]<=255;if("6"===i){var l=[t];if(t.includes("%")){if(2!==(l=t.split("%")).length)return!1;if(!l[0].includes(":"))return!1;if(""===l[1])return!1}var s=l[0].split(":"),f=!1,o=u(s[s.length-1],4),a=o?7:8;if(s.length>a)return!1;if("::"===t)return!0;"::"===t.substr(0,2)?(s.shift(),s.shift(),f=!0):"::"===t.substr(t.length-2)&&(s.pop(),s.pop(),f=!0);for(var d=0;d0&&d=1:s.length===a}return!1}module.exports=exports.default,module.exports.default=exports.default;
-},{"./util/assertString":"d3m2"}],"XMVV":[function(require,module,exports) {
-"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=f;var t=i(require("./util/assertString")),e=i(require("./isFQDN")),r=i(require("./isIP")),l=i(require("./util/merge"));function i(t){return t&&t.__esModule?t:{default:t}}var o={protocols:["http","https","ftp"],require_tld:!0,require_protocol:!1,require_host:!0,require_valid_protocol:!0,allow_underscores:!1,allow_trailing_dot:!1,allow_protocol_relative_urls:!1},u=/^\[([^\]]+)\](?::([0-9]+))?$/;function s(t){return"[object RegExp]"===Object.prototype.toString.call(t)}function n(t,e){for(var r=0;r=2083||/[\s<>]/.test(i))return!1;if(0===i.indexOf("mailto:"))return!1;var f,a,p,_,d,h,c,g;if(s=(0,l.default)(s,o),c=i.split("#"),i=c.shift(),c=i.split("?"),i=c.shift(),(c=i.split("://")).length>1){if(f=c.shift().toLowerCase(),s.require_valid_protocol&&-1===s.protocols.indexOf(f))return!1}else{if(s.require_protocol)return!1;if("//"===i.substr(0,2)){if(!s.allow_protocol_relative_urls)return!1;c[0]=i.substr(2)}}if(""===(i=c.join("://")))return!1;if(c=i.split("/"),""===(i=c.shift())&&!s.require_host)return!0;if((c=i.split("@")).length>1){if(s.disallow_auth)return!1;if((a=c.shift()).indexOf(":")>=0&&a.split(":").length>2)return!1}h=null,g=null;var q=(_=c.join("@")).match(u);return q?(p="",g=q[1],h=q[2]||null):(p=(c=_.split(":")).shift(),c.length&&(h=c.join(":"))),!(null!==h&&(d=parseInt(h,10),!/^[0-9]+$/.test(h)||d<=0||d>65535))&&(!!((0,r.default)(p)||(0,e.default)(p,s)||g&&(0,r.default)(g,6))&&(p=p||g,!(s.host_whitelist&&!n(p,s.host_whitelist))&&(!s.host_blacklist||!n(p,s.host_blacklist))))}module.exports=exports.default,module.exports.default=exports.default;
-},{"./util/assertString":"d3m2","./isFQDN":"KGu6","./isIP":"NHAn","./util/merge":"hxfi"}],"kK6Q":[function(require,module,exports) {
+parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcelRequire,u="function"==typeof require&&require;function f(t,n){if(!r[t]){if(!e[t]){var i="function"==typeof parcelRequire&&parcelRequire;if(!n&&i)return i(t,!0);if(o)return o(t,!0);if(u&&"string"==typeof t)return u(t);var c=new Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}p.resolve=function(r){return e[t][1][r]||r},p.cache={};var l=r[t]=new f.Module(t);e[t][0].call(l.exports,p,l,l.exports,this)}return r[t].exports;function p(e){return f(p.resolve(e))}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.exports={}},f.modules=e,f.cache=r,f.parent=o,f.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]};for(var c=0;c1?"s":"")+" required, but only "+t.length+" present")}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=e;
},{}],"KYJg":[function(require,module,exports) {
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=r;var e=t(require("../_lib/requiredArgs/index.js"));function t(e){return e&&e.__esModule?e:{default:e}}function r(t){(0,e.default)(1,arguments);var r=Object.prototype.toString.call(t);return t instanceof Date||"object"==typeof t&&"[object Date]"===r?new Date(t.getTime()):"number"==typeof t||"[object Number]"===r?new Date(t):("string"!=typeof t&&"[object String]"!==r||"undefined"==typeof console||(console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule"),console.warn((new Error).stack)),new Date(NaN))}
@@ -39,9 +29,9 @@ parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcel
},{}],"V6Mf":[function(require,module,exports) {
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=(e,t)=>new Date(e).toLocaleDateString(window.game_data.locale.replace("_","-"),t||{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"});exports.default=e;
},{}],"fHHP":[function(require,module,exports) {
-"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.buildImgURL=exports.calcAttackDuration=exports.formatVillageName=exports.formatVillageURL=exports.formatPlayerURL=exports.formatTribeURL=void 0;const o=o=>window.location.origin+TribalWars.buildURL("",{screen:"info_ally",id:o});exports.formatTribeURL=o;const t=o=>window.location.origin+TribalWars.buildURL("",{screen:"info_player",id:o});exports.formatPlayerURL=t;const r=o=>window.location.origin+TribalWars.buildURL("",{screen:"info_village",id:o});exports.formatVillageURL=r;const e=function(){let o=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:500,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:500;const e="K"+String(r)[0]+String(t)[0];return"".concat(o," (").concat(t,"|").concat(r,") ").concat(e)};exports.formatVillageName=e;const i=(o,t,r)=>Math.round(o*r/t);exports.calcAttackDuration=i;const a=o=>image_base+o;exports.buildImgURL=a;
+"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.buildImgURL=exports.calcAttackDuration=exports.buildVillageName=exports.buildVillageURL=exports.buildPlayerURL=exports.buildTribeURL=void 0;const i=i=>window.location.origin+TribalWars.buildURL("",{screen:"info_ally",id:i});exports.buildTribeURL=i;const o=i=>window.location.origin+TribalWars.buildURL("",{screen:"info_player",id:i});exports.buildPlayerURL=o;const e=i=>window.location.origin+TribalWars.buildURL("",{screen:"info_village",id:i});exports.buildVillageURL=e;const t=function(){let i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:500,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:500;const t="K"+String(e)[0]+String(o)[0];return"".concat(i," (").concat(o,"|").concat(e,") ").concat(t)};exports.buildVillageName=t;const l=(i,o)=>Math.round(i*o);exports.calcAttackDuration=l;const r=i=>image_base+i;exports.buildImgURL=r;
},{}],"vNT1":[function(require,module,exports) {
-"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var t=l(require("../i18n/showEnnoblementsPopup")),e=require("../utils/pagination"),n=l(require("../utils/showPopup")),a=l(require("../utils/formatDate")),o=require("../utils/tribalwars");function l(t){return t&&t.__esModule?t:{default:t}}const r="ennoblementsPagination",i=(0,t.default)(),c=(t,e)=>t?'').concat(t.name," (").concat(e?'').concat(e.tag,""):"-",") | "):"- | ";var d=function(t,l){let{limit:d=0,currentPage:s=1,onPageChange:u=(()=>{})}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const g=(0,e.generatePaginationItems)({total:l.total,limit:d,currentPage:s}),m='\n \n ').concat(g.join(""),'\n \n \n \n \n \n ').concat(i.date,"\n | \n \n ").concat(i.village,"\n | \n \n ").concat(i.newOwner,"\n | \n \n ").concat(i.oldOwner,"\n | \n \n ").concat(l.items.map(t=>{let e=""+"".concat((0,a.default)(t.ennobledAt)," | ");return t.village?e+='').concat((0,o.formatVillageName)(t.village.name,t.village.x,t.village.y)," | "):e+="- | ",e+=c(t.newOwner,t.newOwnerTribe),(e+=c(t.oldOwner,t.oldOwnerTribe))+" "}).join(""),"\n \n \n ");(0,n.default)({e:t,title:i.title,id:"ennoblements",html:m}),document.querySelectorAll("#ennoblementsPagination a").forEach(t=>{t.addEventListener("click",u)})};exports.default=d;
+"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=l(require("../i18n/showEnnoblementsPopup")),t=require("../utils/pagination"),n=l(require("../utils/showPopup")),r=l(require("../utils/formatDate")),a=i(require("../utils/tribalwars"));function o(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return o=function(){return e},e}function i(e){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=o();if(t&&t.has(e))return t.get(e);var n={},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)){var i=r?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(n,a,i):n[a]=e[a]}return n.default=e,t&&t.set(e,n),n}function l(e){return e&&e.__esModule?e:{default:e}}const c="ennoblementsPagination",u=(0,e.default)(),d=(e,t)=>e?'').concat(e.name," (").concat(t?'').concat(t.tag,""):"-",") | "):"- | ";var s=function(e,o){let{limit:i=0,currentPage:l=1,onPageChange:s=(()=>{})}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const f=(0,t.generatePaginationItems)({total:o.total,limit:i,currentPage:l}),p='\n \n ').concat(f.join(""),'\n \n \n \n \n \n ').concat(u.date,"\n | \n \n ").concat(u.village,"\n | \n \n ").concat(u.newOwner,"\n | \n \n ").concat(u.oldOwner,"\n | \n \n ").concat(o.items.map(e=>{let t=""+"".concat((0,r.default)(e.ennobledAt)," | ");return e.village?t+='').concat(a.buildVillageName(e.village.name,e.village.x,e.village.y)," | "):t+="- | ",t+=d(e.newOwner,e.newOwnerTribe),(t+=d(e.oldOwner,e.oldOwnerTribe))+" "}).join(""),"\n \n \n ");(0,n.default)({e:e,title:u.title,id:"ennoblements",html:p}),document.querySelectorAll("#ennoblementsPagination a").forEach(e=>{e.addEventListener("click",s)})};exports.default=s;
},{"../i18n/showEnnoblementsPopup":"tKRp","../utils/pagination":"fCHX","../utils/showPopup":"chDM","../utils/formatDate":"V6Mf","../utils/tribalwars":"fHHP"}],"VYL5":[function(require,module,exports) {
"use strict";function e(e){if(null===e||!0===e||!1===e)return NaN;var r=Number(e);return isNaN(r)?r:r<0?Math.ceil(r):Math.floor(r)}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=e;
},{}],"lQIY":[function(require,module,exports) {
@@ -51,7 +41,7 @@ parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcel
},{"../_lib/toInteger/index.js":"VYL5","../addDays/index.js":"lQIY","../_lib/requiredArgs/index.js":"kK6Q"}],"hNDe":[function(require,module,exports) {
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;const e={pl_PL:{title:"Historia",date:"Data",tribe:"Plemię",points:"Punkty",rank:"Ranking",villages:"Liczba wiosek",members:"Liczba członków",oda:"Pokonani przeciwnicy jako agresor",odd:"Pokonani przeciwnicy jako obrońca",ods:"Pokonani przeciwnicy jako wspierający",od:"Pokonani przeciwnicy"},en_DK:{title:"History",date:"Date",tribe:"Tribe",points:"Points",villages:"Villages",members:"Members",oda:"ODA",odd:"ODD",ods:"ODS",od:"OD"}};var o=()=>e[window.game_data.locale]||e.en_DK;exports.default=o;
},{}],"kEDU":[function(require,module,exports) {
-"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var t=r(require("date-fns/subDays")),n=r(require("../i18n/showHistoryPopup")),e=r(require("../utils/showPopup")),o=require("../utils/pagination"),a=r(require("../utils/formatDate")),c=require("../utils/tribalwars");function r(t){return t&&t.__esModule?t:{default:t}}const i="historyPagination",s=(0,n.default)(),l=t=>t>0?"+"+t:t;var d=function(n,r,i){let{currentPage:d=1,limit:g=0,onPageChange:u=(()=>{}),tribe:h=!1}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};const p=(0,o.generatePaginationItems)({total:r.total,limit:g,currentPage:d}),f='\n \n ').concat(p.join(""),'\n \n \n \n \n \n ').concat(s.date,"\n | \n ").concat(h?"":"".concat(s.tribe," | "),"\n \n ").concat(s.points,"\n | \n \n ").concat(s.villages,"\n | \n ").concat(h?"".concat(s.members," | "):"","\n \n ").concat(s.od,"\n | \n \n ").concat(s.oda,"\n | \n \n ").concat(s.odd,"\n | \n ").concat(h?"":"".concat(s.ods," | "),"\n \n ").concat(r.items.map(n=>{const e=(0,t.default)(new Date(n.createDate),1).toISOString().split(".")[0]+"Z",o=i.items.find(t=>t.createDate===e);let r=""+"".concat((0,a.default)(n.createDate,{year:"numeric",month:"2-digit",day:"2-digit"})," | ");return!h&&n.tribe?r+='').concat(n.tribe.tag," | "):h||(r+="- | "),r+='\n \n ').concat(n.points.toLocaleString()," (").concat(n.rank,')\n | \n \n ').concat(n.totalVillages.toLocaleString(),"\n | \n ").concat(h?'\n \n ').concat(n.totalMembers,"\n | \n "):"",'\n \n ').concat(n.scoreTotal.toLocaleString()," (").concat(n.rankTotal,')\n | \n \n ').concat(n.scoreAtt.toLocaleString()," (").concat(n.rankAtt,')\n | \n \n ').concat(n.scoreDef.toLocaleString()," (").concat(n.rankDef,")\n | \n ").concat(h?"":'\n \n ').concat(n.scoreSup.toLocaleString()," (").concat(n.rankSup,")\n | \n "),"\n ")+" "}).join(""),"\n \n \n ");(0,e.default)({e:n,title:s.title,id:"history",html:f}),document.querySelectorAll("#historyPagination a").forEach(t=>{t.addEventListener("click",u)})};exports.default=d;
+"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var t=l(require("date-fns/subDays")),n=l(require("../i18n/showHistoryPopup")),e=l(require("../utils/showPopup")),o=require("../utils/pagination"),a=l(require("../utils/formatDate")),r=i(require("../utils/tribalwars"));function c(){if("function"!=typeof WeakMap)return null;var t=new WeakMap;return c=function(){return t},t}function i(t){if(t&&t.__esModule)return t;if(null===t||"object"!=typeof t&&"function"!=typeof t)return{default:t};var n=c();if(n&&n.has(t))return n.get(t);var e={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in t)if(Object.prototype.hasOwnProperty.call(t,a)){var r=o?Object.getOwnPropertyDescriptor(t,a):null;r&&(r.get||r.set)?Object.defineProperty(e,a,r):e[a]=t[a]}return e.default=t,n&&n.set(t,e),e}function l(t){return t&&t.__esModule?t:{default:t}}const s="historyPagination",d=(0,n.default)(),u=t=>t>0?"+"+t:t;var g=function(n,c,i){let{currentPage:l=1,limit:s=0,onPageChange:g=(()=>{}),tribe:f=!1}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};const p=(0,o.generatePaginationItems)({total:c.total,limit:s,currentPage:l}),h='\n \n ').concat(p.join(""),'\n \n \n \n \n \n ').concat(d.date,"\n | \n ").concat(f?"":"".concat(d.tribe," | "),"\n \n ").concat(d.points,"\n | \n \n ").concat(d.villages,"\n | \n ").concat(f?"".concat(d.members," | "):"","\n \n ").concat(d.od,"\n | \n \n ").concat(d.oda,"\n | \n \n ").concat(d.odd,"\n | \n ").concat(f?"":"".concat(d.ods," | "),"\n \n ").concat(c.items.map(n=>{const e=(0,t.default)(new Date(n.createDate),1).toISOString().split(".")[0]+"Z",o=i.items.find(t=>t.createDate===e);let c=""+"".concat((0,a.default)(n.createDate,{year:"numeric",month:"2-digit",day:"2-digit"})," | ");return!f&&n.tribe?c+='').concat(n.tribe.tag," | "):f||(c+="- | "),c+='\n \n ').concat(n.points.toLocaleString()," (").concat(n.rank,')\n | \n \n ').concat(n.totalVillages.toLocaleString(),"\n | \n ").concat(f?'\n \n ').concat(n.totalMembers,"\n | \n "):"",'\n \n ').concat(n.scoreTotal.toLocaleString()," (").concat(n.rankTotal,')\n | \n \n ').concat(n.scoreAtt.toLocaleString()," (").concat(n.rankAtt,')\n | \n \n ').concat(n.scoreDef.toLocaleString()," (").concat(n.rankDef,")\n | \n ").concat(f?"":'\n \n ').concat(n.scoreSup.toLocaleString()," (").concat(n.rankSup,")\n | \n "),"\n ")+" "}).join(""),"\n \n \n ");(0,e.default)({e:n,title:d.title,id:"history",html:h}),document.querySelectorAll("#historyPagination a").forEach(t=>{t.addEventListener("click",g)})};exports.default=g;
},{"date-fns/subDays":"mRRL","../i18n/showHistoryPopup":"hNDe","../utils/showPopup":"chDM","../utils/pagination":"fCHX","../utils/formatDate":"V6Mf","../utils/tribalwars":"fHHP"}],"tQUs":[function(require,module,exports) {
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=e=>parseInt(new URLSearchParams(e).get("id"));exports.default=e;
},{}],"DMkL":[function(require,module,exports) {
@@ -61,9 +51,9 @@ parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcel
},{}],"J1Ly":[function(require,module,exports) {
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=function(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").substr(0,2)};exports.default=e;
},{}],"Syko":[function(require,module,exports) {
-"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.formatPlayerURL=void 0;const t=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return"http://www.twstats.com/in/".concat(t,"/player/").concat(e)};exports.formatPlayerURL=t;
+"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.buildPlayerURL=void 0;const t=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return"http://www.twstats.com/in/".concat(t,"/player/").concat(e)};exports.buildPlayerURL=t;
},{}],"gvXE":[function(require,module,exports) {
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.buildVillageURL=exports.buildTribeURL=exports.buildPlayerURL=exports.buildURLToProfile=exports.buildURLToServerPage=exports.BASE_URL=void 0;const e="tribalwarshelp.com";exports.BASE_URL=e;const t=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return"https://".concat(t,".").concat(e,"/server/").concat(o)};exports.buildURLToServerPage=t;const o=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"";return"".concat(t(e,o),"/").concat(n,"/").concat(l)};exports.buildURLToProfile=o;const l=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return o(e,t,l,"player")};exports.buildPlayerURL=l;const n=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return o(e,t,l,"tribe")};exports.buildTribeURL=n;const i=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return o(e,t,l,"village")};exports.buildVillageURL=i;
},{}],"r4nF":[function(require,module,exports) {
-"use strict";var e=g(require("validator/lib/isURL")),t=g(require("date-fns/differenceInDays")),n=g(require("./i18n/extendedTribeProfile")),r=g(require("./libs/requestCreator")),a=require("./utils/pagination"),i=g(require("./common/renderTodaysStats")),o=g(require("./common/showEnnoblementsPopup")),l=g(require("./common/showHistoryPopup")),s=g(require("./utils/showPopup")),c=g(require("./utils/getIDFromURL")),d=g(require("./utils/getCurrentServer")),u=require("./utils/localStorage"),m=g(require("./utils/formatDate")),f=g(require("./utils/getServerVersionCode")),b=require("./utils/twstats"),p=require("./utils/twhelp"),y=require("./utils/tribalwars");function g(e){return e&&e.__esModule?e:{default:e}}function h(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function v(e){for(var t=1;t table:nth-child(3) > tbody > tr > td:nth-child(1) > table > tbody"),j=O,x=document.querySelector("#content_value > table:nth-child(3) > tbody > tr > td:nth-child(2)"),M=document.querySelector("#content_value > table.vis > tbody"),G=(0,n.default)(),_=()=>(0,u.getItem)(w),R=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(0,u.setItem)(w,e)},V=()=>{const e=[];return M.querySelectorAll("a").forEach(t=>{const n=t.getAttribute("href");n.includes("info_player")&&e.push((0,c.default)(n))}),e},N=()=>{const e=[];return M.querySelectorAll("a").forEach(t=>{t.getAttribute("href").includes("info_player")&&e.push(t.innerText.trim())}),e},U=async()=>{const e=V(),t=await(0,r.default)({query:E,variables:{server:T,id:$,dailyTribeStatsSort:["createDate DESC"],dailyTibeStatsLimit:1,dailyTribeStatsFilter:{tribeID:[$]},playerSort:["rank ASC"],playerFilter:{id:e}}});return R(t),t},W=e=>{let{title:t,data:n,id:r}=e,a=document.querySelector("#"+r);a||((a=document.createElement("tr")).id=r,a.appendChild(document.createElement("td")),a.appendChild(document.createElement("td")),O.append(a)),a.children[0].innerHTML=t,a.children[1].innerHTML=n},X=e=>{M.parentElement.style.width="100%";const t=M.querySelector("tr:first-child");11!==t.children.length&&[G.oda,G.odd,G.ods,G.od,G.dailyGrowth,G.playerLinks].forEach(e=>{const n=document.createElement("th");n.innerHTML=e,t.appendChild(n)}),M.querySelectorAll("tr").forEach(t=>{const n=t.querySelector("a");if(!n)return;const r=(0,c.default)(n.getAttribute("href")),a=e.items.find(e=>e.id===r);a&&[[a.scoreAtt,a.rankAtt],[a.scoreDef,a.rankDef],[a.scoreSup,a.rankSup],[a.scoreTotal,a.rankTotal],a.dailyGrowth,[{link:(0,p.buildPlayerURL)(D,T,a.id),label:"TWHelp"},{link:(0,b.formatPlayerURL)(T,a.id),label:"TWStats"}]].forEach((e,n)=>{let r=t.children[5+n];r||(r=document.createElement("td"),t.appendChild(r)),Array.isArray(e)?"number"==typeof e[0]?r.innerHTML="".concat(e[0].toLocaleString()," (").concat(e[1],")"):e[0].link&&(r.innerHTML=e.map(e=>{let{link:t,label:n}=e;return'').concat(n,"")}).join(" ")):"number"==typeof e&&(r.innerHTML=e.toLocaleString())})})},Y=e=>{let{tribe:t,dailyTribeStats:n,players:r}=e;[{title:G.createdAt+":",data:(0,m.default)(t.createdAt),id:"created_at"},{title:G.dominance+":",data:t.dominance.toFixed(2)+"%",id:"dominance"},{title:G.bestRank+":",data:t.bestRank+" "+"(".concat((0,m.default)(t.bestRankAt),")"),id:"best_rank"},{title:G.mostPoints+":",data:t.mostPoints.toLocaleString()+" "+"(".concat((0,m.default)(t.mostPointsAt),")"),id:"most_points"},{title:G.mostVillages+":",data:t.mostVillages+" "+"(".concat((0,m.default)(t.mostVillagesAt),")"),id:"most_villages"}].forEach(e=>{W(e)}),n&&n.items.length>0&&(0,i.default)(x,n.items[0]),r&&r.items.length>0&&X(r)},z=async e=>{e.preventDefault();const t=(0,a.getPage)(e.target);if(!isNaN(t)){const n=await(0,r.default)({query:q,variables:{filter:{or:{oldOwnerTribeID:[$],newOwnerTribeID:[$]}},offset:15*(t-1),limit:15,sort:["ennobledAt DESC"],server:T}});(0,o.default)(e,n.ennoblements,{currentPage:t,limit:15,onPageChange:z})}},B=async e=>{e.preventDefault();const t=(0,a.getPage)(e.target);if(!isNaN(t))try{const a={tribeID:[$]},{tribeHistory:i,dailyTribeStats:o}=await(0,r.default)({query:A,variables:{server:T,offset:15*(t-1),limit:15,sort:["createDate DESC"],tribeHistoryFilter:a,dailyTribeStatsFilter:a}});(0,l.default)(e,i,o,{currentPage:t,limit:15,tribe:!0,onPageChange:B})}catch(n){console.log("cannot load tribe history",n)}},J=e=>{return e>0?"color: #000; background-color: #0f0":e<0?"color: #000; background-color: #f00":"color: #000; background-color: #808080"},K=e=>{switch(C){case"points":return e.points;case"villages":return e.villages;case"od":return e.scoreTotal;case"oda":return e.scoreAtt;case"odd":return e.scoreDef;case"ods":return e.scoreSup;default:return 0}},Q=e=>{const t=[...new Set(e.items.map(e=>e.createDate))].reverse();return"\n \n \n ".concat(G.player," | \n ").concat(t.map(e=>"".concat((0,m.default)(e,{year:"numeric",month:"2-digit",day:"2-digit"})," | ")).join(""),"\n ").concat(G.total," | \n \n ").concat(V().map(n=>{const r=e.items.filter(e=>e.player&&e.player.id===n).reverse();let a=void 0;r.length>0&&(a=r[0].player);const i=[];let o=0;for(let e of t){const t=r.find(t=>t.createDate===e);let n=0;t&&(n=K(t)),o+=n,i.push('').concat(n.toLocaleString()," | "))}return"\n \n ".concat(a?'').concat(a.name,""):"-","\n | \n ").concat(i.join(""),'\n ').concat(o.toLocaleString()," | \n ")}).join(""),"\n \n ")},Z="membersGrowth",ee="membersGrowthForm",te=e=>t=>{t.preventDefault(),C=t.target[0].value,document.querySelector("#membersGrowth").innerHTML=Q(e)},ne=(e,t)=>{const n=[["points",G.points],["villages",G.villages],["od",G.opponentsDefeated],["oda",G.opponentsDefeatedAsAttacker],["odd",G.opponentsDefeatedAsDefender],["ods",G.opponentsDefeatedAsSupporter]].map(e=>"")),r='\n \n \n ");(0,s.default)({e:e,title:G.membersGrowth,id:"mg",html:r}),document.querySelector("#membersGrowthForm").addEventListener("submit",te(t))},re=async function(){let{createDateLTE:e,createDateGT:n}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const a=V(),i=a.length*(0,t.default)(e,n),o={playerID:a,createDateLTE:e,createDateGT:n};return await(0,r.default)({query:P,variables:{filter:o,limit:i,sort:["createDate DESC"],server:T}})},ae=async e=>{e.preventDefault();const t=new Date;t.setDate(t.getDate()-7);const n=await re({createDateLTE:new Date,createDateGT:t});ne(e,n.dailyPlayerStats)},ie=(e,t,n)=>{const r=(0,a.generatePaginationItems)({total:n.total,limit:15,currentPage:t}),i='\n \n ').concat(r.join(""),'\n \n \n \n \n \n ').concat(G.date,"\n | \n \n ").concat(G.player,"\n | \n \n ").concat(G.act,"\n | \n \n ").concat(n.items.map(e=>{let t=""+"".concat((0,m.default)(e.createdAt)," | ");return e.player?t+='').concat(e.player.name," | "):t+="- | ",(t+="".concat(e.newTribe&&e.newTribe.id===$?G.joined:G.left," | "))+" "}).join(""),"\n \n \n ");(0,s.default)({e:e,title:G.tribeChanges,id:"tribeChanges",html:i}),document.querySelectorAll("#tribeChangesPagination a").forEach(e=>{e.addEventListener("click",oe)})},oe=async e=>{e.preventDefault();const t=(0,a.getPage)(e.target);if(!isNaN(t)){const n=await(0,r.default)({query:I,variables:{filter:{or:{oldTribeID:[$],newTribeID:[$]}},offset:15*(t-1),limit:15,sort:["createdAt DESC"],server:T}});ie(e,t,n.tribeChanges)}},le=e=>{e.preventDefault();const t=N(),n=[];for(let a=0;a{r+=''.concat(t+1,'.\n ")}),Dialog.show("mailinglist",r)},se=async function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];try{const a=await(0,r.default)({variables:e,query:"\n query villages($server: String!, $sort: [String!], $limit: Int, $offset: Int, $filter: VillageFilter!) {\n villages(server: $server, sort: $sort, limit: $limit, offset: $offset, filter: $filter) {\n ".concat(t?"total":"","\n items {\n id\n x\n y\n }\n }\n }\n ")});if(a&&a.villages&&Array.isArray(a.villages.items))return a.villages}catch(n){console.log("load villages",n)}return{total:0,items:[]}},ce=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return e&&t?Dialog.show("loading","Loaded: ".concat(e,"/").concat(t,"")):Dialog.show("loading","Loading...")},de=async e=>{e.preventDefault();let t=parseInt(e.target[4].value);const n={filter:{xLTE:parseInt(e.target[0].value),xGTE:parseInt(e.target[1].value),yLTE:parseInt(e.target[2].value),yGTE:parseInt(e.target[3].value),playerID:V()},limit:isNaN(t)||!t?0:t,sort:["id ASC"],server:T};ce();let{total:r,items:a}=await se(n,!0);const i=a.length;if(0!==t&&ti)for(let o=i;o".concat(a.map(e=>"".concat(e.x,"|").concat(e.y)).join(" "),"\n "))},ue=e=>{e.preventDefault();const t='\n \n ');Dialog.show("exportTribeVillages",t),document.querySelector("#etvForm").addEventListener("submit",de)},me=e=>{const t=document.createElement("td");t.colSpan="2",t.append(e);const n=document.createElement("tr");return n.appendChild(t),n},fe=()=>{const e=document.createElement("a");e.href=(0,p.buildTribeURL)(D,T,$),e.innerHTML=G.action.linkToTWHelp,j.appendChild(me(e));const t=document.createElement("a");t.href="#",(0,a.setPage)(t,"1"),t.innerHTML=G.action.showEnnoblements,t.addEventListener("click",z),j.appendChild(me(t));const n=document.createElement("a");n.href="#",(0,a.setPage)(n,"1"),n.innerHTML=G.action.showHistory,n.addEventListener("click",B),j.appendChild(me(n));const r=document.createElement("a");r.href="#",(0,a.setPage)(r,"1"),r.innerHTML=G.action.showTribeChanges,r.addEventListener("click",oe),j.appendChild(me(r));const i=document.createElement("a");i.href="#",i.innerHTML=G.action.showMembersGrowth,i.addEventListener("click",ae),j.appendChild(me(i));const o=document.createElement("a");o.href="#",o.innerHTML=G.action.generateMailingList,o.addEventListener("click",le),j.appendChild(me(o));const l=document.createElement("a");l.href="#",l.innerHTML=G.action.exportVillages,l.addEventListener("click",ue),j.appendChild(me(l))};!async function(){try{document.querySelector("#content_value > table:nth-child(3)").style.width="100%",fe();const t=_();t&&t.tribe&&Y(t);const n=await U();n&&Y(n)}catch(e){console.log("extended tribe profile",e)}}();
-},{"validator/lib/isURL":"XMVV","date-fns/differenceInDays":"mdVI","./i18n/extendedTribeProfile":"iFDG","./libs/requestCreator":"Ph2E","./utils/pagination":"fCHX","./common/renderTodaysStats":"yrCm","./common/showEnnoblementsPopup":"vNT1","./common/showHistoryPopup":"kEDU","./utils/showPopup":"chDM","./utils/getIDFromURL":"tQUs","./utils/getCurrentServer":"DMkL","./utils/localStorage":"KWxH","./utils/formatDate":"V6Mf","./utils/getServerVersionCode":"J1Ly","./utils/twstats":"Syko","./utils/twhelp":"gvXE","./utils/tribalwars":"fHHP"}]},{},["r4nF"], null)
\ No newline at end of file
+"use strict";var e=h(require("date-fns/differenceInDays")),t=h(require("./i18n/extendedTribeProfile")),n=h(require("./libs/requestCreator")),r=require("./utils/pagination"),a=h(require("./common/renderTodaysStats")),i=h(require("./common/showEnnoblementsPopup")),o=h(require("./common/showHistoryPopup")),l=h(require("./utils/showPopup")),s=h(require("./utils/getIDFromURL")),c=h(require("./utils/getCurrentServer")),d=require("./utils/localStorage"),u=h(require("./utils/formatDate")),f=h(require("./utils/getServerVersionCode")),m=g(require("./utils/twstats")),b=g(require("./utils/twhelp")),p=g(require("./utils/tribalwars"));function y(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return y=function(){return e},e}function g(e){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=y();if(t&&t.has(e))return t.get(e);var n={},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)){var i=r?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(n,a,i):n[a]=e[a]}return n.default=e,t&&t.set(e,n),n}function h(e){return e&&e.__esModule?e:{default:e}}function v(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function S(e){for(var t=1;t table:nth-child(3) > tbody > tr > td:nth-child(1) > table > tbody"),x=H,M=document.querySelector("#content_value > table:nth-child(3) > tbody > tr > td:nth-child(2)"),_=document.querySelector("#content_value > table.vis > tbody"),G=(0,t.default)(),R=()=>(0,d.getItem)(E),V=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(0,d.setItem)(E,e)},N=()=>{const e=[];return _.querySelectorAll("a").forEach(t=>{const n=t.getAttribute("href");n.includes("info_player")&&e.push((0,s.default)(n))}),e},U=()=>{const e=[];return _.querySelectorAll("a").forEach(t=>{t.getAttribute("href").includes("info_player")&&e.push(t.innerText.trim())}),e},W=async()=>{const e=N(),t=await(0,n.default)({query:q,variables:{server:D,id:$,dailyTribeStatsSort:["createDate DESC"],dailyTibeStatsLimit:1,dailyTribeStatsFilter:{tribeID:[$]},playerSort:["rank ASC"],playerFilter:{id:e}}});return V(t),t},X=e=>{let{title:t,data:n,id:r}=e,a=document.querySelector("#"+r);a||((a=document.createElement("tr")).id=r,a.appendChild(document.createElement("td")),a.appendChild(document.createElement("td")),H.append(a)),a.children[0].innerHTML=t,a.children[1].innerHTML=n},Y=e=>{_.parentElement.style.width="100%";const t=_.querySelector("tr:first-child");11!==t.children.length&&[G.oda,G.odd,G.ods,G.od,G.dailyGrowth,G.playerLinks].forEach(e=>{const n=document.createElement("th");n.innerHTML=e,t.appendChild(n)}),_.querySelectorAll("tr").forEach(t=>{const n=t.querySelector("a");if(!n)return;const r=(0,s.default)(n.getAttribute("href")),a=e.items.find(e=>e.id===r);a&&[[a.scoreAtt,a.rankAtt],[a.scoreDef,a.rankDef],[a.scoreSup,a.rankSup],[a.scoreTotal,a.rankTotal],a.dailyGrowth,[{link:b.buildPlayerURL(w,D,a.id),label:"TWHelp"},{link:m.buildPlayerURL(D,a.id),label:"TWStats"}]].forEach((e,n)=>{let r=t.children[5+n];r||(r=document.createElement("td"),t.appendChild(r)),Array.isArray(e)?"number"==typeof e[0]?r.innerHTML="".concat(e[0].toLocaleString()," (").concat(e[1],")"):e[0].link&&(r.innerHTML=e.map(e=>{let{link:t,label:n}=e;return'').concat(n,"")}).join(" ")):"number"==typeof e&&(r.innerHTML=e.toLocaleString())})})},z=e=>{let{tribe:t,dailyTribeStats:n,players:r}=e;[{title:G.createdAt+":",data:(0,u.default)(t.createdAt),id:"created_at"},{title:G.dominance+":",data:t.dominance.toFixed(2)+"%",id:"dominance"},{title:G.bestRank+":",data:t.bestRank+" "+"(".concat((0,u.default)(t.bestRankAt),")"),id:"best_rank"},{title:G.mostPoints+":",data:t.mostPoints.toLocaleString()+" "+"(".concat((0,u.default)(t.mostPointsAt),")"),id:"most_points"},{title:G.mostVillages+":",data:t.mostVillages+" "+"(".concat((0,u.default)(t.mostVillagesAt),")"),id:"most_villages"}].forEach(e=>{X(e)}),n&&n.items.length>0&&(0,a.default)(M,n.items[0]),r&&r.items.length>0&&Y(r)},B=async e=>{e.preventDefault();const t=(0,r.getPage)(e.target);if(!isNaN(t)){const r=await(0,n.default)({query:L,variables:{filter:{or:{oldOwnerTribeID:[$],newOwnerTribeID:[$]}},offset:15*(t-1),limit:15,sort:["ennobledAt DESC"],server:D}});(0,i.default)(e,r.ennoblements,{currentPage:t,limit:15,onPageChange:B})}},J=async e=>{e.preventDefault();const t=(0,r.getPage)(e.target);if(!isNaN(t))try{const r={tribeID:[$]},{tribeHistory:i,dailyTribeStats:l}=await(0,n.default)({query:P,variables:{server:D,offset:15*(t-1),limit:15,sort:["createDate DESC"],tribeHistoryFilter:r,dailyTribeStatsFilter:r}});(0,o.default)(e,i,l,{currentPage:t,limit:15,tribe:!0,onPageChange:J})}catch(a){console.log("cannot load tribe history",a)}},K=e=>{return e>0?"color: #000; background-color: #0f0":e<0?"color: #000; background-color: #f00":"color: #000; background-color: #808080"},Q=e=>{switch(O){case"points":return e.points;case"villages":return e.villages;case"od":return e.scoreTotal;case"oda":return e.scoreAtt;case"odd":return e.scoreDef;case"ods":return e.scoreSup;default:return 0}},Z=e=>{const t=[...new Set(e.items.map(e=>e.createDate))].reverse();return"\n \n \n ".concat(G.player," | \n ").concat(t.map(e=>"".concat((0,u.default)(e,{year:"numeric",month:"2-digit",day:"2-digit"})," | ")).join(""),"\n ").concat(G.total," | \n \n ").concat(N().map(n=>{const r=e.items.filter(e=>e.player&&e.player.id===n).reverse();let a=void 0;r.length>0&&(a=r[0].player);const i=[];let o=0;for(let e of t){const t=r.find(t=>t.createDate===e);let n=0;t&&(n=Q(t)),o+=n,i.push('').concat(n.toLocaleString()," | "))}return"\n \n ".concat(a?'').concat(a.name,""):"-","\n | \n ").concat(i.join(""),'\n ').concat(o.toLocaleString()," | \n ")}).join(""),"\n \n ")},ee="membersGrowth",te="membersGrowthForm",ne=e=>t=>{t.preventDefault(),O=t.target[0].value,document.querySelector("#membersGrowth").innerHTML=Z(e)},re=(e,t)=>{const n=[["points",G.points],["villages",G.villages],["od",G.opponentsDefeated],["oda",G.opponentsDefeatedAsAttacker],["odd",G.opponentsDefeatedAsDefender],["ods",G.opponentsDefeatedAsSupporter]].map(e=>"")),r='\n \n \n ");(0,l.default)({e:e,title:G.membersGrowth,id:"mg",html:r}),document.querySelector("#membersGrowthForm").addEventListener("submit",ne(t))},ae=async function(){let{createDateLTE:t,createDateGT:r}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const a=N(),i=a.length*(0,e.default)(t,r),o={playerID:a,createDateLTE:t,createDateGT:r};return await(0,n.default)({query:C,variables:{filter:o,limit:i,sort:["createDate DESC"],server:D}})},ie=async e=>{e.preventDefault();const t=new Date;t.setDate(t.getDate()-7);const n=await ae({createDateLTE:new Date,createDateGT:t});re(e,n.dailyPlayerStats)},oe=(e,t,n)=>{const a=(0,r.generatePaginationItems)({total:n.total,limit:15,currentPage:t}),i='\n \n ').concat(a.join(""),'\n \n \n \n \n \n ').concat(G.date,"\n | \n \n ").concat(G.player,"\n | \n \n ").concat(G.act,"\n | \n \n ").concat(n.items.map(e=>{let t=""+"".concat((0,u.default)(e.createdAt)," | ");return e.player?t+='').concat(e.player.name," | "):t+="- | ",(t+="".concat(e.newTribe&&e.newTribe.id===$?G.joined:G.left," | "))+" "}).join(""),"\n \n \n ");(0,l.default)({e:e,title:G.tribeChanges,id:"tribeChanges",html:i}),document.querySelectorAll("#tribeChangesPagination a").forEach(e=>{e.addEventListener("click",le)})},le=async e=>{e.preventDefault();const t=(0,r.getPage)(e.target);if(!isNaN(t)){const r=await(0,n.default)({query:j,variables:{filter:{or:{oldTribeID:[$],newTribeID:[$]}},offset:15*(t-1),limit:15,sort:["createdAt DESC"],server:D}});oe(e,t,r.tribeChanges)}},se=e=>{e.preventDefault();const t=U(),n=[];for(let a=0;a{r+=''.concat(t+1,'.\n ")}),Dialog.show("mailinglist",r)},ce=async function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];try{const a=await(0,n.default)({variables:e,query:"\n query villages($server: String!, $sort: [String!], $limit: Int, $offset: Int, $filter: VillageFilter!) {\n villages(server: $server, sort: $sort, limit: $limit, offset: $offset, filter: $filter) {\n ".concat(t?"total":"","\n items {\n id\n x\n y\n }\n }\n }\n ")});if(a&&a.villages&&Array.isArray(a.villages.items))return a.villages}catch(r){console.log("load villages",r)}return{total:0,items:[]}},de=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return e&&t?Dialog.show("loading","Loaded: ".concat(e,"/").concat(t,"")):Dialog.show("loading","Loading...")},ue=async e=>{e.preventDefault();let t=parseInt(e.target[4].value);const n={filter:{xLTE:parseInt(e.target[0].value),xGTE:parseInt(e.target[1].value),yLTE:parseInt(e.target[2].value),yGTE:parseInt(e.target[3].value),playerID:N()},limit:isNaN(t)||!t?0:t,sort:["id ASC"],server:D};de();let{total:r,items:a}=await ce(n,!0);const i=a.length;if(0!==t&&ti)for(let o=i;o".concat(a.map(e=>"".concat(e.x,"|").concat(e.y)).join(" "),"\n "))},fe=e=>{e.preventDefault();const t='\n \n ');Dialog.show("exportTribeVillages",t),document.querySelector("#etvForm").addEventListener("submit",ue)},me=e=>{const t=document.createElement("td");t.colSpan="2",t.append(e);const n=document.createElement("tr");return n.appendChild(t),n},be=()=>{const e=document.createElement("a");e.href=b.buildTribeURL(w,D,$),e.innerHTML=G.action.linkToTWHelp,x.appendChild(me(e));const t=document.createElement("a");t.href="#",(0,r.setPage)(t,"1"),t.innerHTML=G.action.showEnnoblements,t.addEventListener("click",B),x.appendChild(me(t));const n=document.createElement("a");n.href="#",(0,r.setPage)(n,"1"),n.innerHTML=G.action.showHistory,n.addEventListener("click",J),x.appendChild(me(n));const a=document.createElement("a");a.href="#",(0,r.setPage)(a,"1"),a.innerHTML=G.action.showTribeChanges,a.addEventListener("click",le),x.appendChild(me(a));const i=document.createElement("a");i.href="#",i.innerHTML=G.action.showMembersGrowth,i.addEventListener("click",ie),x.appendChild(me(i));const o=document.createElement("a");o.href="#",o.innerHTML=G.action.generateMailingList,o.addEventListener("click",se),x.appendChild(me(o));const l=document.createElement("a");l.href="#",l.innerHTML=G.action.exportVillages,l.addEventListener("click",fe),x.appendChild(me(l))};!async function(){try{document.querySelector("#content_value > table:nth-child(3)").style.width="100%",be();const t=R();t&&t.tribe&&z(t);const n=await W();n&&z(n)}catch(e){console.log("extended tribe profile",e)}}();
+},{"date-fns/differenceInDays":"mdVI","./i18n/extendedTribeProfile":"iFDG","./libs/requestCreator":"Ph2E","./utils/pagination":"fCHX","./common/renderTodaysStats":"yrCm","./common/showEnnoblementsPopup":"vNT1","./common/showHistoryPopup":"kEDU","./utils/showPopup":"chDM","./utils/getIDFromURL":"tQUs","./utils/getCurrentServer":"DMkL","./utils/localStorage":"KWxH","./utils/formatDate":"V6Mf","./utils/getServerVersionCode":"J1Ly","./utils/twstats":"Syko","./utils/twhelp":"gvXE","./utils/tribalwars":"fHHP"}]},{},["r4nF"], null)
\ No newline at end of file
diff --git a/dist/quickbar/extendedVillageProfile.js b/dist/quickbar/extendedVillageProfile.js
index af4f52c..60b9add 100644
--- a/dist/quickbar/extendedVillageProfile.js
+++ b/dist/quickbar/extendedVillageProfile.js
@@ -9,7 +9,7 @@ parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcel
},{}],"tQUs":[function(require,module,exports) {
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=e=>parseInt(new URLSearchParams(e).get("id"));exports.default=e;
},{}],"fHHP":[function(require,module,exports) {
-"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.buildImgURL=exports.calcAttackDuration=exports.formatVillageName=exports.formatVillageURL=exports.formatPlayerURL=exports.formatTribeURL=void 0;const o=o=>window.location.origin+TribalWars.buildURL("",{screen:"info_ally",id:o});exports.formatTribeURL=o;const t=o=>window.location.origin+TribalWars.buildURL("",{screen:"info_player",id:o});exports.formatPlayerURL=t;const r=o=>window.location.origin+TribalWars.buildURL("",{screen:"info_village",id:o});exports.formatVillageURL=r;const e=function(){let o=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:500,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:500;const e="K"+String(r)[0]+String(t)[0];return"".concat(o," (").concat(t,"|").concat(r,") ").concat(e)};exports.formatVillageName=e;const i=(o,t,r)=>Math.round(o*r/t);exports.calcAttackDuration=i;const a=o=>image_base+o;exports.buildImgURL=a;
+"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.buildImgURL=exports.calcAttackDuration=exports.buildVillageName=exports.buildVillageURL=exports.buildPlayerURL=exports.buildTribeURL=void 0;const i=i=>window.location.origin+TribalWars.buildURL("",{screen:"info_ally",id:i});exports.buildTribeURL=i;const o=i=>window.location.origin+TribalWars.buildURL("",{screen:"info_player",id:i});exports.buildPlayerURL=o;const e=i=>window.location.origin+TribalWars.buildURL("",{screen:"info_village",id:i});exports.buildVillageURL=e;const t=function(){let i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:500,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:500;const t="K"+String(e)[0]+String(o)[0];return"".concat(i," (").concat(o,"|").concat(e,") ").concat(t)};exports.buildVillageName=t;const l=(i,o)=>Math.round(i*o);exports.calcAttackDuration=l;const r=i=>image_base+i;exports.buildImgURL=r;
},{}],"KX6P":[function(require,module,exports) {
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=require("./tribalwars"),t=t=>(0,e.buildImgURL)("unit/unit_".concat(t,".png"));exports.default=t;
},{"./tribalwars":"fHHP"}],"V6Mf":[function(require,module,exports) {
@@ -26,8 +26,8 @@ parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcel
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=u;var e=r(require("../toDate/index.js")),t=r(require("../_lib/requiredArgs/index.js"));function r(e){return e&&e.__esModule?e:{default:e}}function u(r,u){(0,t.default)(2,arguments);var i=(0,e.default)(r),d=(0,e.default)(u);return i.getTime()-d.getTime()}
},{"../toDate/index.js":"KYJg","../_lib/requiredArgs/index.js":"kK6Q"}],"oGJj":[function(require,module,exports) {
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=i;var e=t(require("../differenceInMilliseconds/index.js")),r=t(require("../_lib/requiredArgs/index.js"));function t(e){return e&&e.__esModule?e:{default:e}}var u=6e4;function i(t,i){(0,r.default)(2,arguments);var d=(0,e.default)(t,i)/u;return d>0?Math.floor(d):Math.ceil(d)}
-},{"../differenceInMilliseconds/index.js":"H70G","../_lib/requiredArgs/index.js":"kK6Q"}],"ATOB":[function(require,module,exports) {
-"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=t(require("date-fns/differenceInMinutes"));function t(e){return e&&e.__esModule?e:{default:e}}var r=(t,r)=>{let u=25+Math.abs((0,e.default)(t,new Date))*(r/60);return u>100&&(u=100),Math.floor(u)};exports.default=r;
+},{"../differenceInMilliseconds/index.js":"H70G","../_lib/requiredArgs/index.js":"kK6Q"}],"kcC2":[function(require,module,exports) {
+"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=t(require("date-fns/differenceInMinutes"));function t(e){return e&&e.__esModule?e:{default:e}}const r=(t,r)=>{let u=25+Math.abs((0,e.default)(t,new Date))*(r/60);return u>100&&(u=100),Math.floor(u)};var u=r;exports.default=u;
},{"date-fns/differenceInMinutes":"oGJj"}],"J1Ly":[function(require,module,exports) {
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=function(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").substr(0,2)};exports.default=e;
},{}],"gvXE":[function(require,module,exports) {
@@ -37,7 +37,7 @@ parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcel
},{}],"chDM":[function(require,module,exports) {
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.POPUP_SELECTOR=void 0;const e=".popup_helper",t="#inline_popup";exports.POPUP_SELECTOR=t;var o=function(){let{e:e,title:o,html:n,id:l}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const p=document.querySelector(t);p&&(p.style.width="auto",p.style.maxWidth="1000px"),p.classList.contains("show")?(p.querySelector("#inline_popup_title").innerHTML=o,p.querySelector("#inline_popup_content").innerHTML=n):inlinePopup(e,l,null,{offset_x:0,offset_y:0},n,o);const i=document.querySelector(".popup_helper");i&&(i.style.width="auto",i.style.position="fixed",i.style.zIndex="50001")};exports.default=o;
},{}],"vNT1":[function(require,module,exports) {
-"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var t=l(require("../i18n/showEnnoblementsPopup")),e=require("../utils/pagination"),n=l(require("../utils/showPopup")),a=l(require("../utils/formatDate")),o=require("../utils/tribalwars");function l(t){return t&&t.__esModule?t:{default:t}}const r="ennoblementsPagination",i=(0,t.default)(),c=(t,e)=>t?'').concat(t.name," (").concat(e?'').concat(e.tag,""):"-",") | "):"- | ";var d=function(t,l){let{limit:d=0,currentPage:s=1,onPageChange:u=(()=>{})}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const g=(0,e.generatePaginationItems)({total:l.total,limit:d,currentPage:s}),m='\n \n ').concat(g.join(""),'\n \n \n \n \n \n ').concat(i.date,"\n | \n \n ").concat(i.village,"\n | \n \n ").concat(i.newOwner,"\n | \n \n ").concat(i.oldOwner,"\n | \n \n ").concat(l.items.map(t=>{let e=""+"".concat((0,a.default)(t.ennobledAt)," | ");return t.village?e+='').concat((0,o.formatVillageName)(t.village.name,t.village.x,t.village.y)," | "):e+="- | ",e+=c(t.newOwner,t.newOwnerTribe),(e+=c(t.oldOwner,t.oldOwnerTribe))+" "}).join(""),"\n \n \n ");(0,n.default)({e:t,title:i.title,id:"ennoblements",html:m}),document.querySelectorAll("#ennoblementsPagination a").forEach(t=>{t.addEventListener("click",u)})};exports.default=d;
+"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=l(require("../i18n/showEnnoblementsPopup")),t=require("../utils/pagination"),n=l(require("../utils/showPopup")),r=l(require("../utils/formatDate")),a=i(require("../utils/tribalwars"));function o(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return o=function(){return e},e}function i(e){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=o();if(t&&t.has(e))return t.get(e);var n={},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)){var i=r?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(n,a,i):n[a]=e[a]}return n.default=e,t&&t.set(e,n),n}function l(e){return e&&e.__esModule?e:{default:e}}const c="ennoblementsPagination",u=(0,e.default)(),d=(e,t)=>e?'').concat(e.name," (").concat(t?'').concat(t.tag,""):"-",") | "):"- | ";var s=function(e,o){let{limit:i=0,currentPage:l=1,onPageChange:s=(()=>{})}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const f=(0,t.generatePaginationItems)({total:o.total,limit:i,currentPage:l}),p='\n \n ').concat(f.join(""),'\n \n \n \n \n \n ').concat(u.date,"\n | \n \n ").concat(u.village,"\n | \n \n ").concat(u.newOwner,"\n | \n \n ").concat(u.oldOwner,"\n | \n \n ").concat(o.items.map(e=>{let t=""+"".concat((0,r.default)(e.ennobledAt)," | ");return e.village?t+='').concat(a.buildVillageName(e.village.name,e.village.x,e.village.y)," | "):t+="- | ",t+=d(e.newOwner,e.newOwnerTribe),(t+=d(e.oldOwner,e.oldOwnerTribe))+" "}).join(""),"\n \n \n ");(0,n.default)({e:e,title:u.title,id:"ennoblements",html:p}),document.querySelectorAll("#ennoblementsPagination a").forEach(e=>{e.addEventListener("click",s)})};exports.default=s;
},{"../i18n/showEnnoblementsPopup":"tKRp","../utils/pagination":"fCHX","../utils/showPopup":"chDM","../utils/formatDate":"V6Mf","../utils/tribalwars":"fHHP"}],"UdfQ":[function(require,module,exports) {
-"use strict";var e=m(require("./libs/requestCreator")),t=m(require("./i18n/extendedVillageProfile")),n=require("./utils/pagination"),r=m(require("./utils/getCurrentServer")),o=m(require("./utils/getIDFromURL")),i=m(require("./utils/buildUnitImgURL")),l=m(require("./utils/formatDate")),a=m(require("./utils/wait")),c=require("./utils/localStorage"),s=m(require("./utils/countLoyalty")),d=m(require("./utils/getServerVersionCode")),u=require("./utils/twhelp"),p=m(require("./common/showEnnoblementsPopup"));function m(e){return e&&e.__esModule?e:{default:e}}function f(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function h(e){for(var t=1;t table > tbody > tr > td:nth-child(1) > table:nth-child(2) > tbody"),$=document.querySelector("#content_value table.vis tbody");let j={};const A=(0,t.default)(),C=()=>(0,c.getItem)(E),D=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(0,c.setItem)(E,e)},L=e=>Math.abs(e.getTime()-(new Date).getTime())>864e5,_=async()=>{let t=C();return t.server&&!L(new Date(t.loadedAt))&&t.server.unitConfig&&t.server.config||((t=await(0,e.default)({query:S,variables:{key:y}})).loadedAt=new Date,D(t)),t.server},P=async()=>{return await(0,e.default)({query:v,variables:{server:y,filter:{villageID:[b]},sort:["ennobledAt DESC"],limit:1}})},T=async t=>{t.preventDefault();const r=(0,n.getPage)(t.target);if(!isNaN(r)){const n=await(0,e.default)({query:w,variables:{filter:{villageID:[b]},offset:15*(r-1),limit:15,sort:["ennobledAt DESC"],server:y}});(0,p.default)(t,n.ennoblements,{currentPage:r,limit:15,onPageChange:T})}},k=e=>{const t=[];let n=0;for(let r in e)n+=e[r]*j.unitConfig[r].pop,t.push("".concat(e[r].toLocaleString()," | "));return t.push("".concat(n.toLocaleString()," | ")),t},I=async e=>{e.preventDefault();const t=[],n={};document.querySelectorAll('span.command_hover_details[data-command-type="support"]').forEach(e=>{const r=parseInt(e.getAttribute("data-command-id"));e.classList.contains("commandicon-ally")?n[r]=!0:n[r]=!1,t.push(r)});const r={spear:0,sword:0,axe:0,archer:0,spy:0,light:0,marcher:0,heavy:0,ram:0,catapult:0,knight:0,snob:0},o=h({},r),l=h({},r);for(let i=0;i").concat(i," / ").concat(t.length,""));const e=t[i],c=TribalWars.buildURL("",{screen:"info_command",ajax:"details",id:e});try{const t=await fetch(c),{units:i}=await t.json();if(i)for(let a in r){const t=parseInt(i[a].count);n[e]?o[a]+=t:r[a]+=t,l[a]+=t}await(0,a.default)(200)}catch(m){console.log("count incoming support",m)}}const c=[" | "];for(let a in r)c.push(' | '));c.push("".concat(A.pop," | "));const s=["".concat(A.mySupport," | "),...k(r)],d=["".concat(A.allySupport," | "),...k(o)],u=["".concat(A.total," | "),...k(l)];Dialog.show("incomingSupport",'\n \n \n \n '.concat(c.join(""),"\n \n \n ").concat(s.join(""),"\n \n \n ").concat(d.join(""),"\n \n \n ").concat(u.join(""),"\n \n \n \n "));const p=document.querySelector(".popup_box");p&&(p.style.width="auto",p.style.maxWidth="900px")},x=e=>{const t=document.createElement("td");t.colSpan="2",t.append(e);const n=document.createElement("tr");return n.appendChild(t),n},M=()=>{const e=document.createElement("a");e.href=(0,u.buildVillageURL)((0,d.default)(y),y,b),e.innerHTML=A.action.linkToTWHelp,O.appendChild(x(e));const t=document.createElement("a");t.href="#",(0,n.setPage)(t,"1"),t.innerHTML=A.action.showEnnoblements,t.addEventListener("click",T),O.appendChild(x(t));const r=document.createElement("a");r.href="#",r.innerHTML=A.action.countIncomingSupport,r.addEventListener("click",I),O.appendChild(x(r))},H=e=>{let{title:t,data:n,id:r}=e,o=document.querySelector("#"+r);o||((o=document.createElement("tr")).id=r,o.appendChild(document.createElement("td")),o.appendChild(document.createElement("td")),$.append(o)),o.children[0].innerHTML=t,o.children[1].innerHTML=n},U=()=>{const e=document.querySelectorAll("#content_value > div tbody tr"),t=[];if(0===e.length)throw new Error;e[0].querySelectorAll(".unit_link").forEach(()=>{t.push(0)});for(let n=1;n{t[n]+=parseInt(e.innerHTML)})}return t},R=function(){let{config:e,ennoblements:t}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const n=t&&Array.isArray(t.items)&&t.items[0]?t.items[0]:void 0;H({id:"loyalty",title:"".concat(A.possibleLoyalty,":"),data:n?(0,s.default)(new Date(n.ennobledAt),e.speed):100}),H({id:"ennobledAt",title:"".concat(A.ennobledAt,":"),data:n?(0,l.default)(n.ennobledAt):A.never});try{const e=U(),t=document.createElement("tr");t.style.textAlign="center",t.style.fontWeight="bold",t.appendChild(document.createElement("td")),e.forEach(e=>{const n=document.createElement("td");n.innerHTML=e,t.appendChild(n)}),document.querySelector("#content_value > div tbody").appendChild(t)}catch(r){}};!async function(){try{const t=await P();j=await _(),R({config:j.config,ennoblements:t.ennoblements}),M()}catch(e){console.log("extended village profile",e)}}();
-},{"./libs/requestCreator":"Ph2E","./i18n/extendedVillageProfile":"LNef","./utils/pagination":"fCHX","./utils/getCurrentServer":"DMkL","./utils/getIDFromURL":"tQUs","./utils/buildUnitImgURL":"KX6P","./utils/formatDate":"V6Mf","./utils/wait":"oUdd","./utils/localStorage":"KWxH","./utils/countLoyalty":"ATOB","./utils/getServerVersionCode":"J1Ly","./utils/twhelp":"gvXE","./common/showEnnoblementsPopup":"vNT1"}]},{},["UdfQ"], null)
\ No newline at end of file
+"use strict";var e=g(require("./libs/requestCreator")),t=g(require("./i18n/extendedVillageProfile")),n=require("./utils/pagination"),r=g(require("./utils/getCurrentServer")),o=g(require("./utils/getIDFromURL")),i=g(require("./utils/buildUnitImgURL")),l=g(require("./utils/formatDate")),a=g(require("./utils/wait")),c=require("./utils/localStorage"),s=g(require("./utils/calcLoyalty")),u=g(require("./utils/getServerVersionCode")),d=m(require("./utils/twhelp")),p=g(require("./common/showEnnoblementsPopup"));function f(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return f=function(){return e},e}function m(e){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=f();if(t&&t.has(e))return t.get(e);var n={},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if(Object.prototype.hasOwnProperty.call(e,o)){var i=r?Object.getOwnPropertyDescriptor(e,o):null;i&&(i.get||i.set)?Object.defineProperty(n,o,i):n[o]=e[o]}return n.default=e,t&&t.set(e,n),n}function g(e){return e&&e.__esModule?e:{default:e}}function h(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function y(e){for(var t=1;t table > tbody > tr > td:nth-child(1) > table:nth-child(2) > tbody"),P=document.querySelector("#content_value table.vis tbody");let $={};const A=(0,t.default)(),C=()=>(0,c.getItem)(j),L=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(0,c.setItem)(j,e)},_=e=>Math.abs(e.getTime()-(new Date).getTime())>864e5,k=async()=>{let t=C();return t.server&&!_(new Date(t.loadedAt))&&t.server.unitConfig&&t.server.config||((t=await(0,e.default)({query:E,variables:{key:v}})).loadedAt=new Date,L(t)),t.server},T=async()=>{return await(0,e.default)({query:O,variables:{server:v,filter:{villageID:[w]},sort:["ennobledAt DESC"],limit:1}})},I=async t=>{t.preventDefault();const r=(0,n.getPage)(t.target);if(!isNaN(r)){const n=await(0,e.default)({query:q,variables:{filter:{villageID:[w]},offset:15*(r-1),limit:15,sort:["ennobledAt DESC"],server:v}});(0,p.default)(t,n.ennoblements,{currentPage:r,limit:15,onPageChange:I})}},M=e=>{const t=[];let n=0;for(let r in e)n+=e[r]*$.unitConfig[r].pop,t.push("".concat(e[r].toLocaleString()," | "));return t.push("".concat(n.toLocaleString()," | ")),t},x=async e=>{e.preventDefault();const t=[],n={};document.querySelectorAll('span.command_hover_details[data-command-type="support"]').forEach(e=>{const r=parseInt(e.getAttribute("data-command-id"));e.classList.contains("commandicon-ally")?n[r]=!0:n[r]=!1,t.push(r)});const r={spear:0,sword:0,axe:0,archer:0,spy:0,light:0,marcher:0,heavy:0,ram:0,catapult:0,knight:0,snob:0},o=y({},r),l=y({},r);for(let i=0;i").concat(i," / ").concat(t.length,""));const e=t[i],c=TribalWars.buildURL("",{screen:"info_command",ajax:"details",id:e});try{const t=await fetch(c),{units:i}=await t.json();if(i)for(let a in r){const t=parseInt(i[a].count);n[e]?o[a]+=t:r[a]+=t,l[a]+=t}await(0,a.default)(200)}catch(f){console.log("count incoming support",f)}}const c=[" | "];for(let a in r)c.push(' | '));c.push("".concat(A.pop," | "));const s=["".concat(A.mySupport," | "),...M(r)],u=["".concat(A.allySupport," | "),...M(o)],d=["".concat(A.total," | "),...M(l)];Dialog.show("incomingSupport",'\n \n \n \n '.concat(c.join(""),"\n \n \n ").concat(s.join(""),"\n \n \n ").concat(u.join(""),"\n \n \n ").concat(d.join(""),"\n \n \n \n "));const p=document.querySelector(".popup_box");p&&(p.style.width="auto",p.style.maxWidth="900px")},H=e=>{const t=document.createElement("td");t.colSpan="2",t.append(e);const n=document.createElement("tr");return n.appendChild(t),n},W=()=>{const e=document.createElement("a");e.href=d.buildVillageURL((0,u.default)(v),v,w),e.innerHTML=A.action.linkToTWHelp,D.appendChild(H(e));const t=document.createElement("a");t.href="#",(0,n.setPage)(t,"1"),t.innerHTML=A.action.showEnnoblements,t.addEventListener("click",I),D.appendChild(H(t));const r=document.createElement("a");r.href="#",r.innerHTML=A.action.countIncomingSupport,r.addEventListener("click",x),D.appendChild(H(r))},U=e=>{let{title:t,data:n,id:r}=e,o=document.querySelector("#"+r);o||((o=document.createElement("tr")).id=r,o.appendChild(document.createElement("td")),o.appendChild(document.createElement("td")),P.append(o)),o.children[0].innerHTML=t,o.children[1].innerHTML=n},R=()=>{const e=document.querySelectorAll("#content_value > div tbody tr"),t=[];if(0===e.length)throw new Error;e[0].querySelectorAll(".unit_link").forEach(()=>{t.push(0)});for(let n=1;n{t[n]+=parseInt(e.innerHTML)})}return t},F=function(){let{config:e,ennoblements:t}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const n=t&&Array.isArray(t.items)&&t.items[0]?t.items[0]:void 0;U({id:"loyalty",title:"".concat(A.possibleLoyalty,":"),data:n?(0,s.default)(new Date(n.ennobledAt),e.speed):100}),U({id:"ennobledAt",title:"".concat(A.ennobledAt,":"),data:n?(0,l.default)(n.ennobledAt):A.never});try{const e=R(),t=document.createElement("tr");t.style.textAlign="center",t.style.fontWeight="bold",t.appendChild(document.createElement("td")),e.forEach(e=>{const n=document.createElement("td");n.innerHTML=e,t.appendChild(n)}),document.querySelector("#content_value > div tbody").appendChild(t)}catch(r){}};!async function(){try{const t=await T();$=await k(),F({config:$.config,ennoblements:t.ennoblements}),W()}catch(e){console.log("extended village profile",e)}}();
+},{"./libs/requestCreator":"Ph2E","./i18n/extendedVillageProfile":"LNef","./utils/pagination":"fCHX","./utils/getCurrentServer":"DMkL","./utils/getIDFromURL":"tQUs","./utils/buildUnitImgURL":"KX6P","./utils/formatDate":"V6Mf","./utils/wait":"oUdd","./utils/localStorage":"KWxH","./utils/calcLoyalty":"kcC2","./utils/getServerVersionCode":"J1Ly","./utils/twhelp":"gvXE","./common/showEnnoblementsPopup":"vNT1"}]},{},["UdfQ"], null)
\ No newline at end of file
diff --git a/dist/quickbar/latestEnnoblements.js b/dist/quickbar/latestEnnoblements.js
index 266b6e2..fcdfe05 100644
--- a/dist/quickbar/latestEnnoblements.js
+++ b/dist/quickbar/latestEnnoblements.js
@@ -7,7 +7,7 @@ parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcel
},{}],"V6Mf":[function(require,module,exports) {
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=(e,t)=>new Date(e).toLocaleDateString(window.game_data.locale.replace("_","-"),t||{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"});exports.default=e;
},{}],"fHHP":[function(require,module,exports) {
-"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.buildImgURL=exports.calcAttackDuration=exports.formatVillageName=exports.formatVillageURL=exports.formatPlayerURL=exports.formatTribeURL=void 0;const o=o=>window.location.origin+TribalWars.buildURL("",{screen:"info_ally",id:o});exports.formatTribeURL=o;const t=o=>window.location.origin+TribalWars.buildURL("",{screen:"info_player",id:o});exports.formatPlayerURL=t;const r=o=>window.location.origin+TribalWars.buildURL("",{screen:"info_village",id:o});exports.formatVillageURL=r;const e=function(){let o=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:500,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:500;const e="K"+String(r)[0]+String(t)[0];return"".concat(o," (").concat(t,"|").concat(r,") ").concat(e)};exports.formatVillageName=e;const i=(o,t,r)=>Math.round(o*r/t);exports.calcAttackDuration=i;const a=o=>image_base+o;exports.buildImgURL=a;
+"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.buildImgURL=exports.calcAttackDuration=exports.buildVillageName=exports.buildVillageURL=exports.buildPlayerURL=exports.buildTribeURL=void 0;const i=i=>window.location.origin+TribalWars.buildURL("",{screen:"info_ally",id:i});exports.buildTribeURL=i;const o=i=>window.location.origin+TribalWars.buildURL("",{screen:"info_player",id:i});exports.buildPlayerURL=o;const e=i=>window.location.origin+TribalWars.buildURL("",{screen:"info_village",id:i});exports.buildVillageURL=e;const t=function(){let i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:500,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:500;const t="K"+String(e)[0]+String(o)[0];return"".concat(i," (").concat(o,"|").concat(e,") ").concat(t)};exports.buildVillageName=t;const l=(i,o)=>Math.round(i*o);exports.calcAttackDuration=l;const r=i=>image_base+i;exports.buildImgURL=r;
},{}],"KWxH":[function(require,module,exports) {
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.setItem=exports.getItem=void 0;const e=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const o=localStorage.getItem(e);let s=t;return o&&(s=JSON.parse(o)),s};exports.getItem=e;const t=(e,t)=>{localStorage.setItem(e,JSON.stringify(t))};exports.setItem=t;
},{}],"gvXE":[function(require,module,exports) {
@@ -17,5 +17,5 @@ parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcel
},{}],"FxgK":[function(require,module,exports) {
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;const e={pl_PL:{showLatestEnnoblements:"Pokaż najnowsze przejęcia",village:"Wioska",newOwner:"Nowy właściciel",newOwnerTribe:"Plemię nowego właściciela",oldOwner:"Poprzedni właściciel",oldOwnerTribe:"Plemię poprzedniego właściciela",date:"Data",filters:"Filtry",apply:"Zastosuj",ennoblements:"Przejęcia",devNote:"Informacja od autora - Właśnie uruchomiłem nową stronę ze statystykami, nie zapomnij jej sprawdzić :)."},en_DK:{showLatestEnnoblements:"Show latest ennoblements",village:"Village",newOwner:"New owner",newOwnerTribe:"New owner tribe",oldOwner:"Old owner",oldOwnerTribe:"Old owner tribe",filters:"Filters",date:"Date",apply:"Apply",ennoblements:"Ennoblements",devNote:"Information from the author - I've just launched a new stat tracking website, don't forget to check it out :)."}};var n=()=>e[window.game_data.locale]||e.en_DK;exports.default=n;
},{}],"hkfB":[function(require,module,exports) {
-"use strict";var e=s(require("./libs/requestCreator")),t=s(require("./utils/showPopup")),n=s(require("./utils/getCurrentServer")),r=s(require("./utils/formatDate")),o=require("./utils/tribalwars"),a=require("./utils/localStorage"),l=require("./utils/twhelp"),i=s(require("./utils/getServerVersionCode")),c=s(require("./i18n/latestEnnoblements"));function s(e){return e&&e.__esModule?e:{default:e}}function d(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function u(e){for(var t=1;t(0,a.getItem)(f),E=()=>(0,a.getItem)(h),L=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(0,a.setItem)(f,e)},T=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(0,a.setItem)(h,e)},j=()=>(0,e.default)({query:g,variables:{server:w}}).then(e=>(L(e),new Promise(t=>t(e)))),q=(e,t)=>e&&e.name.toLowerCase().includes(t.toLowerCase()),P=(e,t)=>e&&e.tribe&&(e.tribe.name.toLowerCase().includes(t.toLowerCase())||e.tribe.tag.toLowerCase().includes(t.toLowerCase())),_=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],{newOwner:t,newOwnerTribe:n,oldOwner:r,oldOwnerTribe:o}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e.filter(e=>!(t&&!q(e.newOwner,t))&&(!(n&&!P(e.newOwner,n))&&(!(r&&!q(e.oldOwner,r))&&!(o&&!P(e.oldOwner,o)))))},C=(e,t)=>{e.preventDefault();const n=u(u({},v),{},{newOwner:e.target[0].value,newOwnerTribe:e.target[1].value,oldOwner:e.target[2].value,oldOwnerTribe:e.target[3].value});document.querySelector("#".concat(p," tbody")).innerHTML=I(_(t,n)).join(""),T(n)},S=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];document.querySelector("#sle_form").addEventListener("submit",t=>{C(t,e)})},k=e=>e&&e.name?'').concat(e.name," (").concat(e.tribe&&e.tribe.tag?'').concat(e.tribe.tag,""):"-",")"):"-",D=e=>'').concat((0,o.formatVillageName)(e.name,e.x,e.y),""),I=e=>e.reverse().map(e=>"\n ".concat(D(e.village)," | \n ").concat(k(e.newOwner)," | \n ").concat(k(e.oldOwner)," | \n ").concat((0,r.default)(e.ennobledAt)," | \n ")),A=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const r=u(u({},v),n),o='\n \n \n \n \n ').concat(y.village," | \n ").concat(y.newOwner," | \n ").concat(y.oldOwner," | \n ").concat(y.date," | \n \n \n \n ").concat(I(_(e,r)).join(""),"\n \n \n ");(0,t.default)({e:{clientY:60},title:y.ennoblements,id:"ennoblements",html:o}),S(e)},R=async()=>{try{const t=x(),n=E();Array.isArray(t.liveEnnoblements)&&t.liveEnnoblements.length>0&&A(t.liveEnnoblements,n);const{liveEnnoblements:r}=await j();A(r,n)}catch(e){console.log("latestEnnoblements",e)}},U=()=>{const e=document.createElement("div");e.style.position="fixed",e.style.top="5px",e.style.left="4px",e.style.zIndex="50000";const t=document.createElement("a");t.innerHTML=''),t.title=y.showLatestEnnoblements,t.style.cursor="pointer",t.addEventListener("click",R),e.append(t),document.body.appendChild(e)};U();
+"use strict";var e=d(require("./libs/requestCreator")),t=d(require("./utils/showPopup")),n=d(require("./utils/getCurrentServer")),r=d(require("./utils/formatDate")),o=u(require("./utils/tribalwars")),l=require("./utils/localStorage"),a=u(require("./utils/twhelp")),i=d(require("./utils/getServerVersionCode")),c=d(require("./i18n/latestEnnoblements"));function s(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return s=function(){return e},e}function u(e){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=s();if(t&&t.has(e))return t.get(e);var n={},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if(Object.prototype.hasOwnProperty.call(e,o)){var l=r?Object.getOwnPropertyDescriptor(e,o):null;l&&(l.get||l.set)?Object.defineProperty(n,o,l):n[o]=e[o]}return n.default=e,t&&t.set(e,n),n}function d(e){return e&&e.__esModule?e:{default:e}}function b(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function w(e){for(var t=1;t(0,l.getItem)(y),x=()=>(0,l.getItem)(v),E=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(0,l.setItem)(y,e)},L=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(0,l.setItem)(v,e)},T=()=>(0,e.default)({query:h,variables:{server:f}}).then(e=>(E(e),new Promise(t=>t(e)))),q=(e,t)=>e&&e.name.toLowerCase().includes(t.toLowerCase()),C=(e,t)=>e&&e.tribe&&(e.tribe.name.toLowerCase().includes(t.toLowerCase())||e.tribe.tag.toLowerCase().includes(t.toLowerCase())),S=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],{newOwner:t,newOwnerTribe:n,oldOwner:r,oldOwnerTribe:o}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e.filter(e=>!(t&&!q(e.newOwner,t))&&(!(n&&!C(e.newOwner,n))&&(!(r&&!q(e.oldOwner,r))&&!(o&&!C(e.oldOwner,o)))))},k=(e,t)=>{e.preventDefault();const n=w(w({},j),{},{newOwner:e.target[0].value,newOwnerTribe:e.target[1].value,oldOwner:e.target[2].value,oldOwnerTribe:e.target[3].value});document.querySelector("#".concat(O," tbody")).innerHTML=A(S(t,n)).join(""),L(n)},D=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];document.querySelector("#sle_form").addEventListener("submit",t=>{k(t,e)})},M=e=>e&&e.name?'').concat(e.name," (").concat(e.tribe&&e.tribe.tag?'').concat(e.tribe.tag,""):"-",")"):"-",I=e=>'').concat(o.buildVillageName(e.name,e.x,e.y),""),A=e=>e.reverse().map(e=>"\n ".concat(I(e.village)," | \n ").concat(M(e.newOwner)," | \n ").concat(M(e.oldOwner)," | \n ").concat((0,r.default)(e.ennobledAt)," | \n ")),R=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const r=w(w({},j),n),o='\n \n \n \n \n ').concat(P.village," | \n ").concat(P.newOwner," | \n ").concat(P.oldOwner," | \n ").concat(P.date," | \n \n \n \n ").concat(A(S(e,r)).join(""),"\n \n \n ");(0,t.default)({e:{clientY:60},title:P.ennoblements,id:"ennoblements",html:o}),D(e)},U=async()=>{try{const t=_(),n=x();Array.isArray(t.liveEnnoblements)&&t.liveEnnoblements.length>0&&R(t.liveEnnoblements,n);const{liveEnnoblements:r}=await T();R(r,n)}catch(e){console.log("latestEnnoblements",e)}},W=()=>{const e=document.createElement("div");e.style.position="fixed",e.style.top="5px",e.style.left="4px",e.style.zIndex="50000";const t=document.createElement("a");t.innerHTML=''),t.title=P.showLatestEnnoblements,t.style.cursor="pointer",t.addEventListener("click",U),e.append(t),document.body.appendChild(e)};W();
},{"./libs/requestCreator":"Ph2E","./utils/showPopup":"chDM","./utils/getCurrentServer":"DMkL","./utils/formatDate":"V6Mf","./utils/tribalwars":"fHHP","./utils/localStorage":"KWxH","./utils/twhelp":"gvXE","./utils/getServerVersionCode":"J1Ly","./i18n/latestEnnoblements":"FxgK"}]},{},["hkfB"], null)
\ No newline at end of file
diff --git a/dist/quickbar/mapCoordsPicker.js b/dist/quickbar/mapCoordsPicker.js
index b4ded7f..3d95649 100644
--- a/dist/quickbar/mapCoordsPicker.js
+++ b/dist/quickbar/mapCoordsPicker.js
@@ -5,5 +5,5 @@ parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcel
},{}],"KWxH":[function(require,module,exports) {
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.setItem=exports.getItem=void 0;const e=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const o=localStorage.getItem(e);let s=t;return o&&(s=JSON.parse(o)),s};exports.getItem=e;const t=(e,t)=>{localStorage.setItem(e,JSON.stringify(t))};exports.setItem=t;
},{}],"FWa8":[function(require,module,exports) {
-"use strict";var e=n(require("./i18n/mapCoordsPicker")),t=n(require("./utils/hexToRGB")),r=require("./utils/localStorage");function n(e){return e&&e.__esModule?e:{default:e}}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function a(e){for(var t=1;t h2");let i,p,u,d,g=(0,r.getItem)(c,{started:!1,groups:{All:{villages:[],color:"#ffffff"}},selectedGroup:"All"});const m=(0,e.default)(),v=()=>{(0,r.setItem)(c,g)},f=(e,t)=>{return TWMap.villages[parseInt("".concat(e).concat(t))]?TWMap.villages[parseInt("".concat(e).concat(t))].id:NaN},y=function(e,r){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"transparent";const o=f(e,r);if(isNaN(o))return;const a=document.querySelector("#map_village_"+o);if(a){let e=document.querySelector("#map_village_overlay_"+o);e||((e=document.createElement("div")).id="map_village_overlay_"+o,e.style.cssText=document.defaultView.getComputedStyle(a,"").cssText,a.parentElement.appendChild(e)),e.style.backgroundColor="transparent"!==n?"rgba(".concat((0,t.default)(n.replace("#","")).join(", "),", 0.7)"):n}},b=e=>{for(let t in g.groups){if(t===g.selectedGroup)return;g.groups[t].villages=g.groups[t].villages.filter(t=>t.key!==e)}},h=(e,t,r)=>{r.preventDefault();const n="".concat(e,"|").concat(t);g.groups[g.selectedGroup].villages.some(e=>e.key===n)?(g.groups[g.selectedGroup].villages=g.groups[g.selectedGroup].villages.filter(e=>e.key!==n),y(e,t)):(g.groups[g.selectedGroup].villages=[...g.groups[g.selectedGroup].villages,{x:e,y:t,key:n}],y(e,t,g.groups[g.selectedGroup].color),b(n))},k=(e,t)=>{const r=t&&t.name!==g.selectedGroup,n='\n \n \n \n ").concat(t?'"):"","\n ").concat(r?'"):"","\n "),o=document.createElement("form");if(o.innerHTML=n,o.addEventListener("submit",e=>{e.preventDefault(),t?(t.name===g.selectedGroup&&(g.selectedGroup=e.target[1].value),w(t.name,e.target[0].value),g.groups[e.target[1].value]=a(a({},g.groups[t.name]),{},{color:e.target[0].value}),t.name!==e.target[1].value&&delete g.groups[t.name]):g.groups[e.target[1].value]={color:e.target[0].value,villages:[]},_()}),t){o.querySelector('button[type="button"]').addEventListener("click",()=>{if(g.selectedGroup===t.name)return UI.ErrorMessage(m.cannotDeleteSelectedGroup);w(t.name,"transparent"),delete g.groups[t.name],o.remove()});const e=o.querySelector(".selectButton");e&&e.addEventListener("click",e=>{g.selectedGroup=t.name,_()})}e.appendChild(o)},_=()=>{p.innerHTML="";for(let e in g.groups)k(p,a(a({},g.groups[e]),{},{name:e}));k(p)},M=()=>{const e=[];for(let r in g.groups)e.push('\n '.concat(r,"\n \n "));const t="\n ".concat(e.join(""),"\n ");Dialog.show(m.exportedVillages,t)},T=()=>{const e=document.createElement("button");e.innerHTML=m.export,e.addEventListener("click",M),u.appendChild(e)},E=(e,t)=>{TWMap.mapHandler.__spawnSector(e,t),x()},C=()=>{TWMap.map.handler.__onClick=TWMap.map.handler.onClick,TWMap.map.handler.onClick=h,TWMap.mapHandler.__spawnSector=TWMap.map.handler.spawnSector,TWMap.mapHandler.spawnSector=E,i.innerHTML=m.stopCoordsPicker,T(),x(),_(),d=setInterval(v,500)},S=()=>{"function"==typeof TWMap.map.handler.__onClick&&(TWMap.map.handler.onClick=TWMap.map.handler.__onClick),"function"==typeof TWMap.map.handler.__spawnSector&&(TWMap.mapHandler.spawnSector=TWMap.map.handler.__spawnSector),i.innerHTML=m.startCoordsPicker,p.innerHTML="",u.innerHTML="",x("transparent"),d&&clearInterval(d);for(let e in g.groups)g.groups[e].villages=[]},O=()=>{g.started?S():C(),g.started=!g.started,v()},w=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";g.groups[e].villages.forEach(r=>{y(r.x,r.y,t||g.groups[e].color)})},x=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";for(let t in g.groups)w(t,e)},L=()=>{(i=document.createElement("button")).style.marginLeft="5px",i.innerHTML=g.started?m.stopCoordsPicker:m.startCoordsPicker,i.addEventListener("click",O),s.appendChild(i),p=document.createElement("div"),s.parentElement.insertBefore(p,s.nextSibling),u=document.createElement("div"),s.parentElement.insertBefore(u,s.nextSibling),g.started&&C()};!function(){try{(i=document.createElement("button")).style.marginLeft="5px",i.innerHTML=g.started?m.stopCoordsPicker:m.startCoordsPicker,i.addEventListener("click",O),s.appendChild(i),p=document.createElement("div"),s.parentElement.insertBefore(p,s.nextSibling),u=document.createElement("div"),s.parentElement.insertBefore(u,s.nextSibling),g.started&&C()}catch(e){console.log("Map Coords Picker",e)}}();
+"use strict";var e=n(require("./i18n/mapCoordsPicker")),t=n(require("./utils/hexToRGB")),r=require("./utils/localStorage");function n(e){return e&&e.__esModule?e:{default:e}}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function a(e){for(var t=1;t h2");let i,p,u,d,g=(0,r.getItem)(c,{started:!1,groups:{All:{villages:[],color:"#ffffff"}},selectedGroup:"All"});const m=(0,e.default)(),v=()=>{(0,r.setItem)(c,g)},f=(e,t)=>{const r=parseInt("".concat(e).concat(t),10);return TWMap.villages[r]?TWMap.villages[r].id:NaN},y=function(e,r){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"transparent";const o=f(e,r);if(isNaN(o))return;const a=document.querySelector("#map_village_"+o);if(a){let e=document.querySelector("#map_village_overlay_"+o);e||((e=document.createElement("div")).id="map_village_overlay_"+o,e.style.cssText=document.defaultView.getComputedStyle(a,"").cssText,a.parentElement.appendChild(e)),e.style.backgroundColor="transparent"!==n?"rgba(".concat((0,t.default)(n.replace("#","")).join(", "),", 0.7)"):n}},b=e=>{for(let t in g.groups){if(t===g.selectedGroup)return;g.groups[t].villages=g.groups[t].villages.filter(t=>t.key!==e)}},h=(e,t,r)=>{r.preventDefault();const n="".concat(e,"|").concat(t);g.groups[g.selectedGroup].villages.some(e=>e.key===n)?(g.groups[g.selectedGroup].villages=g.groups[g.selectedGroup].villages.filter(e=>e.key!==n),y(e,t)):(g.groups[g.selectedGroup].villages=[...g.groups[g.selectedGroup].villages,{x:e,y:t,key:n}],y(e,t,g.groups[g.selectedGroup].color),b(n))},k=(e,t)=>{const r=t&&t.name!==g.selectedGroup,n='\n \n \n \n ").concat(t?'"):"","\n ").concat(r?'"):"","\n "),o=document.createElement("form");if(o.innerHTML=n,o.addEventListener("submit",e=>{e.preventDefault(),t?(t.name===g.selectedGroup&&(g.selectedGroup=e.target[1].value),w(t.name,e.target[0].value),g.groups[e.target[1].value]=a(a({},g.groups[t.name]),{},{color:e.target[0].value}),t.name!==e.target[1].value&&delete g.groups[t.name]):g.groups[e.target[1].value]={color:e.target[0].value,villages:[]},_()}),t){o.querySelector('button[type="button"]').addEventListener("click",()=>{if(g.selectedGroup===t.name)return UI.ErrorMessage(m.cannotDeleteSelectedGroup);w(t.name,"transparent"),delete g.groups[t.name],o.remove()});const e=o.querySelector(".selectButton");e&&e.addEventListener("click",e=>{g.selectedGroup=t.name,_()})}e.appendChild(o)},_=()=>{p.innerHTML="";for(let e in g.groups)k(p,a(a({},g.groups[e]),{},{name:e}));k(p)},M=()=>{const e=[];for(let r in g.groups)e.push('\n '.concat(r,"\n \n "));const t="\n ".concat(e.join(""),"\n ");Dialog.show(m.exportedVillages,t)},T=()=>{const e=document.createElement("button");e.innerHTML=m.export,e.addEventListener("click",M),u.appendChild(e)},E=(e,t)=>{TWMap.mapHandler.__spawnSector(e,t),x()},C=()=>{TWMap.map.handler.__onClick=TWMap.map.handler.onClick,TWMap.map.handler.onClick=h,TWMap.mapHandler.__spawnSector=TWMap.map.handler.spawnSector,TWMap.mapHandler.spawnSector=E,i.innerHTML=m.stopCoordsPicker,T(),x(),_(),d=setInterval(v,500)},S=()=>{"function"==typeof TWMap.map.handler.__onClick&&(TWMap.map.handler.onClick=TWMap.map.handler.__onClick),"function"==typeof TWMap.map.handler.__spawnSector&&(TWMap.mapHandler.spawnSector=TWMap.map.handler.__spawnSector),i.innerHTML=m.startCoordsPicker,p.innerHTML="",u.innerHTML="",x("transparent"),d&&clearInterval(d);for(let e in g.groups)g.groups[e].villages=[]},O=()=>{g.started?S():C(),g.started=!g.started,v()},w=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";g.groups[e].villages.forEach(r=>{y(r.x,r.y,t||g.groups[e].color)})},x=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";for(let t in g.groups)w(t,e)},L=()=>{(i=document.createElement("button")).style.marginLeft="5px",i.innerHTML=g.started?m.stopCoordsPicker:m.startCoordsPicker,i.addEventListener("click",O),s.appendChild(i),p=document.createElement("div"),s.parentElement.insertBefore(p,s.nextSibling),u=document.createElement("div"),s.parentElement.insertBefore(u,s.nextSibling),g.started&&C()};!function(){try{(i=document.createElement("button")).style.marginLeft="5px",i.innerHTML=g.started?m.stopCoordsPicker:m.startCoordsPicker,i.addEventListener("click",O),s.appendChild(i),p=document.createElement("div"),s.parentElement.insertBefore(p,s.nextSibling),u=document.createElement("div"),s.parentElement.insertBefore(u,s.nextSibling),g.started&&C()}catch(e){console.log("Map Coords Picker",e)}}();
},{"./i18n/mapCoordsPicker":"jH35","./utils/hexToRGB":"Mk65","./utils/localStorage":"KWxH"}]},{},["FWa8"], null)
\ No newline at end of file
diff --git a/dist/quickbar/warStatsGenerator.js b/dist/quickbar/warStatsGenerator.js
index b4330e2..58cc74f 100644
--- a/dist/quickbar/warStatsGenerator.js
+++ b/dist/quickbar/warStatsGenerator.js
@@ -11,5 +11,5 @@ parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcel
},{}],"chDM":[function(require,module,exports) {
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.POPUP_SELECTOR=void 0;const e=".popup_helper",t="#inline_popup";exports.POPUP_SELECTOR=t;var o=function(){let{e:e,title:o,html:n,id:l}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const p=document.querySelector(t);p&&(p.style.width="auto",p.style.maxWidth="1000px"),p.classList.contains("show")?(p.querySelector("#inline_popup_title").innerHTML=o,p.querySelector("#inline_popup_content").innerHTML=n):inlinePopup(e,l,null,{offset_x:0,offset_y:0},n,o);const i=document.querySelector(".popup_helper");i&&(i.style.width="auto",i.style.position="fixed",i.style.zIndex="50001")};exports.default=o;
},{}],"H9GS":[function(require,module,exports) {
-"use strict";var e=c(require("./libs/requestCreator")),t=c(require("./i18n/warStatsGenerator")),n=c(require("./utils/getCurrentServer")),r=c(require("./utils/getServerVersionCode")),o=require("./utils/twhelp"),i=l(require("./utils/showPopup"));function a(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return a=function(){return e},e}function l(e){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=a();if(t&&t.has(e))return t.get(e);var n={},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if(Object.prototype.hasOwnProperty.call(e,o)){var i=r?Object.getOwnPropertyDescriptor(e,o):null;i&&(i.get||i.set)?Object.defineProperty(n,o,i):n[o]=e[o]}return n.default=e,t&&t.set(e,n),n}function c(e){return e&&e.__esModule?e:{default:e}}const s=(0,n.default)(),d="sideOneAdd",u="sideOneInputs",b="sideTwoAdd",m="sideTwoInputs",p="to",v="from",f="warStatsResult",g="\n query tribes($server: String!, $filter: TribeFilter) {\n tribes(server: $server, filter: $filter) {\n items {\n id\n tag\n }\n }\n }\n",y="\n query ennoblements($server: String!, $sideOneFilter: EnnoblementFilter, $sideTwoFilter: EnnoblementFilter) {\n sideOneEnnoblements: ennoblements(server: $server, filter: $sideOneFilter) {\n total\n }\n sideTwoEnnoblements: ennoblements(server: $server, filter: $sideTwoFilter) {\n total\n }\n }\n",T=(0,t.default)(),w=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;const n="\n \n ".concat(T.conquers,':\n ').concat(T.sideOne,": ").concat(e,' \n ').concat(T.sideTwo,": ").concat(t,' \n ').concat(T.difference,": ").concat(Math.abs(e-t),' \n
\n \n ');document.querySelector("#warStatsResult").innerHTML=n},E=e=>()=>{const t=document.createElement("div");t.innerHTML="\n \n \n \n "),t.querySelector("button").addEventListener("click",()=>{t.remove()}),e.appendChild(t)},O=async t=>{t.preventDefault();const n=[],r=[];if(t.target.querySelectorAll("#".concat("sideOneInputs"," input")).forEach(e=>{e.value.trim()&&n.push(e.value.trim())}),t.target.querySelectorAll("#".concat("sideTwoInputs"," input")).forEach(e=>{e.value.trim()&&r.push(e.value.trim())}),console.log("sideOneTags",n,"sideTwoTags",r),0===n.length)return UI.ErrorMessage(T.notEnoughTribesSideOne);if(0===r.length)return UI.ErrorMessage(T.notEnoughTribesSideTwo);const o=document.querySelectorAll("".concat(i.POPUP_SELECTOR," form #").concat("from"," input"));let a;2===o.length&&o[0].value&&o[1].value&&(a=new Date("".concat(o[0].value,"T").concat(o[1].value,":00")));const l=document.querySelectorAll("".concat(i.POPUP_SELECTOR," form #").concat("to"," input"));let c;2===l.length&&l[0].value&&l[1].value&&(c=new Date("".concat(l[0].value,"T").concat(l[1].value,":00"))),t.target.querySelectorAll("button").forEach(e=>{e.disabled=!0});try{const{tribes:t}=await(0,e.default)({query:g,variables:{server:s,filter:{tag:[...n,...r]}}}),o=t.items.filter(e=>n.some(t=>e.tag===t)).map(e=>e.id),i=t.items.filter(e=>r.some(t=>e.tag===t)).map(e=>e.id),{sideOneEnnoblements:l,sideTwoEnnoblements:u}=await(0,e.default)({query:y,variables:{server:s,sideOneFilter:{newOwnerTribeID:o,oldOwnerTribeID:i,ennobledAtGTE:a,ennobledAtLTE:c},sideTwoFilter:{newOwnerTribeID:i,oldOwnerTribeID:o,ennobledAtGTE:a,ennobledAtLTE:c}}});console.log("sideOneEnnoblements",l,"sideTwoEnnoblements",u),w(l.total,u.total)}catch(d){console.log("handleFormSubmit",d)}t.target.querySelectorAll("button").forEach(e=>{e.disabled=!1})},h=e=>{const t='\n \n ");(0,i.default)({title:T.warStatsGenerator,id:"warStats",html:t,e:e}),document.querySelector("".concat(i.POPUP_SELECTOR," form #").concat("sideOneAdd")).addEventListener("click",E(document.querySelector("#sideOneInputs"))),document.querySelector("".concat(i.POPUP_SELECTOR," form #").concat("sideTwoAdd")).addEventListener("click",E(document.querySelector("#sideTwoInputs"))),document.querySelector("".concat(i.POPUP_SELECTOR," form")).addEventListener("submit",O)},S=()=>{const e=document.createElement("div"),t=document.createElement("button");t.innerHTML=T.generateWarStats,t.addEventListener("click",h),e.appendChild(t),document.querySelector("#wars_ranking_table").parentElement.prepend(e)};!function(){try{S()}catch(e){console.log("war stats",e)}}();
+"use strict";var e=c(require("./libs/requestCreator")),t=c(require("./i18n/warStatsGenerator")),n=c(require("./utils/getCurrentServer")),r=c(require("./utils/getServerVersionCode")),o=l(require("./utils/twhelp")),i=l(require("./utils/showPopup"));function a(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return a=function(){return e},e}function l(e){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=a();if(t&&t.has(e))return t.get(e);var n={},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if(Object.prototype.hasOwnProperty.call(e,o)){var i=r?Object.getOwnPropertyDescriptor(e,o):null;i&&(i.get||i.set)?Object.defineProperty(n,o,i):n[o]=e[o]}return n.default=e,t&&t.set(e,n),n}function c(e){return e&&e.__esModule?e:{default:e}}const s=(0,n.default)(),d="sideOneAdd",u="sideOneInputs",b="sideTwoAdd",m="sideTwoInputs",p="to",v="from",f="warStatsResult",g="\n query tribes($server: String!, $filter: TribeFilter) {\n tribes(server: $server, filter: $filter) {\n items {\n id\n tag\n }\n }\n }\n",y="\n query ennoblements($server: String!, $sideOneFilter: EnnoblementFilter, $sideTwoFilter: EnnoblementFilter) {\n sideOneEnnoblements: ennoblements(server: $server, filter: $sideOneFilter) {\n total\n }\n sideTwoEnnoblements: ennoblements(server: $server, filter: $sideTwoFilter) {\n total\n }\n }\n",T=(0,t.default)(),w=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;const n="\n \n ".concat(T.conquers,':\n ').concat(T.sideOne,": ").concat(e,' \n ').concat(T.sideTwo,": ").concat(t,' \n ').concat(T.difference,": ").concat(Math.abs(e-t),' \n
\n \n ');document.querySelector("#warStatsResult").innerHTML=n},E=e=>()=>{const t=document.createElement("div");t.innerHTML="\n \n \n \n "),t.querySelector("button").addEventListener("click",()=>{t.remove()}),e.appendChild(t)},O=async t=>{t.preventDefault();const n=[],r=[];if(t.target.querySelectorAll("#".concat("sideOneInputs"," input")).forEach(e=>{e.value.trim()&&n.push(e.value.trim())}),t.target.querySelectorAll("#".concat("sideTwoInputs"," input")).forEach(e=>{e.value.trim()&&r.push(e.value.trim())}),console.log("sideOneTags",n,"sideTwoTags",r),0===n.length)return UI.ErrorMessage(T.notEnoughTribesSideOne);if(0===r.length)return UI.ErrorMessage(T.notEnoughTribesSideTwo);const o=document.querySelectorAll("".concat(i.POPUP_SELECTOR," form #").concat("from"," input"));let a;2===o.length&&o[0].value&&o[1].value&&(a=new Date("".concat(o[0].value,"T").concat(o[1].value,":00")));const l=document.querySelectorAll("".concat(i.POPUP_SELECTOR," form #").concat("to"," input"));let c;2===l.length&&l[0].value&&l[1].value&&(c=new Date("".concat(l[0].value,"T").concat(l[1].value,":00"))),t.target.querySelectorAll("button").forEach(e=>{e.disabled=!0});try{const{tribes:t}=await(0,e.default)({query:g,variables:{server:s,filter:{tag:[...n,...r]}}}),o=t.items.filter(e=>n.some(t=>e.tag===t)).map(e=>e.id),i=t.items.filter(e=>r.some(t=>e.tag===t)).map(e=>e.id),{sideOneEnnoblements:l,sideTwoEnnoblements:u}=await(0,e.default)({query:y,variables:{server:s,sideOneFilter:{newOwnerTribeID:o,oldOwnerTribeID:i,ennobledAtGTE:a,ennobledAtLTE:c},sideTwoFilter:{newOwnerTribeID:i,oldOwnerTribeID:o,ennobledAtGTE:a,ennobledAtLTE:c}}});console.log("sideOneEnnoblements",l,"sideTwoEnnoblements",u),w(l.total,u.total)}catch(d){console.log("handleFormSubmit",d)}t.target.querySelectorAll("button").forEach(e=>{e.disabled=!1})},h=e=>{const t='\n \n ");(0,i.default)({title:T.warStatsGenerator,id:"warStats",html:t,e:e}),document.querySelector("".concat(i.POPUP_SELECTOR," form #").concat("sideOneAdd")).addEventListener("click",E(document.querySelector("#sideOneInputs"))),document.querySelector("".concat(i.POPUP_SELECTOR," form #").concat("sideTwoAdd")).addEventListener("click",E(document.querySelector("#sideTwoInputs"))),document.querySelector("".concat(i.POPUP_SELECTOR," form")).addEventListener("submit",O)},S=()=>{const e=document.createElement("div"),t=document.createElement("button");t.innerHTML=T.generateWarStats,t.addEventListener("click",h),e.appendChild(t),document.querySelector("#wars_ranking_table").parentElement.prepend(e)};!function(){try{S()}catch(e){console.log("war stats",e)}}();
},{"./libs/requestCreator":"Ph2E","./i18n/warStatsGenerator":"vPH5","./utils/getCurrentServer":"DMkL","./utils/getServerVersionCode":"J1Ly","./utils/twhelp":"gvXE","./utils/showPopup":"chDM"}]},{},["H9GS"], null)
\ No newline at end of file
diff --git a/dist/warStatsGenerator.js b/dist/warStatsGenerator.js
index 96c3e96..f64ffcc 100644
--- a/dist/warStatsGenerator.js
+++ b/dist/warStatsGenerator.js
@@ -338,7 +338,7 @@ var _getCurrentServer = _interopRequireDefault(require("./utils/getCurrentServer
var _getServerVersionCode = _interopRequireDefault(require("./utils/getServerVersionCode"));
-var _twhelp = require("./utils/twhelp");
+var twhelputils = _interopRequireWildcard(require("./utils/twhelp"));
var _showPopup = _interopRequireWildcard(require("./utils/showPopup"));
@@ -472,7 +472,7 @@ const handleFormSubmit = async e => {
};
const showWarStatsForm = e => {
- const html = "\n \n ");
+ const html = "\n \n ");
(0, _showPopup.default)({
title: translations.warStatsGenerator,
id: 'warStats',
diff --git a/src/bonusBarbarianVillageFinder.js b/src/bonusBarbarianVillageFinder.js
index 904d930..a197076 100644
--- a/src/bonusBarbarianVillageFinder.js
+++ b/src/bonusBarbarianVillageFinder.js
@@ -1,7 +1,7 @@
import requestCreator from './libs/requestCreator';
import getTranslations from './i18n/bonusBarbarianVillageFinder';
import getCurrentServer from './utils/getCurrentServer';
-import { formatVillageURL, formatVillageName } from './utils/tribalwars';
+import * as twutils from './utils/tribalwars';
import { calcDistanceBetweenTwoPoints } from './utils/math';
// ==UserScript==
@@ -116,8 +116,12 @@ const buildTableBodyHTML = (villages) => {
.map(
(village) => `
-
- ${formatVillageName(village.name, village.x, village.y)}
+
+ ${twutils.buildVillageName(
+ village.name,
+ village.x,
+ village.y
+ )}
|
diff --git a/src/common/showEnnoblementsPopup.js b/src/common/showEnnoblementsPopup.js
index 1404d27..d973d7b 100644
--- a/src/common/showEnnoblementsPopup.js
+++ b/src/common/showEnnoblementsPopup.js
@@ -5,22 +5,19 @@ import {
} from '../utils/pagination';
import showPopup from '../utils/showPopup';
import formatDate from '../utils/formatDate';
-import {
- formatTribeURL,
- formatPlayerURL as formatPlayerURLTribalWars,
- formatVillageName,
- formatVillageURL,
-} from '../utils/tribalwars';
+import * as twutils from '../utils/tribalwars';
const PAGINATION_CONTAINER_ID = 'ennoblementsPagination';
const translations = getTranslations();
const getPlayerTd = (player, tribe) => {
if (player) {
- return ` | ${
+ return ` | ${
player.name
} (${
- tribe ? `${tribe.tag}` : '-'
+ tribe
+ ? `${tribe.tag}`
+ : '-'
}) | `;
}
return '- | ';
@@ -61,9 +58,9 @@ export default (
let rowHTML =
' ' + `${formatDate(ennoblement.ennobledAt)} | `;
if (ennoblement.village) {
- rowHTML += `${formatVillageName(
+ )}">${twutils.buildVillageName(
ennoblement.village.name,
ennoblement.village.x,
ennoblement.village.y
diff --git a/src/common/showHistoryPopup.js b/src/common/showHistoryPopup.js
index 575a5c1..3f55563 100644
--- a/src/common/showHistoryPopup.js
+++ b/src/common/showHistoryPopup.js
@@ -6,7 +6,7 @@ import {
getContainerStyles,
} from '../utils/pagination';
import formatDate from '../utils/formatDate';
-import { formatTribeURL } from '../utils/tribalwars';
+import * as twutils from '../utils/tribalwars';
const PAGINATION_CONTAINER_ID = 'historyPagination';
const translations = getTranslations();
@@ -73,9 +73,9 @@ export default (
day: '2-digit',
})} | `;
if (!tribe && history.tribe) {
- rowHTML += `${
- history.tribe.tag
- } | `;
+ rowHTML += `${history.tribe.tag} | `;
} else if (!tribe) {
rowHTML += '- | ';
}
diff --git a/src/dailyAchievements.js b/src/dailyAchievements.js
index 2a1bd38..2194fa5 100644
--- a/src/dailyAchievements.js
+++ b/src/dailyAchievements.js
@@ -2,7 +2,7 @@ import format from 'date-fns/format';
import requestCreator from './libs/requestCreator';
import getTranslations from './i18n/dailyAchievments';
import { setItem, getItem } from './utils/localStorage';
-import { formatPlayerURL } from './utils/tribalwars';
+import * as twutils from './utils/tribalwars';
import getCurrentServer from './utils/getCurrentServer';
import getServerVersionCode from './utils/getServerVersionCode';
import { inTZ } from './utils/date';
@@ -134,7 +134,7 @@ const render = ({
${dailyPlayerStatsOrderedByScoreAtt.items
.map(
(item, index) =>
- `${index + 1}. ${
item.player.name
@@ -148,7 +148,7 @@ const render = ({
${dailyPlayerStatsOrderedByScoreDef.items
.map(
(item, index) =>
- `${index + 1}. ${
item.player.name
@@ -162,7 +162,7 @@ const render = ({
${dailyPlayerStatsOrderedByScoreSup.items
.map(
(item, index) =>
- `${index + 1}. ${
item.player.name
@@ -176,7 +176,7 @@ const render = ({
${dailyPlayerStatsOrderedByVillages.items
.map(
(item, index) =>
- `${index + 1}. ${
item.player.name
diff --git a/src/extendedMapPopup.js b/src/extendedMapPopup.js
index e43079d..7969d6b 100644
--- a/src/extendedMapPopup.js
+++ b/src/extendedMapPopup.js
@@ -7,14 +7,14 @@ import { calcDistanceBetweenTwoPoints } from './utils/math';
import buildUnitImgURL from './utils/buildUnitImgURL';
import { setItem, getItem } from './utils/localStorage';
import { calcAttackDuration } from './utils/tribalwars';
-import countLoyalty from './utils/countLoyalty';
+import calcLoyalty from './utils/calcLoyalty';
// ==UserScript==
// @name Extended map popup
// @namespace https://github.com/tribalwarshelp/scripts
// @updateURL https://raw.githubusercontent.com/tribalwarshelp/scripts/master/dist/extendedMapPopup.js
// @downloadURL https://raw.githubusercontent.com/tribalwarshelp/scripts/master/dist/extendedMapPopup.js
-// @version 0.6.4
+// @version 0.6.5
// @description Extended map popup
// @author Kichiyaki https://dawid-wysokinski.pl/
// @match *://*/game.php*screen=map*
@@ -226,11 +226,7 @@ const renderAdditionalInfo = (id, data, { config, unitConfig }) => {
${units
.map((unit, index) => {
return buildUnitArrivalInfo(
- calcAttackDuration(
- distance,
- config.unitSpeed * config.speed,
- unit.speed
- ),
+ calcAttackDuration(distance, unit.speed),
index
);
})
@@ -273,7 +269,7 @@ const renderAdditionalInfo = (id, data, { config, unitConfig }) => {
${
ennoblement
- ? countLoyalty(new Date(ennoblement.ennobledAt), config.speed)
+ ? calcLoyalty(new Date(ennoblement.ennobledAt), config.speed)
: 100
}
|
diff --git a/src/extendedPlayerProfile.js b/src/extendedPlayerProfile.js
index 14d9938..6f36395 100644
--- a/src/extendedPlayerProfile.js
+++ b/src/extendedPlayerProfile.js
@@ -16,7 +16,7 @@ import getIDFromURL from './utils/getIDFromURL';
import getCurrentServer from './utils/getCurrentServer';
import getServerVersionCode from './utils/getServerVersionCode';
import formatDate from './utils/formatDate';
-import { formatTribeURL } from './utils/tribalwars';
+import * as twutils from './utils/tribalwars';
import * as twhelputils from './utils/twhelp';
import { setItem, getItem } from './utils/localStorage';
@@ -530,14 +530,14 @@ const renderTribeChanges = (e, currentPage, tribeChanges) => {
let rowHTML =
' ' + `${formatDate(tribeChange.createdAt)} | `;
if (tribeChange.newTribe) {
- rowHTML += `${tribeChange.newTribe.tag} | `;
} else {
rowHTML += '- | ';
}
if (tribeChange.oldTribe) {
- rowHTML += `${tribeChange.oldTribe.tag} | `;
} else {
diff --git a/src/extendedTribeProfile.js b/src/extendedTribeProfile.js
index a7fac26..1ee7a1d 100644
--- a/src/extendedTribeProfile.js
+++ b/src/extendedTribeProfile.js
@@ -1,4 +1,3 @@
-import isURL from 'validator/lib/isURL';
import differenceInDays from 'date-fns/differenceInDays';
import getTranslations from './i18n/extendedTribeProfile';
import requestCreator from './libs/requestCreator';
@@ -17,9 +16,9 @@ import getCurrentServer from './utils/getCurrentServer';
import { setItem, getItem } from './utils/localStorage';
import formatDate from './utils/formatDate';
import getServerVersionCode from './utils/getServerVersionCode';
-import { formatPlayerURL } from './utils/twstats';
-import { buildPlayerURL, buildTribeURL } from './utils/twhelp';
-import { formatPlayerURL as formatPlayerURLTribalWars } from './utils/tribalwars';
+import * as twstatsutils from './utils/twstats';
+import * as twhelputils from './utils/twhelp';
+import * as twutils from './utils/tribalwars';
// ==UserScript==
// @name Extended tribe profile
@@ -304,8 +303,14 @@ const extendMembersData = (players) => {
[player.scoreTotal, player.rankTotal],
player.dailyGrowth,
[
- { link: buildPlayerURL(VERSION, SERVER, player.id), label: 'TWHelp' },
- { link: formatPlayerURL(SERVER, player.id), label: 'TWStats' },
+ {
+ link: twhelputils.buildPlayerURL(VERSION, SERVER, player.id),
+ label: 'TWHelp',
+ },
+ {
+ link: twstatsutils.buildPlayerURL(SERVER, player.id),
+ label: 'TWStats',
+ },
],
].forEach((data, index) => {
let td = tr.children[5 + index];
@@ -514,9 +519,7 @@ const buildMembersGrowthTBody = (stats) => {
${
player
- ? `${
- player.name
- }`
+ ? `${player.name}`
: '-'
}
|
@@ -641,7 +644,7 @@ const renderTribeChanges = (e, currentPage, tribeChanges) => {
let rowHTML =
' ' + `${formatDate(tribeChange.createdAt)} | `;
if (tribeChange.player) {
- rowHTML += `${tribeChange.player.name} | `;
} else {
@@ -851,7 +854,7 @@ const wrapAction = (action) => {
const renderActions = () => {
const linkToTWHelp = document.createElement('a');
- linkToTWHelp.href = buildTribeURL(VERSION, SERVER, TRIBE_ID);
+ linkToTWHelp.href = twhelputils.buildTribeURL(VERSION, SERVER, TRIBE_ID);
linkToTWHelp.innerHTML = translations.action.linkToTWHelp;
actionContainer.appendChild(wrapAction(linkToTWHelp));
diff --git a/src/extendedVillageProfile.js b/src/extendedVillageProfile.js
index 2275dc6..474da8e 100644
--- a/src/extendedVillageProfile.js
+++ b/src/extendedVillageProfile.js
@@ -7,9 +7,9 @@ import buildUnitImgURL from './utils/buildUnitImgURL';
import formatDate from './utils/formatDate';
import wait from './utils/wait';
import { setItem, getItem } from './utils/localStorage';
-import countLoyalty from './utils/countLoyalty';
+import calcLoyalty from './utils/calcLoyalty';
import getServerVersionCode from './utils/getServerVersionCode';
-import { buildVillageURL } from './utils/twhelp';
+import * as twhelputils from './utils/twhelp';
import showEnnoblementsPopup from './common/showEnnoblementsPopup';
// ==UserScript==
@@ -339,7 +339,7 @@ const wrapAction = (action) => {
const renderActions = () => {
const linkToTWHelp = document.createElement('a');
- linkToTWHelp.href = buildVillageURL(
+ linkToTWHelp.href = twhelputils.buildVillageURL(
getServerVersionCode(SERVER),
SERVER,
VILLAGE_ID
@@ -406,7 +406,7 @@ const renderAdditionalInfo = ({ config, ennoblements } = {}) => {
id: 'loyalty',
title: `${translations.possibleLoyalty}:`,
data: firstEnnoblement
- ? countLoyalty(new Date(firstEnnoblement.ennobledAt), config.speed)
+ ? calcLoyalty(new Date(firstEnnoblement.ennobledAt), config.speed)
: 100,
});
renderTr({
diff --git a/src/latestEnnoblements.js b/src/latestEnnoblements.js
index 39f7e61..fbcd8c4 100644
--- a/src/latestEnnoblements.js
+++ b/src/latestEnnoblements.js
@@ -2,14 +2,9 @@ import requestCreator from './libs/requestCreator';
import showPopup from './utils/showPopup';
import getCurrentServer from './utils/getCurrentServer';
import formatDate from './utils/formatDate';
-import {
- formatTribeURL,
- formatPlayerURL,
- formatVillageURL,
- formatVillageName,
-} from './utils/tribalwars';
+import * as twutils from './utils/tribalwars';
import { setItem, getItem } from './utils/localStorage';
-import { buildURLToServerPage } from './utils/twhelp';
+import * as twhelputils from './utils/twhelp';
import getServerVersionCode from './utils/getServerVersionCode';
import loadTranslations from './i18n/latestEnnoblements';
@@ -150,7 +145,7 @@ const handleFilterFormSubmit = (e, ennoblements) => {
};
document.querySelector(
`#${TABLE_ID} tbody`
- ).innerHTML = formatEnnoblementRows(
+ ).innerHTML = buildEnnoblementsRows(
filterEnnoblements(ennoblements, filters)
).join('');
cacheFilters(filters);
@@ -164,11 +159,11 @@ const addEventListeners = (ennoblements = []) => {
});
};
-const formatPlayerHTML = (player) => {
+const getPlayerHTML = (player) => {
return player && player.name
- ? `${player.name} (${
+ ? `${player.name} (${
player.tribe && player.tribe.tag
- ? `${
+ ? `${
player.tribe.tag
}`
: '-'
@@ -176,20 +171,18 @@ const formatPlayerHTML = (player) => {
: '-';
};
-const formatVillageHTML = (village) => {
- return `${formatVillageName(
- village.name,
- village.x,
- village.y
- )}`;
+const getVillageHTML = (village) => {
+ return `${twutils.buildVillageName(village.name, village.x, village.y)}`;
};
-const formatEnnoblementRows = (ennoblements) => {
+const buildEnnoblementsRows = (ennoblements) => {
return ennoblements.reverse().map((ennoblement) => {
return `
- ${formatVillageHTML(ennoblement.village)} |
- ${formatPlayerHTML(ennoblement.newOwner)} |
- ${formatPlayerHTML(ennoblement.oldOwner)} |
+ ${getVillageHTML(ennoblement.village)} |
+ ${getPlayerHTML(ennoblement.newOwner)} |
+ ${getPlayerHTML(ennoblement.oldOwner)} |
${formatDate(ennoblement.ennobledAt)} |
`;
});
@@ -202,7 +195,7 @@ const renderLatestEnnoblements = (ennoblements = [], filters = {}) => {
};
const html = `
| |