TMVN History Transfer

Trophymanager: summary all seasons's transfer info and save data for TMVN League Transfer script (https://greasyfork.org/en/scripts/416755)

Install this script?
Author's suggested script

You may also like TMVN League Transfer.

Install this script
// ==UserScript==
// @name         TMVN History Transfer
// @namespace    https://trophymanager.com
// @version      4
// @description  Trophymanager: summary all seasons's transfer info and save data for TMVN League Transfer script (https://greasyfork.org/en/scripts/416755)
// @match        https://trophymanager.com/history/club/transfers/*
// @grant        none
// ==/UserScript==

(function () {
	'use strict';

	var transferSummary = [];
	var loadDone = false;
	var clubId = $('.box_sub_header a')[1].getAttribute('href').substring(6, $('.box_sub_header a')[1].getAttribute('href').toString().length - 1);
	var comboSeason = document.getElementById('stats_season').options;
	var seasonIds = [];
	for (let i = 0; i < comboSeason.length; i++) {
		seasonIds.push(comboSeason[i].value);
	}

	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 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;
						} else {
							average = Number(((sold + bought) / quantity).toFixed(1));
						}
						transferSummary.push({
							Season: seasonId,
							Bought: bought,
							Sold: sold,
							Balance: balance,
							Quantity: quantity,
							Average: average
						});
						if (transferSummary.length >= seasonIds.length) {
							loadDone = true;
						}
					}
				},
				error: function (e) {}
			});
		});
	}

	var myInterval = setInterval(append, 1000);

	function append() {
		if (!loadDone) {
			return;
		}
		clearInterval(myInterval);

		transferSummary.sort(function (a, b) {
			return b.Season - a.Season
		}); //order an object array
		/*APPEND SUMMARY TRANSFER*/
		var summaryTransfer =
			"<div class=\"column3_a\">" +
			"<div class=\"box\">" +
			"<div class=\"box_head\">" +
			"<h2 class=\"std\">Summary Transfer (M)</h2>" +
			"</div>" +
			"<div class=\"box_body\">" +
			"<div class=\"box_shadow\"></div>" +
			"<div id=\"summaryTransfer_content\" class=\"content_menu\"></div>" +
			"</div>" +
			"<div class=\"box_footer\">" +
			"<div></div>" +
			"</div>" +
			"</div>" +
			"</div>";
		if ($('#bteam_reminder').length == 1) {
			$(".main_center")[3].innerHTML += summaryTransfer;
		} else {
			$(".main_center")[2].innerHTML += summaryTransfer;
		}

		var summaryTransfer_content = "<table>" +
			"<tr><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>";

		var totalBought = 0,
		totalSold = 0,
		totalQuantity = 0;
		transferSummary.forEach((summary) => {
			summaryTransfer_content +=
			'<tr><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>';
			totalBought += summary.Bought;
			totalSold += summary.Sold;
			totalQuantity += summary.Quantity;
		});

		summaryTransfer_content +=
		'<tr><td align="right"><span style="color:Orange;">Average</span></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) : 0) + '</td></tr>';

		summaryTransfer_content +=
		'<tr><td align="right"><span style="color:Orange;">Total</span></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>';

		summaryTransfer_content += "</table>";
		$("#summaryTransfer_content").append(summaryTransfer_content);
		$('.column3')[0].parentNode.removeChild($('.column3')[0]);

		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
			}));
	}
})();