// ==UserScript==
// @name TMVN Club Transfer
// @namespace https://trophymanager.com
// @version 11
// @description Trophymanager: transfer statistics of all seasons, the most expensive players, the most successful trades, revenue from the academy... It made by request of Vasco Vitkovice, Tirana Smokers, Bones and Langevåg IL. In addition, the script also saves data for for TMVN League Transfer script (https://gf.qytechs.cn/en/scripts/416755).
// @include https://trophymanager.com/club/*
// @include https://trophymanager.com/club/*/
// @exclude https://trophymanager.com/club/
// @exclude https://trophymanager.com/club/*/squad/
// @grant none
// ==/UserScript==
(function () {
'use strict';
const APPLICATION_PARAM = {
DEFAULT_TOP_COUNT: 10,
TOP_COUNT_LOCAL_STORAGE_KEY: "TMVN_CLUB_TRANSFER_TOP_COUNT",
DEFAULT_SEASON_COUNT: 0,
SEASON_COUNT_LOCAL_STORAGE_KEY: "TMVN_CLUB_TRANSFER_SEASON_COUNT",
DEFAULT_SHOW_MODE: "11111",
SHOW_MODE_LOCAL_STORAGE_KEY: "TMVN_CLUB_TRANSFER_SHOW_MODE",
SEASON_SHOW: 2
}
const CLASS_NAME = {
SUMMARY_TRANSFER: 'tmvn_club_transfer_script_classname_summary_transfer',
ACADEMY_REVENUE: 'tmvn_club_transfer_script_classname_academy_revenue'
}
const CONTROL_ID = {
INPUT_SHOW_MODE: 'tmvn_club_transfer_script_input_show_mode',
BUTTON_SHOW_MODE: 'tmvn_club_transfer_script_button_show_mode_set',
INPUT_TOP_COUNT: 'tmvn_club_transfer_script_input_top_count',
BUTTON_TOP_COUNT: 'tmvn_club_transfer_script_button_top_count_set',
INPUT_SEASON_COUNT: 'tmvn_club_transfer_script_input_season_count',
BUTTON_SEASON_COUNT: 'tmvn_club_transfer_script_button_season_count_set',
BUTTON_SHOW_ALL_SUMMARY_TRANSFER: 'tmvn_club_transfer_script_button_show_all_summary_transfer',
BUTTON_SHOW_ALL_ACADEMY_REVENUE: 'tmvn_club_transfer_script_button_show_all_academy_revenue'
}
const APPLICATION_COLOR = {
AVERAGE: 'Aqua',
TOTAL: 'Yellow'
}
var topCount,
seasonCount;
seasonCount = localStorage.getItem(APPLICATION_PARAM.SEASON_COUNT_LOCAL_STORAGE_KEY);
if (seasonCount == null || seasonCount == "") {
seasonCount = APPLICATION_PARAM.DEFAULT_SEASON_COUNT;
}
var boughtArr = [];
var soldArr = [];
var tradeArr = [];
var academySoldMap = new Map();
var academySummary = [];
var transferSummary = [];
var playerMap = new Map();
var loadCount = 0;
var loadDone = false;
var clubId = location.href.split('/')[4];
var seasonIds = [];
$.ajaxSetup({
async: false
});
$.ajax('https://trophymanager.com/history/club/transfers/' + clubId, {
type: "GET",
dataType: 'html',
crossDomain: true,
success: function (response) {
let comboSeason = $('#stats_season', response)[0].options;
for (let i = 0; i < comboSeason.length; i++) {
seasonIds.push(comboSeason[i].value);
}
},
error: function (e) {}
});
$.ajaxSetup({
async: true
});
if (seasonCount > 0 && seasonCount < seasonIds.length) {
do {
seasonIds.pop();
} while (seasonCount < seasonIds.length);
}
if (clubId != "" && seasonIds.length > 0) {
seasonIds.forEach((seasonId) => {
$.ajax('https://trophymanager.com/history/club/transfers/' + clubId + '/' + seasonId, {
type: "GET",
dataType: 'html',
crossDomain: true,
success: function (response) {
let tbl = $('.zebra.hover', response);
if (tbl.length != 2) {
return;
}
let trBuy = $('tr', tbl[0]);
let playerId,
playerName,
price;
for (let i = 1; i < trBuy.length; i++) {
let td = $('td', trBuy[i]);
if (td.length < 4)
continue;
let a = $('a', td[0]);
if (a.length == 0)
continue;
playerName = a[0].innerText;
playerId = a[0].getAttribute('player_link');
price = td[3].innerText.replace(/,/g, '');
setMap(playerId, playerName, seasonId, price, 1);
}
let trSell = $('tr', tbl[1]);
for (let i = 1; i < trSell.length; i++) {
let td = $('td', trSell[i]);
if (td.length < 4)
continue;
let a = $('a', td[0]);
if (a.length == 0)
continue;
playerName = a[0].innerText;
playerId = a[0].getAttribute('player_link');
price = td[3].innerText.replace(/,/g, '');
setMap(playerId, playerName, seasonId, price, 2);
}
let tdArr = $('.zebra.hover td', response);
if (tdArr.length >= 3) {
var bought,
sold,
balance,
quantity,
average;
bought = Math.round(tdArr[tdArr.length - 3].children[0].innerText.replace(/,/g, ''));
sold = Math.round(tdArr[tdArr.length - 2].children[0].innerText.replace(/,/g, ''));
balance = sold - bought;
if (bought > 0 && sold > 0) {
quantity = (tdArr.length - 3) / 4;
} else if ((bought == 0 && sold > 0) || (bought > 0 && sold == 0)) {
quantity = Math.round((tdArr.length - 4) / 4); //bug when has sell/buy players but all prices = 0 --> round and accept wrong result
} else if (bought == 0 && sold == 0) {
quantity = 0;
}
if (quantity == 0) {
average = '0.0';
} else {
average = ((sold + bought) / quantity).toFixed(1);
}
transferSummary.push({
Season: seasonId,
Bought: bought,
Sold: sold,
Balance: balance,
Quantity: quantity,
Average: average
});
}
loadCount++;
if (loadCount >= seasonIds.length) {
loadDone = true;
}
},
error: function (e) {}
});
});
}
var myInterval = setInterval(append, 1000);
function append() {
if (!loadDone) {
return;
}
clearInterval(myInterval);
processPlayer();
boughtArr.sort((a, b) => parseFloat(b.Price) - parseFloat(a.Price));
soldArr.sort((a, b) => parseFloat(b.Price) - parseFloat(a.Price));
tradeArr.sort((a, b) => parseFloat(b.Profit) - parseFloat(a.Profit));
transferSummary.sort(function (a, b) {
return b.Season - a.Season
}); //order an object array
processAcademy();
if (!(boughtArr.length == 0 && soldArr.length == 0 && tradeArr.length == 0)) {
present();
}
try {
$('.banner_placeholder.rectangle')[0].parentNode.removeChild($('.banner_placeholder.rectangle')[0]);
} catch (err) {}
}
//buyOrSell: 1 - buy, 2 - sell
function setMap(playerId, playerName, seasonId, price, buyOrSell) {
let player;
if (playerMap.has(playerId)) {
player = playerMap.get(playerId);
player.Transaction.push({
SeasonBS: seasonId + '.' + buyOrSell,
Price: price
});
try {
if (player.Name.trim() == '') {
player.Name = playerName; //fix bug of TM not show playername
}
} catch (e) {}
} else {
player = {
Id: playerId,
Name: playerName,
Transaction: [{
SeasonBS: seasonId + '.' + buyOrSell,
Price: price
}
]
}
playerMap.set(playerId, player);
}
}
function processPlayer() {
for (let[key, value]of playerMap) {
value.Transaction.sort((a, b) => parseFloat(a.SeasonBS) - parseFloat(b.SeasonBS));
let waitSellForTrade = false;
let buyForTrade;
value.Transaction.forEach(tran => {
let temp = tran.SeasonBS.split('.');
if (temp[1] == 1) {
boughtArr.push({
Id: value.Id,
Name: value.Name,
Season: temp[0],
Price: tran.Price
});
waitSellForTrade = true;
buyForTrade = tran.Price;
} else {
if (waitSellForTrade) {
tradeArr.push({
Id: value.Id,
Name: value.Name,
Buy: buyForTrade,
Sell: tran.Price,
Profit: (tran.Price - buyForTrade).toFixed(1)
});
soldArr.push({
Id: value.Id,
Name: value.Name,
Season: temp[0],
Price: tran.Price,
YoungAcademy: false
});
} else {
soldArr.push({
Id: value.Id,
Name: value.Name,
Season: temp[0],
Price: tran.Price,
YoungAcademy: true
});
if (academySoldMap.has(temp[0])) {
let academySoldSeasonData = academySoldMap.get(temp[0]);
academySoldSeasonData.Quantity++;
academySoldSeasonData.Sold += parseFloat(tran.Price);
academySoldMap.set(temp[0], academySoldSeasonData);
} else {
academySoldMap.set(temp[0], {
Quantity: 1,
Sold: parseFloat(tran.Price)
});
}
}
waitSellForTrade = false;
}
});
}
}
function processAcademy() {
seasonIds.forEach((seasonId) => {
if (academySoldMap.has(seasonId)) {
let season = academySoldMap.get(seasonId);
let seasonAverage = (Math.round(season.Sold) / season.Quantity).toFixed(1);
academySummary.push({
Season: seasonId,
Quantity: season.Quantity,
Sold: Math.round(season.Sold),
Average: seasonAverage
});
} else {
academySummary.push({
Season: seasonId,
Quantity: 0,
Sold: 0,
Average: '0.0'
});
}
});
}
function present() {
let clubTransfer =
"<div class=\"box\">" +
"<div class=\"box_head\">" +
"<h2 class=\"std\">Club Transfer (M)</h2>" +
"</div>" +
"<div class=\"box_body\">" +
"<div class=\"box_shadow\"></div>" +
"<h3>TOP BOUGHT</h3>" +
"<div id=\"topBought_content\" class=\"content_menu\"></div>" +
"<h3>TOP SOLD</h3>" +
"<div id=\"topSold_content\" class=\"content_menu\"></div>" +
"<h3>TOP TRADE PROFIT</h3>" +
"<div id=\"topTrade_content\" class=\"content_menu\"></div>" +
"<h3>SUMMARY TRANSFER</h3>" +
"<div id=\"summaryTransfer_content\" class=\"content_menu\"></div>" +
"<h3>ACADEMY REVENUE</h3>" +
"<div id=\"academyRevenue_content\" class=\"content_menu\"></div>" +
"<h3>CONFIG</h3>" +
"<span style='display: inline-block;'><input id='" + CONTROL_ID.INPUT_SHOW_MODE + "' type='text' class='embossed' style='min-width: 100px; line-height: 100%; padding: 3px 3px 4px 3px;' placeholder='Set show mode'></span>" +
"<span id='" + CONTROL_ID.BUTTON_SHOW_MODE + "' class='button' style='margin-left: 3px;'><span class='button_border'>Show Mode</span></span>" +
"<span style='display: inline-block;'><input id='" + CONTROL_ID.INPUT_TOP_COUNT + "' type='text' class='embossed' style='min-width: 100px; line-height: 100%; padding: 3px 3px 4px 3px;' placeholder='Set top count'></span>" +
"<span id='" + CONTROL_ID.BUTTON_TOP_COUNT + "' class='button' style='margin-left: 3px;'><span class='button_border'>Top Count</span></span>" +
"<span style='display: inline-block;'><input id='" + CONTROL_ID.INPUT_SEASON_COUNT + "' type='text' class='embossed' style='min-width: 100px; line-height: 100%; padding: 3px 3px 4px 3px;' placeholder='Set season count'></span>" +
"<span id='" + CONTROL_ID.BUTTON_SEASON_COUNT + "' class='button' style='margin-left: 3px;'><span class='button_border'>Season Count</span></span>" +
"</div>" +
"<div class=\"box_footer\">" +
"<div></div>" +
"</div>" +
"</div>";
$(".column3_a").append(clubTransfer);
/*** SHOW MODE ***/
document.getElementById(CONTROL_ID.BUTTON_SHOW_MODE).addEventListener('click', (e) => {
setShowMode();
});
let showMode = localStorage.getItem(APPLICATION_PARAM.SHOW_MODE_LOCAL_STORAGE_KEY);
if (showMode == null || showMode == "") {
showMode = APPLICATION_PARAM.DEFAULT_SHOW_MODE;
}
$('#' + CONTROL_ID.INPUT_SHOW_MODE).val(showMode);
/*********/
/*** TOP COUT ***/
document.getElementById(CONTROL_ID.BUTTON_TOP_COUNT).addEventListener('click', (e) => {
setTopCount();
});
topCount = localStorage.getItem(APPLICATION_PARAM.TOP_COUNT_LOCAL_STORAGE_KEY);
if (topCount == null || topCount == "") {
topCount = APPLICATION_PARAM.DEFAULT_TOP_COUNT;
}
$('#' + CONTROL_ID.INPUT_TOP_COUNT).val(topCount);
/*********/
/*** SEASON COUT ***/
document.getElementById(CONTROL_ID.BUTTON_SEASON_COUNT).addEventListener('click', (e) => {
setSeasonCount();
});
$('#' + CONTROL_ID.INPUT_SEASON_COUNT).val(seasonCount);
/*********/
let invidualMode = showMode.split("");
if (invidualMode[0] == "1") {
showTopBought();
}
if (invidualMode[1] == "1") {
showTopSold();
}
if (invidualMode[2] == "1") {
showTopTradeProfit();
}
if (invidualMode[3] == "1") {
showSummaryTransfer();
}
if (invidualMode[4] == "1") {
showAcademyRevenue();
}
}
function showTopBought() {
if (boughtArr.length > 0) {
var topBought_content = "<table>" +
"<tr style='color:Orange;'><th align='right'>#</th><th>Player</th><th align='right'>SS</th><th align='right'>Price</th></tr>";
let rowCount = 0;
for (let i = 0; i < boughtArr.length && i < topCount; i++) {
rowCount++;
let classOdd = "";
if ((rowCount % 2) == 1) {
classOdd = "class='odd'";
}
topBought_content +=
'<tr ' + classOdd + '><td align="right">' + (i + 1) + '. ' +
'</td><td>' + '<span onclick = \"window.open(\'https:\/\/trophymanager.com\/players\/' + boughtArr[i].Id + '\')\">' + boughtArr[i].Name + '</span>' +
'</td><td align="right">' + boughtArr[i].Season +
'</td><td align="right">' + boughtArr[i].Price.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") +
'</td></tr>';
}
topBought_content += "</table>";
$("#topBought_content").append(topBought_content);
}
}
function showTopSold() {
if (soldArr.length > 0) {
var topSold_content = "<table>" +
"<tr style='color:Orange;'><th align='right'>#</th><th>Player</th><th align='right'>SS</th><th align='right'>Price</th></tr>";
let rowCount = 0;
for (let i = 0; i < soldArr.length && i < topCount; i++) {
rowCount++;
let classOdd = "";
if ((rowCount % 2) == 1) {
classOdd = "class='odd'";
}
if (soldArr[i].YoungAcademy) {
topSold_content += "<tr style='color:Yellow;' " + classOdd + ">";
} else {
topSold_content += "<tr " + classOdd + ">";
}
topSold_content +=
'<td align="right">' + (i + 1) + '. ' +
'</td><td>' + '<span onclick = \"window.open(\'https:\/\/trophymanager.com\/players\/' + soldArr[i].Id + '\')\">' + soldArr[i].Name + '</span>' +
'</td><td align="right">' + soldArr[i].Season +
'</td><td align="right">' + soldArr[i].Price.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") +
'</td></tr>';
}
topSold_content += "</table>";
$("#topSold_content").append(topSold_content);
}
}
function showTopTradeProfit() {
if (tradeArr.length > 0) {
var topTrade_content = "<table>" +
"<tr style='color:Orange;'><th align='right'>#</th><th>Player</th><th align='right'>Buy</th><th align='right'>Sell</th><th align='right'>Profit</th></tr>";
let rowCount = 0;
for (let i = 0; i < tradeArr.length && i < topCount; i++) {
rowCount++;
let classOdd = "";
if ((rowCount % 2) == 1) {
classOdd = "class='odd'";
}
topTrade_content +=
'<tr ' + classOdd + '><td align="right">' + (i + 1) + '. ' +
'</td><td>' + '<span onclick = \"window.open(\'https:\/\/trophymanager.com\/players\/' + tradeArr[i].Id + '\')\">' + tradeArr[i].Name + '</span>' +
'</td><td align="right">' + tradeArr[i].Buy.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") +
'</td><td align="right">' + tradeArr[i].Sell.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") +
'</td><td align="right">' + tradeArr[i].Profit.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") +
'</td></tr>';
}
topTrade_content += "</table>";
$("#topTrade_content").append(topTrade_content);
}
}
function showSummaryTransfer() {
let summaryTransfer_content = "<table>" +
"<tr style='color:Orange;'><th align='right'>SS</th><th align='right'>Buy</th><th align='right'>Sell</th><th align='right'>+-</th><th align='right'>#</th><th align='right'>Avg</th></tr>";
let totalBought = 0,
totalSold = 0,
totalQuantity = 0;
let rowCount = 0;
let seasonTrArr = [];
transferSummary.forEach((summary) => {
rowCount++;
let trClass = "",
display = "";
if (rowCount <= APPLICATION_PARAM.SEASON_SHOW) {
if ((rowCount % 2) == 1) {
trClass = "class='odd'";
}
} else {
display = "style='display:none'";
if ((rowCount % 2) == 1) {
trClass = "class='odd " + CLASS_NAME.SUMMARY_TRANSFER + "'";
} else {
trClass = "class='" + CLASS_NAME.SUMMARY_TRANSFER + "'";
}
}
let seasonTr =
'<tr ' + trClass + ' ' + display + '><td align="right">' + summary.Season +
'</td><td align="right">' + summary.Bought.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") +
'</td><td align="right">' + summary.Sold.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") +
'</td><td align="right">' + summary.Balance.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") +
'</td><td align="right">' + summary.Quantity +
'</td><td align="right">' + summary.Average.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") +
'</td></tr>';
seasonTrArr.push(seasonTr);
totalBought += summary.Bought;
totalSold += summary.Sold;
totalQuantity += summary.Quantity;
});
summaryTransfer_content +=
'<tr class="odd" style="color:' + APPLICATION_COLOR.AVERAGE + ';"><td align="right">Average</td><td align="right">' +
(totalBought / transferSummary.length).toFixed(0).replace(/\B(?=(\d{3})+(?!\d))/g, ",") + '</td><td align="right">' +
(totalSold / transferSummary.length).toFixed(0).replace(/\B(?=(\d{3})+(?!\d))/g, ",") + '</td><td align="right">' +
(Math.round(totalSold / transferSummary.length) - Math.round(totalBought / transferSummary.length)).toFixed(0).replace(/\B(?=(\d{3})+(?!\d))/g, ",") + '</td><td align="right">' +
(totalQuantity / transferSummary.length).toFixed(0) + '</td><td align="right">' +
(totalQuantity > 0 ? ((totalSold + totalBought) / totalQuantity).toFixed(1).replace(/\B(?=(\d{3})+(?!\d))/g, ",") : 0) + '</td></tr>';
summaryTransfer_content +=
'<tr style="color:' + APPLICATION_COLOR.TOTAL + ';"><td align="right">Total</td><td align="right">' +
totalBought.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") + '</td><td align="right">' +
totalSold.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") + '</td><td align="right">' +
(totalSold - totalBought).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") + '</td><td align="right">' +
totalQuantity.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") + '</td><td align="right">' +
'</td></tr>';
seasonTrArr.forEach((seasonTr) => {
summaryTransfer_content += seasonTr;
});
if (rowCount > APPLICATION_PARAM.SEASON_SHOW) {
let buttonLabel = "Show all season " + seasonIds[seasonIds.length - 1] + " - " + seasonIds[0];
summaryTransfer_content += "<tr align='center'><td colspan='6'>" + "<span id='" + CONTROL_ID.BUTTON_SHOW_ALL_SUMMARY_TRANSFER + "' class='button' style='margin-left: 3px;'><span class='button_border'>" + buttonLabel + "</span></span>" + "</td></tr>";
}
summaryTransfer_content += "</table>";
$("#summaryTransfer_content").append(summaryTransfer_content);
if (rowCount > APPLICATION_PARAM.SEASON_SHOW) {
document.getElementById(CONTROL_ID.BUTTON_SHOW_ALL_SUMMARY_TRANSFER).addEventListener('click', (e) => {
showAll(CLASS_NAME.SUMMARY_TRANSFER, CONTROL_ID.BUTTON_SHOW_ALL_SUMMARY_TRANSFER);
});
}
localStorage.setItem(clubId + "_AVERAGE_TRANSFER", JSON.stringify({
"Time": new Date(),
"Bought": Number((totalBought / transferSummary.length).toFixed(0)),
"Sold": Number((totalSold / transferSummary.length).toFixed(0)),
"Balance": Math.round(totalSold / transferSummary.length) - Math.round(totalBought / transferSummary.length),
"Quantity": Number((totalQuantity / transferSummary.length).toFixed(0)),
"Average": totalQuantity > 0 ? Number(((totalSold + totalBought) / totalQuantity).toFixed(1)) : 0,
"SeasonCount": transferSummary.length
}));
}
function showAcademyRevenue() {
let academyRevenue_content = "<table>" +
"<tr style='color:Orange;'><th align='right'>SS</th><th align='right'>Sell</th><th align='right'>#</th><th align='right'>Avg</th></tr>";
let totalSold = 0,
totalQuantity = 0;
let rowCount = 0;
let seasonTrArr = [];
academySummary.forEach((summary) => {
rowCount++;
let trClass = "",
display = "";
if (rowCount <= APPLICATION_PARAM.SEASON_SHOW) {
if ((rowCount % 2) == 1) {
trClass = "class='odd'";
}
} else {
display = "style='display:none'";
if ((rowCount % 2) == 1) {
trClass = "class='odd " + CLASS_NAME.ACADEMY_REVENUE + "'";
} else {
trClass = "class='" + CLASS_NAME.ACADEMY_REVENUE + "'";
}
}
let seasonTr =
'<tr ' + trClass + ' ' + display + '><td align="right">' + summary.Season +
'</td><td align="right">' + summary.Sold.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") +
'</td><td align="right">' + summary.Quantity +
'</td><td align="right">' + summary.Average.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") +
'</td></tr>';
seasonTrArr.push(seasonTr);
totalSold += summary.Sold;
totalQuantity += summary.Quantity;
});
academyRevenue_content +=
'<tr class="odd" style="color:' + APPLICATION_COLOR.AVERAGE + ';"><td align="right">Average</td><td align="right">' +
(totalSold / academySummary.length).toFixed(0).replace(/\B(?=(\d{3})+(?!\d))/g, ",") + '</td><td align="right">' +
(totalQuantity / academySummary.length).toFixed(0) + '</td><td align="right">' +
(totalQuantity > 0 ? (totalSold / totalQuantity).toFixed(1).replace(/\B(?=(\d{3})+(?!\d))/g, ",") : 0) + '</td></tr>';
academyRevenue_content +=
'<tr style="color:' + APPLICATION_COLOR.TOTAL + ';"><td align="right">Total</td><td align="right">' +
totalSold.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") + '</td><td align="right">' +
totalQuantity.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") + '</td><td align="right">' +
'</td></tr>';
seasonTrArr.forEach((seasonTr) => {
academyRevenue_content += seasonTr;
});
if (rowCount > APPLICATION_PARAM.SEASON_SHOW) {
let buttonLabel = "Show all season " + seasonIds[seasonIds.length - 1] + " - " + seasonIds[0];
academyRevenue_content += "<tr align='center'><td colspan='4'>" + "<span id='" + CONTROL_ID.BUTTON_SHOW_ALL_ACADEMY_REVENUE + "' class='button' style='margin-left: 3px;'><span class='button_border'>" + buttonLabel + "</span></span>" + "</td></tr>";
}
academyRevenue_content += "</table>";
$("#academyRevenue_content").append(academyRevenue_content);
if (rowCount > APPLICATION_PARAM.SEASON_SHOW) {
document.getElementById(CONTROL_ID.BUTTON_SHOW_ALL_ACADEMY_REVENUE).addEventListener('click', (e) => {
showAll(CLASS_NAME.ACADEMY_REVENUE, CONTROL_ID.BUTTON_SHOW_ALL_ACADEMY_REVENUE);
});
}
}
function showAll(className, controlId) {
let trArr = $('.' + className);
for (let i = 0; i < trArr.length; i++) {
trArr[i].style = 'display:""';
}
$('#' + controlId)[0].style = 'display:none';
}
function setShowMode() {
let showMode = $('#' + CONTROL_ID.INPUT_SHOW_MODE)[0].value;
if (showMode == '') {
localStorage.removeItem(APPLICATION_PARAM.SHOW_MODE_LOCAL_STORAGE_KEY);
} else if (!isValidShowMode(showMode)) {
alert('Allowable show mode value has the form XXXXX where X is 0 or 1');
} else {
localStorage.setItem(APPLICATION_PARAM.SHOW_MODE_LOCAL_STORAGE_KEY, showMode);
alert('Set successful, please refresh');
}
}
function isValidShowMode(mode) {
let arr = mode.split('');
if (arr.length != 5)
return false;
for (let i = 0; i < arr.length; i++) {
if (arr[i] != '0' && arr[i] != '1') {
return false;
}
}
return true;
}
function setTopCount() {
let topCount = $('#' + CONTROL_ID.INPUT_TOP_COUNT)[0].value;
if (topCount == '') {
localStorage.removeItem(APPLICATION_PARAM.TOP_COUNT_LOCAL_STORAGE_KEY);
} else if (isNaN(topCount) || topCount <= 0) {
alert('Top count must be positive integer');
} else {
localStorage.setItem(APPLICATION_PARAM.TOP_COUNT_LOCAL_STORAGE_KEY, topCount);
alert('Set successful, please refresh');
}
}
function setSeasonCount() {
let seasonCount = $('#' + CONTROL_ID.INPUT_SEASON_COUNT)[0].value;
if (seasonCount == '') {
localStorage.removeItem(APPLICATION_PARAM.SEASON_COUNT_LOCAL_STORAGE_KEY);
} else if (isNaN(seasonCount) || seasonCount < 0) {
alert('Season count must be positive integer. Season count = 0 means all seasons.');
} else {
localStorage.setItem(APPLICATION_PARAM.SEASON_COUNT_LOCAL_STORAGE_KEY, seasonCount);
alert('Set successful, please refresh');
}
}
})();