From 67e298ad62c8bb18cbb36c7f92a865bbb8dbad16 Mon Sep 17 00:00:00 2001 From: Kichiyaki Date: Fri, 17 Jul 2020 14:16:07 +0200 Subject: [PATCH] add 'Todays stats' section to extendedTribeProfile --- dist/extendedPlayerProfile.js | 73 +++++++++++++------ dist/extendedTribeProfile.js | 68 ++++++++++++++++-- src/extendedPlayerProfile.js | 125 +------------------------------- src/extendedTribeProfile.js | 31 +++++++- src/utils/isNil.js | 1 + src/utils/renderTodaysStats.js | 128 +++++++++++++++++++++++++++++++++ 6 files changed, 273 insertions(+), 153 deletions(-) create mode 100644 src/utils/isNil.js create mode 100644 src/utils/renderTodaysStats.js diff --git a/dist/extendedPlayerProfile.js b/dist/extendedPlayerProfile.js index b23697a..b149cae 100644 --- a/dist/extendedPlayerProfile.js +++ b/dist/extendedPlayerProfile.js @@ -352,7 +352,52 @@ var _default = function _default() { }; exports.default = _default; -},{}],"fCHX":[function(require,module,exports) { +},{}],"yQib":[function(require,module,exports) { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _default = v => v === undefined || v === null; + +exports.default = _default; +},{}],"dPMc":[function(require,module,exports) { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _isNil = _interopRequireDefault(require("./isNil")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const getTodaysStatsTdStyle = value => { + const statIncreaseStyle = 'color: #000; background-color: #0f0'; + const statDecreaseStyle = 'color: #000; background-color: #f00'; + const defaultStyle = 'color: #000; background-color: #808080'; + return value > 0 ? statIncreaseStyle : value < 0 ? statDecreaseStyle : defaultStyle; +}; + +var _default = (container, stats) => { + let todaysStats = container.querySelector('#todaysStats'); + + if (!todaysStats) { + todaysStats = document.createElement('div'); + todaysStats.id = 'todaysStats'; + todaysStats.width = '100%'; + container.prepend(todaysStats); + } + + const renderODS = !(0, _isNil.default)(stats.rankSup); + todaysStats.innerHTML = "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ").concat(renderODS ? "\n \n \n \n \n \n \n ") : '', "\n \n \n \n \n \n \n \n \n \n
\n Today's stats\n
\n Points:\n \n ").concat(Math.abs(stats.points).toLocaleString(), "\n
\n Rank:\n \n ").concat(Math.abs(stats.rank), "\n
\n Villages:\n \n ").concat(Math.abs(stats.villages).toLocaleString(), "\n
\n ODA:\n \n ").concat(Math.abs(stats.scoreAtt).toLocaleString(), "\n
\n ODA Rank:\n \n ").concat(Math.abs(stats.rankAtt), "\n
\n ODD:\n \n ").concat(Math.abs(stats.scoreDef).toLocaleString(), "\n
\n ODD Rank:\n \n ").concat(Math.abs(stats.rankDef), "\n
\n ODS:\n \n ").concat(Math.abs(stats.scoreSup).toLocaleString(), "\n
\n ODS Rank:\n \n ").concat(Math.abs(stats.rankSup), "\n
\n OD:\n \n ").concat(Math.abs(stats.scoreTotal).toLocaleString(), "\n
\n OD Rank:\n \n ").concat(Math.abs(stats.rankTotal), "\n
\n "); +}; + +exports.default = _default; +},{"./isNil":"yQib"}],"fCHX":[function(require,module,exports) { "use strict"; Object.defineProperty(exports, "__esModule", { @@ -716,6 +761,8 @@ var _subDays = _interopRequireDefault(require("date-fns/subDays")); var _requestCreator = _interopRequireDefault(require("./libs/requestCreator")); +var _renderTodaysStats = _interopRequireDefault(require("./utils/renderTodaysStats")); + var _pagination = require("./utils/pagination"); var _getIDFromURL = _interopRequireDefault(require("./utils/getIDFromURL")); @@ -889,26 +936,6 @@ const renderPlayerOtherNames = player => { }).join(''), "\n \n \n "); }; -const getTodaysStatsTdStyle = value => { - const statIncreaseStyle = 'color: #000; background-color: #0f0'; - const statDecreaseStyle = 'color: #000; background-color: #f00'; - const defaultStyle = 'color: #000; background-color: #808080'; - return value > 0 ? statIncreaseStyle : value < 0 ? statDecreaseStyle : defaultStyle; -}; - -const renderTodaysStats = stats => { - let todaysStats = document.querySelector('#todaysStats'); - - if (!todaysStats) { - todaysStats = document.createElement('div'); - todaysStats.id = 'todaysStats'; - todaysStats.width = '100%'; - otherElementsContainer.prepend(todaysStats); - } - - todaysStats.innerHTML = "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n Today's stats\n
\n Points:\n \n ").concat(Math.abs(stats.points).toLocaleString(), "\n
\n Rank:\n \n ").concat(Math.abs(stats.rank), "\n
\n Villages:\n \n ").concat(Math.abs(stats.villages).toLocaleString(), "\n
\n ODA:\n \n ").concat(Math.abs(stats.scoreAtt).toLocaleString(), "\n
\n ODA Rank:\n \n ").concat(Math.abs(stats.rankAtt), "\n
\n ODD:\n \n ").concat(Math.abs(stats.scoreDef).toLocaleString(), "\n
\n ODD Rank:\n \n ").concat(Math.abs(stats.rankDef), "\n
\n ODS:\n \n ").concat(Math.abs(stats.scoreSup).toLocaleString(), "\n
\n ODS Rank:\n \n ").concat(Math.abs(stats.rankSup), "\n
\n OD:\n \n ").concat(Math.abs(stats.scoreTotal).toLocaleString(), "\n
\n OD Rank:\n \n ").concat(Math.abs(stats.rankTotal), "\n
\n "); -}; - const renderInADayRanks = player => { let inADayRanks = document.querySelector('#inADayRanks'); @@ -953,7 +980,7 @@ const render = (_ref2) => { renderInADayRanks(player); if (dailyPlayerStats && dailyPlayerStats.items.length > 0) { - renderTodaysStats(dailyPlayerStats.items[0]); + (0, _renderTodaysStats.default)(otherElementsContainer, dailyPlayerStats.items[0]); } if (player.nameChanges.length > 0) { @@ -1214,4 +1241,4 @@ const renderActions = () => { console.log('extended player profile', error); } })(); -},{"date-fns/subDays":"mRRL","./libs/requestCreator":"Ph2E","./utils/pagination":"fCHX","./utils/getIDFromURL":"tQUs","./utils/getCurrentServer":"DMkL","./utils/formatDate":"V6Mf","./utils/renderPopup":"P4rL","./utils/twstats":"Syko","./utils/tribalwars":"fHHP","./utils/localStorage":"KWxH"}]},{},["yRop"], null) \ No newline at end of file +},{"date-fns/subDays":"mRRL","./libs/requestCreator":"Ph2E","./utils/renderTodaysStats":"dPMc","./utils/pagination":"fCHX","./utils/getIDFromURL":"tQUs","./utils/getCurrentServer":"DMkL","./utils/formatDate":"V6Mf","./utils/renderPopup":"P4rL","./utils/twstats":"Syko","./utils/tribalwars":"fHHP","./utils/localStorage":"KWxH"}]},{},["yRop"], null) \ No newline at end of file diff --git a/dist/extendedTribeProfile.js b/dist/extendedTribeProfile.js index bf074af..a83fe39 100644 --- a/dist/extendedTribeProfile.js +++ b/dist/extendedTribeProfile.js @@ -158,7 +158,52 @@ var _default = function _default() { }; exports.default = _default; -},{}],"tQUs":[function(require,module,exports) { +},{}],"yQib":[function(require,module,exports) { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _default = v => v === undefined || v === null; + +exports.default = _default; +},{}],"dPMc":[function(require,module,exports) { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _isNil = _interopRequireDefault(require("./isNil")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const getTodaysStatsTdStyle = value => { + const statIncreaseStyle = 'color: #000; background-color: #0f0'; + const statDecreaseStyle = 'color: #000; background-color: #f00'; + const defaultStyle = 'color: #000; background-color: #808080'; + return value > 0 ? statIncreaseStyle : value < 0 ? statDecreaseStyle : defaultStyle; +}; + +var _default = (container, stats) => { + let todaysStats = container.querySelector('#todaysStats'); + + if (!todaysStats) { + todaysStats = document.createElement('div'); + todaysStats.id = 'todaysStats'; + todaysStats.width = '100%'; + container.prepend(todaysStats); + } + + const renderODS = !(0, _isNil.default)(stats.rankSup); + todaysStats.innerHTML = "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ").concat(renderODS ? "\n \n \n \n \n \n \n ") : '', "\n \n \n \n \n \n \n \n \n \n
\n Today's stats\n
\n Points:\n \n ").concat(Math.abs(stats.points).toLocaleString(), "\n
\n Rank:\n \n ").concat(Math.abs(stats.rank), "\n
\n Villages:\n \n ").concat(Math.abs(stats.villages).toLocaleString(), "\n
\n ODA:\n \n ").concat(Math.abs(stats.scoreAtt).toLocaleString(), "\n
\n ODA Rank:\n \n ").concat(Math.abs(stats.rankAtt), "\n
\n ODD:\n \n ").concat(Math.abs(stats.scoreDef).toLocaleString(), "\n
\n ODD Rank:\n \n ").concat(Math.abs(stats.rankDef), "\n
\n ODS:\n \n ").concat(Math.abs(stats.scoreSup).toLocaleString(), "\n
\n ODS Rank:\n \n ").concat(Math.abs(stats.rankSup), "\n
\n OD:\n \n ").concat(Math.abs(stats.scoreTotal).toLocaleString(), "\n
\n OD Rank:\n \n ").concat(Math.abs(stats.rankTotal), "\n
\n "); +}; + +exports.default = _default; +},{"./isNil":"yQib"}],"tQUs":[function(require,module,exports) { "use strict"; Object.defineProperty(exports, "__esModule", { @@ -231,6 +276,8 @@ exports.default = _default; var _requestCreator = _interopRequireDefault(require("./libs/requestCreator")); +var _renderTodaysStats = _interopRequireDefault(require("./utils/renderTodaysStats")); + var _getIDFromURL = _interopRequireDefault(require("./utils/getIDFromURL")); var _getCurrentServer = _interopRequireDefault(require("./utils/getCurrentServer")); @@ -256,8 +303,9 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de const SERVER = (0, _getCurrentServer.default)(); const TRIBE_ID = (0, _getIDFromURL.default)(window.location.search); const LOCAL_STORAGE_KEY = 'kichiyaki_extended_tribe_profile' + TRIBE_ID; -const TRIBE_QUERY = "\n query tribe($server: String!, $id: Int!) {\n tribe(server: $server, id: $id) {\n id\n bestRank\n bestRankAt\n mostPoints\n mostPointsAt\n mostVillages\n mostVillagesAt\n createdAt\n dominance\n }\n }\n"; +const TRIBE_QUERY = "\n query tribe($server: String!, $id: Int!, $dailyTribeStatsFilter: DailyTribeStatsFilter!) {\n tribe(server: $server, id: $id) {\n id\n bestRank\n bestRankAt\n mostPoints\n mostPointsAt\n mostVillages\n mostVillagesAt\n createdAt\n dominance\n }\n dailyTribeStats(server: $server, filter: $dailyTribeStatsFilter) {\n items {\n rank\n rankAtt\n rankDef\n rankTotal\n points\n scoreAtt\n scoreAtt\n scoreDef\n scoreTotal\n villages\n }\n }\n }\n"; const profileInfoTBody = document.querySelector('#content_value > table:nth-child(3) > tbody > tr > td:nth-child(1) > table > tbody'); +const otherElementsContainer = document.querySelector('#content_value > table:nth-child(3) > tbody > tr > td:nth-child(2)'); const loadDataFromCache = () => { return (0, _localStorage.getItem)(LOCAL_STORAGE_KEY); @@ -273,7 +321,12 @@ const loadData = async () => { query: TRIBE_QUERY, variables: { server: SERVER, - id: TRIBE_ID + id: TRIBE_ID, + dailyTribeStatsFilter: { + sort: 'createDate DESC', + limit: 1, + tribeID: [TRIBE_ID] + } } }); cacheTribeData(data); @@ -302,7 +355,8 @@ const renderTr = (_ref) => { const render = (_ref2) => { let { - tribe + tribe, + dailyTribeStats } = _ref2; [{ title: 'Created at:', @@ -327,6 +381,10 @@ const render = (_ref2) => { }].forEach(data => { renderTr(data); }); + + if (dailyTribeStats && dailyTribeStats.items.length > 0) { + (0, _renderTodaysStats.default)(otherElementsContainer, dailyTribeStats.items[0]); + } }; (async function () { @@ -346,4 +404,4 @@ const render = (_ref2) => { console.log('extended tribe profile', error); } })(); -},{"./libs/requestCreator":"Ph2E","./utils/getIDFromURL":"tQUs","./utils/getCurrentServer":"DMkL","./utils/localStorage":"KWxH","./utils/formatDate":"V6Mf"}]},{},["r4nF"], null) \ No newline at end of file +},{"./libs/requestCreator":"Ph2E","./utils/renderTodaysStats":"dPMc","./utils/getIDFromURL":"tQUs","./utils/getCurrentServer":"DMkL","./utils/localStorage":"KWxH","./utils/formatDate":"V6Mf"}]},{},["r4nF"], null) \ No newline at end of file diff --git a/src/extendedPlayerProfile.js b/src/extendedPlayerProfile.js index 10002a8..823d2c2 100644 --- a/src/extendedPlayerProfile.js +++ b/src/extendedPlayerProfile.js @@ -1,5 +1,6 @@ import subDays from 'date-fns/subDays'; import requestCreator from './libs/requestCreator'; +import renderTodaysStats from './utils/renderTodaysStats'; import { generatePaginationItems, setPage, getPage } from './utils/pagination'; import getIDFromURL from './utils/getIDFromURL'; import getCurrentServer from './utils/getCurrentServer'; @@ -334,128 +335,6 @@ const renderPlayerOtherNames = (player) => { `; }; -const getTodaysStatsTdStyle = (value) => { - const statIncreaseStyle = 'color: #000; background-color: #0f0'; - const statDecreaseStyle = 'color: #000; background-color: #f00'; - const defaultStyle = 'color: #000; background-color: #808080'; - - return value > 0 - ? statIncreaseStyle - : value < 0 - ? statDecreaseStyle - : defaultStyle; -}; - -const renderTodaysStats = (stats) => { - let todaysStats = document.querySelector('#todaysStats'); - if (!todaysStats) { - todaysStats = document.createElement('div'); - todaysStats.id = 'todaysStats'; - todaysStats.width = '100%'; - otherElementsContainer.prepend(todaysStats); - } - - todaysStats.innerHTML = ` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Today's stats -
- Points: - - ${Math.abs(stats.points).toLocaleString()} -
- Rank: - - ${Math.abs(stats.rank)} -
- Villages: - - ${Math.abs(stats.villages).toLocaleString()} -
- ODA: - - ${Math.abs(stats.scoreAtt).toLocaleString()} -
- ODA Rank: - - ${Math.abs(stats.rankAtt)} -
- ODD: - - ${Math.abs(stats.scoreDef).toLocaleString()} -
- ODD Rank: - - ${Math.abs(stats.rankDef)} -
- ODS: - - ${Math.abs(stats.scoreSup).toLocaleString()} -
- ODS Rank: - - ${Math.abs(stats.rankSup)} -
- OD: - - ${Math.abs(stats.scoreTotal).toLocaleString()} -
- OD Rank: - - ${Math.abs(stats.rankTotal)} -
- `; -}; - const renderInADayRanks = (player) => { let inADayRanks = document.querySelector('#inADayRanks'); if (!inADayRanks) { @@ -585,7 +464,7 @@ const render = ({ player, dailyPlayerStats }) => { renderInADayRanks(player); if (dailyPlayerStats && dailyPlayerStats.items.length > 0) { - renderTodaysStats(dailyPlayerStats.items[0]); + renderTodaysStats(otherElementsContainer, dailyPlayerStats.items[0]); } if (player.nameChanges.length > 0) { renderPlayerOtherNames(player); diff --git a/src/extendedTribeProfile.js b/src/extendedTribeProfile.js index 5f96d3e..fcd03cc 100644 --- a/src/extendedTribeProfile.js +++ b/src/extendedTribeProfile.js @@ -1,4 +1,5 @@ import requestCreator from './libs/requestCreator'; +import renderTodaysStats from './utils/renderTodaysStats'; import getIDFromURL from './utils/getIDFromURL'; import getCurrentServer from './utils/getCurrentServer'; import { setItem, getItem } from './utils/localStorage'; @@ -21,7 +22,7 @@ const SERVER = getCurrentServer(); const TRIBE_ID = getIDFromURL(window.location.search); const LOCAL_STORAGE_KEY = 'kichiyaki_extended_tribe_profile' + TRIBE_ID; const TRIBE_QUERY = ` - query tribe($server: String!, $id: Int!) { + query tribe($server: String!, $id: Int!, $dailyTribeStatsFilter: DailyTribeStatsFilter!) { tribe(server: $server, id: $id) { id bestRank @@ -33,11 +34,28 @@ const TRIBE_QUERY = ` createdAt dominance } + dailyTribeStats(server: $server, filter: $dailyTribeStatsFilter) { + items { + rank + rankAtt + rankDef + rankTotal + points + scoreAtt + scoreAtt + scoreDef + scoreTotal + villages + } + } } `; const profileInfoTBody = document.querySelector( '#content_value > table:nth-child(3) > tbody > tr > td:nth-child(1) > table > tbody' ); +const otherElementsContainer = document.querySelector( + '#content_value > table:nth-child(3) > tbody > tr > td:nth-child(2)' +); const loadDataFromCache = () => { return getItem(LOCAL_STORAGE_KEY); @@ -53,6 +71,11 @@ const loadData = async () => { variables: { server: SERVER, id: TRIBE_ID, + dailyTribeStatsFilter: { + sort: 'createDate DESC', + limit: 1, + tribeID: [TRIBE_ID], + }, }, }); cacheTribeData(data); @@ -72,7 +95,7 @@ const renderTr = ({ title, data, id }) => { tr.children[1].innerHTML = data; }; -const render = ({ tribe }) => { +const render = ({ tribe, dailyTribeStats }) => { [ { title: 'Created at:', @@ -105,6 +128,10 @@ const render = ({ tribe }) => { ].forEach((data) => { renderTr(data); }); + + if (dailyTribeStats && dailyTribeStats.items.length > 0) { + renderTodaysStats(otherElementsContainer, dailyTribeStats.items[0]); + } }; (async function () { diff --git a/src/utils/isNil.js b/src/utils/isNil.js new file mode 100644 index 0000000..21563f1 --- /dev/null +++ b/src/utils/isNil.js @@ -0,0 +1 @@ +export default (v) => v === undefined || v === null; diff --git a/src/utils/renderTodaysStats.js b/src/utils/renderTodaysStats.js new file mode 100644 index 0000000..d15c86a --- /dev/null +++ b/src/utils/renderTodaysStats.js @@ -0,0 +1,128 @@ +import isNil from './isNil'; + +const getTodaysStatsTdStyle = (value) => { + const statIncreaseStyle = 'color: #000; background-color: #0f0'; + const statDecreaseStyle = 'color: #000; background-color: #f00'; + const defaultStyle = 'color: #000; background-color: #808080'; + + return value > 0 + ? statIncreaseStyle + : value < 0 + ? statDecreaseStyle + : defaultStyle; +}; + +export default (container, stats) => { + let todaysStats = container.querySelector('#todaysStats'); + if (!todaysStats) { + todaysStats = document.createElement('div'); + todaysStats.id = 'todaysStats'; + todaysStats.width = '100%'; + container.prepend(todaysStats); + } + + const renderODS = !isNil(stats.rankSup); + todaysStats.innerHTML = ` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${ + renderODS + ? ` + + + + + + + ` + : '' + } + + + + + + + + + +
+ Today's stats +
+ Points: + + ${Math.abs(stats.points).toLocaleString()} +
+ Rank: + + ${Math.abs(stats.rank)} +
+ Villages: + + ${Math.abs(stats.villages).toLocaleString()} +
+ ODA: + + ${Math.abs(stats.scoreAtt).toLocaleString()} +
+ ODA Rank: + + ${Math.abs(stats.rankAtt)} +
+ ODD: + + ${Math.abs(stats.scoreDef).toLocaleString()} +
+ ODD Rank: + + ${Math.abs(stats.rankDef)} +
+ ODS: + + ${Math.abs(stats.scoreSup).toLocaleString()} +
+ ODS Rank: + + ${Math.abs(stats.rankSup)} +
+ OD: + + ${Math.abs(stats.scoreTotal).toLocaleString()} +
+ OD Rank: + + ${Math.abs(stats.rankTotal)} +
+ `; +};