diff --git a/dist/extendedTribeProfile.js b/dist/extendedTribeProfile.js
index b785c8c..803559f 100644
--- a/dist/extendedTribeProfile.js
+++ b/dist/extendedTribeProfile.js
@@ -1638,7 +1638,7 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
// @namespace https://github.com/tribalwarshelp/scripts
// @updateURL https://raw.githubusercontent.com/tribalwarshelp/scripts/master/dist/extendedTribeProfile.js
// @downloadURL https://raw.githubusercontent.com/tribalwarshelp/scripts/master/dist/extendedTribeProfile.js
-// @version 0.8
+// @version 0.9
// @description Extended Tribe Profile
// @author Kichiyaki http://dawid-wysokinski.pl/
// @match *://*/game.php*&screen=info_ally*
@@ -1655,6 +1655,9 @@ const TRIBE_HISTORY_AND_TRIBE_DAILY_STATS_QUERY = "\nquery tribeHistoryAndTribeD
const TRIBE_HISTORY_PER_PAGE = 15;
const TRIBE_MEMBERS_DAILY_STATS_QUERY = "\nquery tribeMembersDailyStats($server: String!,\n $filter: DailyPlayerStatsFilter!) {\n dailyPlayerStats(server: $server, filter: $filter) {\n items {\n player {\n id\n name\n }\n points\n scoreAtt\n scoreDef\n scoreSup\n scoreTotal\n villages\n createDate\n }\n }\n}\n";
let MEMBERS_GROWTH_MODE = 'points';
+const TRIBE_CHANGES_QUERY = "\n query tribeChanges($server: String!, $filter: TribeChangeFilter!) {\n tribeChanges(server: $server, filter: $filter) {\n total\n items {\n player {\n id\n name\n }\n newTribe {\n id\n tag\n }\n createdAt\n }\n }\n }\n";
+const TRIBE_CHANGES_PAGINATION_CONTAINER_ID = 'tribeChangesPagination';
+const TRIBE_CHANGES_PER_PAGE = 15;
const profileInfoTBody = document.querySelector('#content_value > table:nth-child(3) > tbody > tr > td:nth-child(1) > table > tbody');
const actionsContainer = profileInfoTBody;
const otherElementsContainer = document.querySelector('#content_value > table:nth-child(3) > tbody > tr > td:nth-child(2)');
@@ -1996,6 +1999,59 @@ const handleShowMembersGrowthClick = async e => {
renderMembersGrowthPopup(e, data.dailyPlayerStats);
};
+const renderTribeChanges = (e, currentPage, tribeChanges) => {
+ const paginationItems = (0, _pagination.generatePaginationItems)({
+ total: tribeChanges.total,
+ limit: TRIBE_CHANGES_PER_PAGE,
+ currentPage
+ });
+ const html = "\n
\n \n \n \n \n Date\n | \n \n Player\n | \n \n Action\n | \n
\n ").concat(tribeChanges.items.map(tribeChange => {
+ let rowHTML = '' + "".concat((0, _formatDate.default)(tribeChange.createdAt), " | ");
+
+ if (tribeChange.player) {
+ rowHTML += "").concat(tribeChange.player.name, " | ");
+ } else {
+ rowHTML += '- | ';
+ }
+
+ rowHTML += "".concat(tribeChange.newTribe && tribeChange.newTribe.id === TRIBE_ID ? 'Joined' : 'Left', " | ");
+ return rowHTML + '
';
+ }).join(''), "\n \n
\n ");
+ (0, _renderPopup.default)({
+ e,
+ title: "Tribe changes",
+ id: 'tribeChanges',
+ html
+ });
+ document.querySelectorAll('#' + TRIBE_CHANGES_PAGINATION_CONTAINER_ID + ' a').forEach(el => {
+ el.addEventListener('click', handleShowTribeChangesClick);
+ });
+};
+
+const handleShowTribeChangesClick = async e => {
+ e.preventDefault();
+ const page = (0, _pagination.getPage)(e.target);
+
+ if (!isNaN(page)) {
+ const data = await (0, _requestCreator.default)({
+ query: TRIBE_CHANGES_QUERY,
+ variables: {
+ filter: {
+ or: {
+ oldTribeID: [TRIBE_ID],
+ newTribeID: [TRIBE_ID]
+ },
+ offset: TRIBE_CHANGES_PER_PAGE * (page - 1),
+ limit: TRIBE_CHANGES_PER_PAGE,
+ sort: 'createdAt DESC'
+ },
+ server: SERVER
+ }
+ });
+ renderTribeChanges(e, page, data.tribeChanges);
+ }
+};
+
const wrapAction = action => {
const actionWrapperTd = document.createElement('td');
actionWrapperTd.colSpan = '2';
@@ -2009,15 +2065,21 @@ const renderActions = () => {
const showEnnoblements = document.createElement('a');
showEnnoblements.href = '#';
(0, _pagination.setPage)(showEnnoblements, '1');
- showEnnoblements.innerHTML = 'Show tribe ennoblements';
+ showEnnoblements.innerHTML = 'Show ennoblements';
showEnnoblements.addEventListener('click', handleShowTribeEnnoblementsClick);
actionsContainer.appendChild(wrapAction(showEnnoblements));
const showHistory = document.createElement('a');
showHistory.href = '#';
(0, _pagination.setPage)(showHistory, '1');
- showHistory.innerHTML = 'Show tribe history';
+ showHistory.innerHTML = 'Show history';
showHistory.addEventListener('click', handleShowTribeHistoryClick);
actionsContainer.appendChild(wrapAction(showHistory));
+ const showTribeChanges = document.createElement('a');
+ showTribeChanges.href = '#';
+ (0, _pagination.setPage)(showTribeChanges, '1');
+ showTribeChanges.innerHTML = 'Show tribe changes';
+ showTribeChanges.addEventListener('click', handleShowTribeChangesClick);
+ actionsContainer.appendChild(wrapAction(showTribeChanges));
const showMembersGrowth = document.createElement('a');
showMembersGrowth.href = '#';
showMembersGrowth.innerHTML = 'Show members growth';
diff --git a/src/extendedTribeProfile.js b/src/extendedTribeProfile.js
index f83a012..5f5a54f 100644
--- a/src/extendedTribeProfile.js
+++ b/src/extendedTribeProfile.js
@@ -1,7 +1,12 @@
import isURL from 'validator/lib/isURL';
import differenceInDays from 'date-fns/differenceInDays';
import requestCreator from './libs/requestCreator';
-import { setPage, getPage } from './utils/pagination';
+import {
+ setPage,
+ getPage,
+ generatePaginationItems,
+ getContainerStyles,
+} from './utils/pagination';
import renderTodaysStats from './utils/renderTodaysStats';
import renderEnnoblements from './utils/renderEnnoblements';
import renderHistoryPopup from './utils/renderHistoryPopup';
@@ -18,7 +23,7 @@ import { formatPlayerURL as formatPlayerURLTribalWars } from './utils/tribalwars
// @namespace https://github.com/tribalwarshelp/scripts
// @updateURL https://raw.githubusercontent.com/tribalwarshelp/scripts/master/dist/extendedTribeProfile.js
// @downloadURL https://raw.githubusercontent.com/tribalwarshelp/scripts/master/dist/extendedTribeProfile.js
-// @version 0.8
+// @version 0.9
// @description Extended Tribe Profile
// @author Kichiyaki http://dawid-wysokinski.pl/
// @match *://*/game.php*&screen=info_ally*
@@ -162,6 +167,26 @@ query tribeMembersDailyStats($server: String!,
}
`;
let MEMBERS_GROWTH_MODE = 'points';
+const TRIBE_CHANGES_QUERY = `
+ query tribeChanges($server: String!, $filter: TribeChangeFilter!) {
+ tribeChanges(server: $server, filter: $filter) {
+ total
+ items {
+ player {
+ id
+ name
+ }
+ newTribe {
+ id
+ tag
+ }
+ createdAt
+ }
+ }
+ }
+`;
+const TRIBE_CHANGES_PAGINATION_CONTAINER_ID = 'tribeChangesPagination';
+const TRIBE_CHANGES_PER_PAGE = 15;
const profileInfoTBody = document.querySelector(
'#content_value > table:nth-child(3) > tbody > tr > td:nth-child(1) > table > tbody'
);
@@ -556,6 +581,90 @@ const handleShowMembersGrowthClick = async (e) => {
renderMembersGrowthPopup(e, data.dailyPlayerStats);
};
+const renderTribeChanges = (e, currentPage, tribeChanges) => {
+ const paginationItems = generatePaginationItems({
+ total: tribeChanges.total,
+ limit: TRIBE_CHANGES_PER_PAGE,
+ currentPage,
+ });
+
+ const html = `
+
+
+
+
+
+ Date
+ |
+
+ Player
+ |
+
+ Action
+ |
+
+ ${tribeChanges.items
+ .map((tribeChange) => {
+ let rowHTML =
+ '' + `${formatDate(tribeChange.createdAt)} | `;
+ if (tribeChange.player) {
+ rowHTML += `${tribeChange.player.name} | `;
+ } else {
+ rowHTML += '- | ';
+ }
+ rowHTML += `${
+ tribeChange.newTribe && tribeChange.newTribe.id === TRIBE_ID
+ ? 'Joined'
+ : 'Left'
+ } | `;
+ return rowHTML + '
';
+ })
+ .join('')}
+
+
+ `;
+
+ renderPopup({
+ e,
+ title: `Tribe changes`,
+ id: 'tribeChanges',
+ html,
+ });
+
+ document
+ .querySelectorAll('#' + TRIBE_CHANGES_PAGINATION_CONTAINER_ID + ' a')
+ .forEach((el) => {
+ el.addEventListener('click', handleShowTribeChangesClick);
+ });
+};
+
+const handleShowTribeChangesClick = async (e) => {
+ e.preventDefault();
+ const page = getPage(e.target);
+ if (!isNaN(page)) {
+ const data = await requestCreator({
+ query: TRIBE_CHANGES_QUERY,
+ variables: {
+ filter: {
+ or: {
+ oldTribeID: [TRIBE_ID],
+ newTribeID: [TRIBE_ID],
+ },
+ offset: TRIBE_CHANGES_PER_PAGE * (page - 1),
+ limit: TRIBE_CHANGES_PER_PAGE,
+ sort: 'createdAt DESC',
+ },
+ server: SERVER,
+ },
+ });
+ renderTribeChanges(e, page, data.tribeChanges);
+ }
+};
+
const wrapAction = (action) => {
const actionWrapperTd = document.createElement('td');
actionWrapperTd.colSpan = '2';
@@ -569,17 +678,24 @@ const renderActions = () => {
const showEnnoblements = document.createElement('a');
showEnnoblements.href = '#';
setPage(showEnnoblements, '1');
- showEnnoblements.innerHTML = 'Show tribe ennoblements';
+ showEnnoblements.innerHTML = 'Show ennoblements';
showEnnoblements.addEventListener('click', handleShowTribeEnnoblementsClick);
actionsContainer.appendChild(wrapAction(showEnnoblements));
const showHistory = document.createElement('a');
showHistory.href = '#';
setPage(showHistory, '1');
- showHistory.innerHTML = 'Show tribe history';
+ showHistory.innerHTML = 'Show history';
showHistory.addEventListener('click', handleShowTribeHistoryClick);
actionsContainer.appendChild(wrapAction(showHistory));
+ const showTribeChanges = document.createElement('a');
+ showTribeChanges.href = '#';
+ setPage(showTribeChanges, '1');
+ showTribeChanges.innerHTML = 'Show tribe changes';
+ showTribeChanges.addEventListener('click', handleShowTribeChangesClick);
+ actionsContainer.appendChild(wrapAction(showTribeChanges));
+
const showMembersGrowth = document.createElement('a');
showMembersGrowth.href = '#';
showMembersGrowth.innerHTML = 'Show members growth';