diff --git a/dist/extendedMapPopup.js b/dist/extendedMapPopup.js
index bede477..8ad39ea 100644
--- a/dist/extendedMapPopup.js
+++ b/dist/extendedMapPopup.js
@@ -664,7 +664,7 @@ const LAST_VILLAGE_CONQUER_QUERY = "\n query ennoblements($server: String!, $
const SERVER_CONFIG_LOCAL_STORAGE_KEY = 'kiszkowaty_extended_map_popup_server_cfg';
const translations = (0, _extendedMapPopup.default)();
-const loadConfigsFromLocalStorage = () => {
+const loadConfigFromLocalStorage = () => {
return (0, _localStorage.getItem)(SERVER_CONFIG_LOCAL_STORAGE_KEY);
};
@@ -674,11 +674,11 @@ const cacheServerConfig = function cacheServerConfig() {
};
const isConfigExpired = date => {
- return Math.abs((0, _differenceInMinutes.default)(date, new Date())) >= 60 * 24;
+ return Math.abs(date.getTime() - new Date().getTime()) > 1000 * 60 * 60 * 24;
};
-const loadConfigs = async () => {
- let data = loadConfigsFromLocalStorage();
+const loadConfig = async () => {
+ let data = loadConfigFromLocalStorage();
if (!data || !data.server || isConfigExpired(new Date(data.loadedAt)) || !data.server.config || !data.server.config.speed || !data.server.config.snob || !data.server.config.snob.maxDist || !data.server.config.unitSpeed || !data.server.unitConfig) {
data = await (0, _requestCreator.default)({
@@ -828,7 +828,7 @@ const createDisplayForVillageHandler = cfg => async (e, a, t) => {
(async function () {
try {
- const configs = await loadConfigs();
+ const configs = await loadConfig();
TWMap.popup.extendedMapPopupCache = {};
TWMap.popup._loadVillage = TWMap.popup.loadVillage;
TWMap.popup.loadVillage = createLoadVillageHandler(configs);
diff --git a/dist/extendedVillageProfile.js b/dist/extendedVillageProfile.js
index dd51035..0bc1508 100644
--- a/dist/extendedVillageProfile.js
+++ b/dist/extendedVillageProfile.js
@@ -167,13 +167,25 @@ Object.defineProperty(exports, "__esModule", {
exports.default = void 0;
const translations = {
pl_PL: {
+ loaded: 'Załadowano',
+ pop: 'Populacja',
+ mySupport: 'Moje wsparcie',
+ allySupport: 'Wsparcie plemienia',
+ total: 'Łącznie',
action: {
- showEnnoblements: 'Pokaż przejęcia'
+ showEnnoblements: 'Pokaż przejęcia',
+ countIncomingSupport: 'Policz nadchodzące wsparcie'
}
},
en_DK: {
+ loaded: 'Loaded',
+ pop: 'Pop',
+ mySupport: 'My support',
+ allySupport: 'Ally support',
+ total: 'Total',
action: {
- showEnnoblements: 'Show ennoblements'
+ showEnnoblements: 'Show ennoblements',
+ countIncomingSupport: 'Count incoming support'
}
}
};
@@ -282,6 +294,115 @@ exports.default = void 0;
var _default = url => parseInt(new URLSearchParams(url).get('id'));
exports.default = _default;
+},{}],"fHHP":[function(require,module,exports) {
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.buildImgURL = exports.calcAttackDuration = exports.formatVillageName = exports.formatVillageURL = exports.formatPlayerURL = exports.formatTribeURL = void 0;
+
+const formatTribeURL = id => {
+ return window.location.origin + TribalWars.buildURL('', {
+ screen: 'info_ally',
+ id
+ });
+};
+
+exports.formatTribeURL = formatTribeURL;
+
+const formatPlayerURL = id => {
+ return window.location.origin + TribalWars.buildURL('', {
+ screen: 'info_player',
+ id
+ });
+};
+
+exports.formatPlayerURL = formatPlayerURL;
+
+const formatVillageURL = id => {
+ return window.location.origin + TribalWars.buildURL('', {
+ screen: 'info_village',
+ id
+ });
+};
+
+exports.formatVillageURL = formatVillageURL;
+
+const formatVillageName = function formatVillageName() {
+ let n = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
+ let x = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 500;
+ let y = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 500;
+ const continent = 'K' + String(y)[0] + String(x)[0];
+ return "".concat(n, " (").concat(x, "|").concat(y, ") ").concat(continent);
+};
+
+exports.formatVillageName = formatVillageName;
+
+const calcAttackDuration = (distance, unitSpeed, baseSpeed) => {
+ return Math.round(distance * baseSpeed / unitSpeed);
+};
+
+exports.calcAttackDuration = calcAttackDuration;
+
+const buildImgURL = img => {
+ return image_base + img;
+};
+
+exports.buildImgURL = buildImgURL;
+},{}],"KX6P":[function(require,module,exports) {
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _tribalwars = require("./tribalwars");
+
+var _default = unit => {
+ return (0, _tribalwars.buildImgURL)("unit/unit_".concat(unit, ".png"));
+};
+
+exports.default = _default;
+},{"./tribalwars":"fHHP"}],"oUdd":[function(require,module,exports) {
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _default = t => new Promise(resolve => setTimeout(resolve, t));
+
+exports.default = _default;
+},{}],"KWxH":[function(require,module,exports) {
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.setItem = exports.getItem = void 0;
+
+const getItem = function getItem(key) {
+ let d = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+ const json = localStorage.getItem(key);
+ let obj = d;
+
+ if (json) {
+ obj = JSON.parse(json);
+ }
+
+ return obj;
+};
+
+exports.getItem = getItem;
+
+const setItem = (key, payload) => {
+ localStorage.setItem(key, JSON.stringify(payload));
+};
+
+exports.setItem = setItem;
},{}],"tKRp":[function(require,module,exports) {
"use strict";
@@ -373,62 +494,6 @@ var _default = (date, options) => {
};
exports.default = _default;
-},{}],"fHHP":[function(require,module,exports) {
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.buildImgURL = exports.calcAttackDuration = exports.formatVillageName = exports.formatVillageURL = exports.formatPlayerURL = exports.formatTribeURL = void 0;
-
-const formatTribeURL = id => {
- return window.location.origin + TribalWars.buildURL('', {
- screen: 'info_ally',
- id
- });
-};
-
-exports.formatTribeURL = formatTribeURL;
-
-const formatPlayerURL = id => {
- return window.location.origin + TribalWars.buildURL('', {
- screen: 'info_player',
- id
- });
-};
-
-exports.formatPlayerURL = formatPlayerURL;
-
-const formatVillageURL = id => {
- return window.location.origin + TribalWars.buildURL('', {
- screen: 'info_village',
- id
- });
-};
-
-exports.formatVillageURL = formatVillageURL;
-
-const formatVillageName = function formatVillageName() {
- let n = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
- let x = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 500;
- let y = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 500;
- const continent = 'K' + String(y)[0] + String(x)[0];
- return "".concat(n, " (").concat(x, "|").concat(y, ") ").concat(continent);
-};
-
-exports.formatVillageName = formatVillageName;
-
-const calcAttackDuration = (distance, unitSpeed, baseSpeed) => {
- return Math.round(distance * baseSpeed / unitSpeed);
-};
-
-exports.calcAttackDuration = calcAttackDuration;
-
-const buildImgURL = img => {
- return image_base + img;
-};
-
-exports.buildImgURL = buildImgURL;
},{}],"vNT1":[function(require,module,exports) {
"use strict";
@@ -509,16 +574,28 @@ var _getCurrentServer = _interopRequireDefault(require("./utils/getCurrentServer
var _getIDFromURL = _interopRequireDefault(require("./utils/getIDFromURL"));
+var _buildUnitImgURL = _interopRequireDefault(require("./utils/buildUnitImgURL"));
+
+var _wait = _interopRequireDefault(require("./utils/wait"));
+
+var _localStorage = require("./utils/localStorage");
+
var _showEnnoblementsPopup = _interopRequireDefault(require("./common/showEnnoblementsPopup"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
+
+function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
+
+function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
+
// ==UserScript==
// @name Extended Village Profile
// @namespace https://github.com/tribalwarshelp/scripts
// @updateURL https://raw.githubusercontent.com/tribalwarshelp/scripts/master/dist/extendedVillageProfile.js
// @downloadURL https://raw.githubusercontent.com/tribalwarshelp/scripts/master/dist/extendedVillageProfile.js
-// @version 0.5.6
+// @version 0.6.2
// @description Extended Village Profile
// @author Kichiyaki http://dawid-wysokinski.pl/
// @match *://*/game.php*screen=info_village*
@@ -529,9 +606,42 @@ const SERVER = (0, _getCurrentServer.default)();
const VILLAGE_ID = (0, _getIDFromURL.default)(window.location.search);
const ENNOBLEMENTS_QUERY = "\n query ennoblements($server: String!, $filter: EnnoblementFilter!) {\n ennoblements(server: $server, 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";
const ENNOBLEMENTS_PER_PAGE = 15;
+const CURR_SERVER_CONFIG = "\n query server($key: String!) {\n server(key: $key) {\n unitConfig {\n spear {\n pop\n }\n sword {\n pop\n }\n axe {\n pop\n }\n archer {\n pop\n }\n spy {\n pop\n }\n light {\n pop\n }\n marcher {\n pop\n }\n heavy {\n pop\n }\n ram {\n pop\n }\n catapult {\n pop\n }\n knight {\n pop\n }\n snob {\n pop\n }\n }\n }\n }\n";
+const SERVER_CONFIG_LOCAL_STORAGE_KEY = 'kiszkowaty_extended_village_profile_server_cfg';
const actionsContainer = document.querySelector('#content_value > table > tbody > tr > td:nth-child(1) > table:nth-child(2) > tbody');
+let serverConfig = {};
const translations = (0, _extendedVillageProfile.default)();
+const loadConfigFromLocalStorage = () => {
+ return (0, _localStorage.getItem)(SERVER_CONFIG_LOCAL_STORAGE_KEY);
+};
+
+const cacheServerConfig = function cacheServerConfig() {
+ let data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+ (0, _localStorage.setItem)(SERVER_CONFIG_LOCAL_STORAGE_KEY, data);
+};
+
+const isConfigExpired = date => {
+ return Math.abs(date.getTime() - new Date().getTime()) > 1000 * 60 * 60 * 24;
+};
+
+const loadConfig = async () => {
+ let data = loadConfigFromLocalStorage();
+
+ if (!data.server || isConfigExpired(new Date(data.loadedAt))) {
+ data = await (0, _requestCreator.default)({
+ query: CURR_SERVER_CONFIG,
+ variables: {
+ key: SERVER
+ }
+ });
+ data.loadedAt = new Date();
+ cacheServerConfig(data);
+ }
+
+ return data.server;
+};
+
const handleShowTribeEnnoblementsClick = async e => {
e.preventDefault();
const page = (0, _pagination.getPage)(e.target);
@@ -557,6 +667,107 @@ const handleShowTribeEnnoblementsClick = async e => {
}
};
+const buildCellsForIncSupport = units => {
+ const cells = [];
+ let pop = 0;
+
+ for (let unit in units) {
+ pop += units[unit] * serverConfig.unitConfig[unit].pop;
+ cells.push("
(0,d.getItem)(m),w=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(0,d.setItem)(m,e)},M=n=>Math.abs((0,e.default)(n,new Date))>=1440,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,r.default)({query:b,variables:{key:f}})).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,r.default)({query:y,variables:{server:f,filter:{villageID:[e],sort:"ennobledAt DESC"}}});return TWMap.popup.extendedMapPopupCache[e]=n,n}catch(t){console.log("loadVillageData",t)}},O=(n,t)=>{let r=25+Math.abs((0,e.default)(n,new Date))*(t/60);return r>100&&(r=100),Math.floor(r)},D=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,l.default)(t)}));return n},S=e=>e%2==0?"#f8f4e8":"#ded3b9;",C=(e,n)=>'\n \n \n | \n '),x=(e,t)=>'\n \n ').concat((0,a.default)((0,n.default)(new Date(Timing.getCurrentServerTime()),e)),"\n | \n "),P=(e,n,t)=>{let{config:r,unitConfig:o}=t;const l=TWMap.CoordByXY(TWMap.villageKey[e]),d=(0,i.calcDistanceBetweenTwoPoints)(l[0],l[1],window.game_data.village.x,window.game_data.village.y),c=n&&n.ennoblements&&n.ennoblements.items&&n.ennoblements.items.length>0?n.ennoblements.items[0]:void 0,s=document.querySelector("#map_popup #info_content tbody");let u=s.querySelector("#units");u||((u=document.createElement("tr")).id="units",s.appendChild(u));const g=D(o);u.innerHTML='\n \n \n \n \n '.concat(g.map(C).join(""),'\n \n \n ').concat(g.map((e,n)=>x((0,p.calcAttackDuration)(d,r.unitSpeed,e.speed),n)).join(""),"\n \n \n \n | \n ");let f=s.querySelector("#lastEnnobledAt");f||((f=document.createElement("tr")).id="lastEnnobledAt",s.appendChild(f)),f.innerHTML="\n \n ".concat(v.ennobledAt,":\n | \n \n ").concat(c?(0,a.default)(c.ennobledAt):v.never,"\n | \n ");let b=s.querySelector("#loyalty");b||((b=document.createElement("tr")).id="loyalty",s.appendChild(b)),b.innerHTML="\n \n ".concat(v.possibleLoyalty,":\n | \n \n ").concat(c?O(new Date(c.ennobledAt),r.speed):100,"\n | \n ");let y=s.querySelector("#canSendNoble");y||((y=document.createElement("tr")).id="canSendNoble",s.appendChild(y)),y.innerHTML="\n \n ".concat(v.canSendNoble,":\n | \n \n ").concat(d\n ")},_=e=>async n=>{TWMap.popup._loadVillage(n);const t=await q(parseInt(n));P(parseInt(n),t,e)},j=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});P(parseInt(n.id),a,e)};!async function(){try{const n=await T();TWMap.popup.extendedMapPopupCache={},TWMap.popup._loadVillage=TWMap.popup.loadVillage,TWMap.popup.loadVillage=_(n),TWMap.popup._displayForVillage=TWMap.popup.displayForVillage,TWMap.popup.displayForVillage=j(n)}catch(e){console.log("extended map popup",e)}}();
+"use strict";var e=c(require("date-fns/differenceInMinutes")),n=c(require("date-fns/addMinutes")),t=c(require("./i18n/extendedMapPopup")),r=c(require("./libs/requestCreator")),a=c(require("./utils/formatDate")),o=c(require("./utils/getCurrentServer")),i=require("./utils/math"),l=c(require("./utils/buildUnitImgURL")),d=require("./utils/localStorage"),p=require("./utils/tribalwars");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,d.getItem)(m),w=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(0,d.setItem)(m,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,r.default)({query:b,variables:{key:f}})).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,r.default)({query:y,variables:{server:f,filter:{villageID:[e],sort:"ennobledAt DESC"}}});return TWMap.popup.extendedMapPopupCache[e]=n,n}catch(t){console.log("loadVillageData",t)}},O=(n,t)=>{let r=25+Math.abs((0,e.default)(n,new Date))*(t/60);return r>100&&(r=100),Math.floor(r)},D=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,l.default)(t)}));return n},S=e=>e%2==0?"#f8f4e8":"#ded3b9;",C=(e,n)=>'\n \n \n | \n '),x=(e,t)=>'\n \n ').concat((0,a.default)((0,n.default)(new Date(Timing.getCurrentServerTime()),e)),"\n | \n "),P=(e,n,t)=>{let{config:r,unitConfig:o}=t;const l=TWMap.CoordByXY(TWMap.villageKey[e]),d=(0,i.calcDistanceBetweenTwoPoints)(l[0],l[1],window.game_data.village.x,window.game_data.village.y),c=n&&n.ennoblements&&n.ennoblements.items&&n.ennoblements.items.length>0?n.ennoblements.items[0]:void 0,s=document.querySelector("#map_popup #info_content tbody");let u=s.querySelector("#units");u||((u=document.createElement("tr")).id="units",s.appendChild(u));const g=D(o);u.innerHTML='\n \n \n \n \n '.concat(g.map(C).join(""),'\n \n \n ').concat(g.map((e,n)=>x((0,p.calcAttackDuration)(d,r.unitSpeed,e.speed),n)).join(""),"\n \n \n \n | \n ");let f=s.querySelector("#lastEnnobledAt");f||((f=document.createElement("tr")).id="lastEnnobledAt",s.appendChild(f)),f.innerHTML="\n \n ".concat(v.ennobledAt,":\n | \n \n ").concat(c?(0,a.default)(c.ennobledAt):v.never,"\n | \n ");let b=s.querySelector("#loyalty");b||((b=document.createElement("tr")).id="loyalty",s.appendChild(b)),b.innerHTML="\n \n ".concat(v.possibleLoyalty,":\n | \n \n ").concat(c?O(new Date(c.ennobledAt),r.speed):100,"\n | \n ");let y=s.querySelector("#canSendNoble");y||((y=document.createElement("tr")).id="canSendNoble",s.appendChild(y)),y.innerHTML="\n \n ".concat(v.canSendNoble,":\n | \n \n ").concat(d\n ")},_=e=>async n=>{TWMap.popup._loadVillage(n);const t=await q(parseInt(n));P(parseInt(n),t,e)},j=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});P(parseInt(n.id),a,e)};!async function(){try{const n=await T();TWMap.popup.extendedMapPopupCache={},TWMap.popup._loadVillage=TWMap.popup.loadVillage,TWMap.popup.loadVillage=_(n),TWMap.popup._displayForVillage=TWMap.popup.displayForVillage,TWMap.popup.displayForVillage=j(n)}catch(e){console.log("extended map popup",e)}}();
},{"date-fns/differenceInMinutes":"oGJj","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"}]},{},["HdqX"], null)
\ No newline at end of file
diff --git a/dist/quickbar/extendedVillageProfile.js b/dist/quickbar/extendedVillageProfile.js
index 13d47a9..bf0b641 100644
--- a/dist/quickbar/extendedVillageProfile.js
+++ b/dist/quickbar/extendedVillageProfile.js
@@ -1,23 +1,29 @@
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]:{};return fetch(e,{method:"POST",body:JSON.stringify({query:r,variables:t}),headers:{"Content-Type":"application/json"}}).then(e=>e.json()).then(e=>{let{data:r,errors:t}=e;if(t&&Array.isArray(t)&&t.length>0)throw new Error(t[0].message);return new Promise(e=>e(r))})};exports.default=r;
},{}],"LNef":[function(require,module,exports) {
-"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;const e={pl_PL:{action:{showEnnoblements:"Pokaż przejęcia"}},en_DK:{action:{showEnnoblements:"Show ennoblements"}}};var o=()=>e[window.game_data.locale]||e.en_DK;exports.default=o;
+"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;const o={pl_PL:{loaded:"Załadowano",pop:"Populacja",mySupport:"Moje wsparcie",allySupport:"Wsparcie plemienia",total:"Łącznie",action:{showEnnoblements:"Pokaż przejęcia",countIncomingSupport:"Policz nadchodzące wsparcie"}},en_DK:{loaded:"Loaded",pop:"Pop",mySupport:"My support",allySupport:"Ally support",total:"Total",action:{showEnnoblements:"Show ennoblements",countIncomingSupport:"Count incoming support"}}};var e=()=>o[window.game_data.locale]||o.en_DK;exports.default=e;
},{}],"fCHX":[function(require,module,exports) {
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.generatePaginationItems=exports.calcNumberOfPages=exports.getPage=exports.setPage=exports.getContainerStyles=void 0;const e="data-page",t=()=>"display: flex; flex-direction: row; flex-wrap: wrap;";exports.getContainerStyles=t;const r=function(t){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;if(!t instanceof HTMLElement)throw new Error("Expected HTMLElement as the first argument");if("number"!=typeof(r=parseInt(r))||isNaN(r))throw new Error("Expected number or string as the second argument");t.setAttribute(e,r+"")};exports.setPage=r;const n=t=>!t instanceof HTMLElement?0:parseInt(t.getAttribute(e));exports.getPage=n;const o=(e,t)=>{if("number"!=typeof e)throw new Error("Expected number as the first argument");if("number"!=typeof t)throw new Error("Expected number as the second argument");return e>0?Math.ceil(e/t):1};exports.calcNumberOfPages=o;const a=function(){let{total:t,limit:r,marginRight:n=3,currentPage:a=0}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const s=o(t,r),c=[];for(let o=1;o<=s;o++)o===a?c.push('>').concat(o,"<")):c.push('').concat(o,""));return c};exports.generatePaginationItems=a;
},{}],"DMkL":[function(require,module,exports) {
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=()=>window.location.host.split(".")[0];exports.default=e;
},{}],"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;
+},{}],"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"}],"oUdd":[function(require,module,exports) {
+"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=e=>new Promise(t=>setTimeout(t,e));exports.default=e;
+},{}],"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;
},{}],"tKRp":[function(require,module,exports) {
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;const e={pl_PL:{date:"Data",newOwner:"Nowy właściciel",oldOwner:"Stary właściciel",village:"Wioska",title:"Przejęcia"},en_DK:{date:"Date",newOwner:"New owner",oldOwner:"Old owner",village:"Village",title:"Ennoblements"}};var a=()=>e[window.game_data.locale]||e.en_DK;exports.default=a;
},{}],"chDM":[function(require,module,exports) {
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;const e=".popup_helper",t="#inline_popup";var o=function(){let{e:e,title:o,html:n,id:l}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const i=document.querySelector(t);i&&(i.style.width="auto",i.style.maxWidth="1000px"),i.classList.contains("show")?(i.querySelector("#inline_popup_title").innerHTML=o,i.querySelector("#inline_popup_content").innerHTML=n):inlinePopup(e,l,null,{offset_x:0,offset_y:0},n,o);const p=document.querySelector(".popup_helper");p&&(p.style.width="auto",p.style.position="fixed",p.style.zIndex="50001")};exports.default=o;
},{}],"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;
},{}],"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;
},{"../i18n/showEnnoblementsPopup":"tKRp","../utils/pagination":"fCHX","../utils/showPopup":"chDM","../utils/formatDate":"V6Mf","../utils/tribalwars":"fHHP"}],"UdfQ":[function(require,module,exports) {
-"use strict";var e=a(require("./libs/requestCreator")),n=a(require("./i18n/extendedVillageProfile")),t=require("./utils/pagination"),r=a(require("./utils/getCurrentServer")),l=a(require("./utils/getIDFromURL")),i=a(require("./common/showEnnoblementsPopup"));function a(e){return e&&e.__esModule?e:{default:e}}const o=(0,r.default)(),d=(0,l.default)(window.location.search),s="\n query ennoblements($server: String!, $filter: EnnoblementFilter!) {\n ennoblements(server: $server, 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",u=15,c=document.querySelector("#content_value > table > tbody > tr > td:nth-child(1) > table:nth-child(2) > tbody"),m=(0,n.default)(),f=async n=>{n.preventDefault();const r=(0,t.getPage)(n.target);if(!isNaN(r)){const t=await(0,e.default)({query:s,variables:{filter:{villageID:[d],offset:15*(r-1),limit:15,sort:"ennobledAt DESC"},server:o}});(0,i.default)(n,t.ennoblements,{currentPage:r,limit:15,onPageChange:f})}},b=e=>{const n=document.createElement("td");n.colSpan="2",n.append(e);const t=document.createElement("tr");return t.appendChild(n),t},g=()=>{const e=document.createElement("a");e.href="#",(0,t.setPage)(e,"1"),e.innerHTML=m.action.showEnnoblements,e.addEventListener("click",f),c.appendChild(b(e))};g();
-},{"./libs/requestCreator":"Ph2E","./i18n/extendedVillageProfile":"LNef","./utils/pagination":"fCHX","./utils/getCurrentServer":"DMkL","./utils/getIDFromURL":"tQUs","./common/showEnnoblementsPopup":"vNT1"}]},{},["UdfQ"], null)
\ No newline at end of file
+"use strict";var e=s(require("./libs/requestCreator")),n=s(require("./i18n/extendedVillageProfile")),t=require("./utils/pagination"),r=s(require("./utils/getCurrentServer")),o=s(require("./utils/getIDFromURL")),a=s(require("./utils/buildUnitImgURL")),i=s(require("./utils/wait")),c=require("./utils/localStorage"),l=s(require("./common/showEnnoblementsPopup"));function s(e){return e&&e.__esModule?e:{default:e}}function u(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 p(e){for(var n=1;n table > tbody > tr > td:nth-child(1) > table:nth-child(2) > tbody");let v={};const O=(0,n.default)(),j=()=>(0,c.getItem)(y),S=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(0,c.setItem)(y,e)},q=e=>Math.abs(e.getTime()-(new Date).getTime())>864e5,P=async()=>{let n=j();return n.server&&!q(new Date(n.loadedAt))||((n=await(0,e.default)({query:b,variables:{key:g}})).loadedAt=new Date,S(n)),n.server},D=async n=>{n.preventDefault();const r=(0,t.getPage)(n.target);if(!isNaN(r)){const t=await(0,e.default)({query:m,variables:{filter:{villageID:[h],offset:15*(r-1),limit:15,sort:"ennobledAt DESC"},server:g}});(0,l.default)(n,t.ennoblements,{currentPage:r,limit:15,onPageChange:D})}},E=e=>{const n=[];let t=0;for(let r in e)t+=e[r]*v.unitConfig[r].pop,n.push("".concat(e[r].toLocaleString()," | "));return n.push("".concat(t.toLocaleString()," | ")),n},_=async e=>{e.preventDefault();const n=[],t={};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")?t[r]=!0:t[r]=!1,n.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=p({},r),c=p({},r);for(let a=0;a").concat(a," / ").concat(n.length,""));const e=n[a],l=TribalWars.buildURL("",{screen:"info_command",ajax:"details",id:e});try{const n=await fetch(l),{units:a}=await n.json();if(a)for(let i in r){const n=parseInt(a[i].count);t[e]?o[i]+=n:r[i]+=n,c[i]+=n}await(0,i.default)(200)}catch(h){console.log("count incoming support",h)}}const l=[" | "];for(let i in r)l.push(' | '));l.push("".concat(O.pop," | "));const s=["".concat(O.mySupport," | "),...E(r)],u=["".concat(O.allySupport," | "),...E(o)],d=["".concat(O.total," | "),...E(c)];Dialog.show("incomingSupport",'\n \n \n \n '.concat(l.join(""),"\n \n \n ").concat(s.join(""),"\n \n \n ").concat(u.join(""),"\n \n \n ").concat(d.join(""),"\n \n \n \n "));const g=document.querySelector(".popup_box");g&&(g.style.width="auto",g.style.maxWidth="900px")},k=e=>{const n=document.createElement("td");n.colSpan="2",n.append(e);const t=document.createElement("tr");return t.appendChild(n),t},x=()=>{const e=document.createElement("a");e.href="#",(0,t.setPage)(e,"1"),e.innerHTML=O.action.showEnnoblements,e.addEventListener("click",D),w.appendChild(k(e));const n=document.createElement("a");n.href="#",n.innerHTML=O.action.countIncomingSupport,n.addEventListener("click",_),w.appendChild(k(n))};!async function(){try{v=await P(),x()}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/wait":"oUdd","./utils/localStorage":"KWxH","./common/showEnnoblementsPopup":"vNT1"}]},{},["UdfQ"], null)
\ No newline at end of file
diff --git a/src/extendedMapPopup.js b/src/extendedMapPopup.js
index 7471ed6..c89a3d9 100644
--- a/src/extendedMapPopup.js
+++ b/src/extendedMapPopup.js
@@ -89,7 +89,7 @@ const SERVER_CONFIG_LOCAL_STORAGE_KEY =
'kiszkowaty_extended_map_popup_server_cfg';
const translations = getTranslations();
-const loadConfigsFromLocalStorage = () => {
+const loadConfigFromLocalStorage = () => {
return getItem(SERVER_CONFIG_LOCAL_STORAGE_KEY);
};
@@ -98,11 +98,11 @@ const cacheServerConfig = (data = {}) => {
};
const isConfigExpired = (date) => {
- return Math.abs(differenceInMinutes(date, new Date())) >= 60 * 24;
+ return Math.abs(date.getTime() - new Date().getTime()) > 1000 * 60 * 60 * 24;
};
-const loadConfigs = async () => {
- let data = loadConfigsFromLocalStorage();
+const loadConfig = async () => {
+ let data = loadConfigFromLocalStorage();
if (
!data ||
!data.server ||
@@ -323,7 +323,7 @@ const createDisplayForVillageHandler = (cfg) => async (e, a, t) => {
(async function () {
try {
- const configs = await loadConfigs();
+ const configs = await loadConfig();
TWMap.popup.extendedMapPopupCache = {};
TWMap.popup._loadVillage = TWMap.popup.loadVillage;
diff --git a/src/extendedVillageProfile.js b/src/extendedVillageProfile.js
index 30af3e1..64b45b4 100644
--- a/src/extendedVillageProfile.js
+++ b/src/extendedVillageProfile.js
@@ -3,6 +3,9 @@ import getTranslations from './i18n/extendedVillageProfile';
import { setPage, getPage } from './utils/pagination';
import getCurrentServer from './utils/getCurrentServer';
import getIDFromURL from './utils/getIDFromURL';
+import buildUnitImgURL from './utils/buildUnitImgURL';
+import wait from './utils/wait';
+import { setItem, getItem } from './utils/localStorage';
import showEnnoblementsPopup from './common/showEnnoblementsPopup';
// ==UserScript==
@@ -10,7 +13,7 @@ import showEnnoblementsPopup from './common/showEnnoblementsPopup';
// @namespace https://github.com/tribalwarshelp/scripts
// @updateURL https://raw.githubusercontent.com/tribalwarshelp/scripts/master/dist/extendedVillageProfile.js
// @downloadURL https://raw.githubusercontent.com/tribalwarshelp/scripts/master/dist/extendedVillageProfile.js
-// @version 0.5.6
+// @version 0.6.2
// @description Extended Village Profile
// @author Kichiyaki http://dawid-wysokinski.pl/
// @match *://*/game.php*screen=info_village*
@@ -53,11 +56,85 @@ const ENNOBLEMENTS_QUERY = `
}
`;
const ENNOBLEMENTS_PER_PAGE = 15;
+const CURR_SERVER_CONFIG = `
+ query server($key: String!) {
+ server(key: $key) {
+ unitConfig {
+ spear {
+ pop
+ }
+ sword {
+ pop
+ }
+ axe {
+ pop
+ }
+ archer {
+ pop
+ }
+ spy {
+ pop
+ }
+ light {
+ pop
+ }
+ marcher {
+ pop
+ }
+ heavy {
+ pop
+ }
+ ram {
+ pop
+ }
+ catapult {
+ pop
+ }
+ knight {
+ pop
+ }
+ snob {
+ pop
+ }
+ }
+ }
+ }
+`;
+const SERVER_CONFIG_LOCAL_STORAGE_KEY =
+ 'kiszkowaty_extended_village_profile_server_cfg';
const actionsContainer = document.querySelector(
'#content_value > table > tbody > tr > td:nth-child(1) > table:nth-child(2) > tbody'
);
+let serverConfig = {};
const translations = getTranslations();
+const loadConfigFromLocalStorage = () => {
+ return getItem(SERVER_CONFIG_LOCAL_STORAGE_KEY);
+};
+
+const cacheServerConfig = (data = {}) => {
+ setItem(SERVER_CONFIG_LOCAL_STORAGE_KEY, data);
+};
+
+const isConfigExpired = (date) => {
+ return Math.abs(date.getTime() - new Date().getTime()) > 1000 * 60 * 60 * 24;
+};
+
+const loadConfig = async () => {
+ let data = loadConfigFromLocalStorage();
+ if (!data.server || isConfigExpired(new Date(data.loadedAt))) {
+ data = await requestCreator({
+ query: CURR_SERVER_CONFIG,
+ variables: {
+ key: SERVER,
+ },
+ });
+ data.loadedAt = new Date();
+ cacheServerConfig(data);
+ }
+ return data.server;
+};
+
const handleShowTribeEnnoblementsClick = async (e) => {
e.preventDefault();
const page = getPage(e.target);
@@ -82,6 +159,133 @@ const handleShowTribeEnnoblementsClick = async (e) => {
}
};
+const buildCellsForIncSupport = (units) => {
+ const cells = [];
+ let pop = 0;
+ for (let unit in units) {
+ pop += units[unit] * serverConfig.unitConfig[unit].pop;
+ cells.push(`${units[unit].toLocaleString()} | `);
+ }
+ cells.push(`${pop.toLocaleString()} | `);
+ return cells;
+};
+
+const handleCountIncomingSupportClick = async (e) => {
+ e.preventDefault();
+
+ const ids = [];
+ const allyCommand = {};
+ document
+ .querySelectorAll('span.command_hover_details[data-command-type="support"]')
+ .forEach((el) => {
+ const id = parseInt(el.getAttribute('data-command-id'));
+ if (el.classList.contains('commandicon-ally')) {
+ allyCommand[id] = true;
+ } else {
+ allyCommand[id] = false;
+ }
+ ids.push(id);
+ });
+
+ const mySupport = {
+ spear: 0,
+ sword: 0,
+ axe: 0,
+ archer: 0,
+ spy: 0,
+ light: 0,
+ marcher: 0,
+ heavy: 0,
+ ram: 0,
+ catapult: 0,
+ knight: 0,
+ snob: 0,
+ };
+ const allySupport = {
+ ...mySupport,
+ };
+ const total = {
+ ...mySupport,
+ };
+
+ for (let i = 0; i < ids.length; i++) {
+ Dialog.show(
+ 'incomingSupport',
+ `${translations.loaded}: ${i} / ${ids.length}`
+ );
+ const id = ids[i];
+ const url = TribalWars.buildURL('', {
+ screen: 'info_command',
+ ajax: 'details',
+ id,
+ });
+ try {
+ const resp = await fetch(url);
+ const { units } = await resp.json();
+ if (units) {
+ for (let unit in mySupport) {
+ const count = parseInt(units[unit].count);
+ if (allyCommand[id]) {
+ allySupport[unit] += count;
+ } else {
+ mySupport[unit] += count;
+ }
+ total[unit] += count;
+ }
+ }
+ await wait(200);
+ } catch (error) {
+ console.log('count incoming support', error);
+ }
+ }
+
+ const ths = [' | '];
+ for (let unit in mySupport) {
+ ths.push(` | `);
+ }
+ ths.push(`${translations.pop} | `);
+ const mySupportCells = [
+ `${translations.mySupport} | `,
+ ...buildCellsForIncSupport(mySupport),
+ ];
+ const allySupportCells = [
+ `${translations.allySupport} | `,
+ ...buildCellsForIncSupport(allySupport),
+ ];
+ const totalCells = [
+ `${translations.total} | `,
+ ...buildCellsForIncSupport(total),
+ ];
+
+ Dialog.show(
+ 'incomingSupport',
+ `
+
+
+
+ ${ths.join('')}
+
+
+ ${mySupportCells.join('')}
+
+
+ ${allySupportCells.join('')}
+
+
+ ${totalCells.join('')}
+
+
+
+ `
+ );
+
+ const popup = document.querySelector('.popup_box');
+ if (popup) {
+ popup.style.width = 'auto';
+ popup.style.maxWidth = '900px';
+ }
+};
+
const wrapAction = (action) => {
const actionWrapperTd = document.createElement('td');
actionWrapperTd.colSpan = '2';
@@ -101,8 +305,22 @@ const renderActions = () => {
handleShowTribeEnnoblementsClick
);
actionsContainer.appendChild(wrapAction(showEnnoblementsPopup));
+
+ const countIncomingSupport = document.createElement('a');
+ countIncomingSupport.href = '#';
+ countIncomingSupport.innerHTML = translations.action.countIncomingSupport;
+ countIncomingSupport.addEventListener(
+ 'click',
+ handleCountIncomingSupportClick
+ );
+ actionsContainer.appendChild(wrapAction(countIncomingSupport));
};
-(function () {
- renderActions();
+(async function () {
+ try {
+ serverConfig = await loadConfig();
+ renderActions();
+ } catch (error) {
+ console.log('extended village profile', error);
+ }
})();
diff --git a/src/i18n/extendedVillageProfile.js b/src/i18n/extendedVillageProfile.js
index 1418dfc..cdd1547 100644
--- a/src/i18n/extendedVillageProfile.js
+++ b/src/i18n/extendedVillageProfile.js
@@ -1,12 +1,24 @@
const translations = {
pl_PL: {
+ loaded: 'Załadowano',
+ pop: 'Populacja',
+ mySupport: 'Moje wsparcie',
+ allySupport: 'Wsparcie plemienia',
+ total: 'Łącznie',
action: {
showEnnoblements: 'Pokaż przejęcia',
+ countIncomingSupport: 'Policz nadchodzące wsparcie',
},
},
en_DK: {
+ loaded: 'Loaded',
+ pop: 'Pop',
+ mySupport: 'My support',
+ allySupport: 'Ally support',
+ total: 'Total',
action: {
showEnnoblements: 'Show ennoblements',
+ countIncomingSupport: 'Count incoming support',
},
},
};
| |