TM save COs

TM save COs (The author does not guarantee the correctness of the script)

Você precisará instalar uma extensão como Tampermonkey, Greasemonkey ou Violentmonkey para instalar este script.

Você precisará instalar uma extensão como Tampermonkey ou Violentmonkey para instalar este script.

Você precisará instalar uma extensão como Tampermonkey ou Violentmonkey para instalar este script.

Você precisará instalar uma extensão como Tampermonkey ou Userscripts para instalar este script.

Você precisará instalar uma extensão como o Tampermonkey para instalar este script.

Você precisará instalar um gerenciador de scripts de usuário para instalar este script.

(Eu já tenho um gerenciador de scripts de usuário, me deixe instalá-lo!)

Você precisará instalar uma extensão como o Stylus para instalar este estilo.

Você precisará instalar uma extensão como o Stylus para instalar este estilo.

Você precisará instalar uma extensão como o Stylus para instalar este estilo.

Você precisará instalar um gerenciador de estilos de usuário para instalar este estilo.

Você precisará instalar um gerenciador de estilos de usuário para instalar este estilo.

Você precisará instalar um gerenciador de estilos de usuário para instalar este estilo.

(Eu já possuo um gerenciador de estilos de usuário, me deixar fazer a instalação!)

// ==UserScript==
// @name	   TM save COs
// @namespace  ByMLFC
// @version	1.0.1
// @description  TM save COs (The author does not guarantee the correctness of the script)
// @include		http://trophymanager.com/tactics
// @include		http://*.trophymanager.com/tactics
// @include		http://trophymanager.com/tactics/*
// @include		http://*.trophymanager.com/tactics/*
// ==/UserScript==

// page scope scripts
var pageHead = document.getElementsByTagName("head")[0];
var script = document.createElement('script'); 
script.type = "text/javascript"; 

function embed() {
	// get CO from the page
	function getCO() {
		document.getElementById("CO_JSON").value = JSON.stringify(cond_orders);
	}

	// if two orders are the same, return true, exclude id
	function compare_cond_order(cond_order1, cond_order2) {
		for (var j in cond_order1) {
			if (j != "ID") {
				if (cond_order1[j] != cond_order2[j]) {
					return false;
				}
			}
		}
		return true;
	}

	function setCO() {
		var CO_name = document.getElementById("CO_list");
		if (CO_name.selectedIndex != 0) {
			var temp_cond_orders = JSON.parse(document.getElementById("CO_JSON").value);

			$("#cond_orders_list").html("");
			for(var i in temp_cond_orders) {
				// skip save if COs are the same
				if (compare_cond_order(cond_orders[i], temp_cond_orders[i])) {
					var $co = co_create_cond_order(temp_cond_orders[i], true);
				} else {
					cond_orders[i] = temp_cond_orders[i];
					var $co = co_create_cond_order(temp_cond_orders[i], false);
				}
				$("#cond_orders_list").append($co);
			}
		} else {
			alert("Please select a CO-set");
		}
	}

	// receive COs from the page or write COs from Monkey
	var input = document.createElement("input");
	input.id = "CO_JSON";
	input.type = "hidden";
	document.getElementsByTagName("body")[0].appendChild(input);

	// prepare forms to call page scope scripts
	var form = document.createElement("form");
	form.id = "call_setCO";
	form.setAttribute("onreset", "setCO()");
	document.getElementsByTagName("body")[0].appendChild(form);

	var form = document.createElement("form");
	form.id = "call_getCO";
	form.setAttribute("onreset", "getCO()");
	document.getElementsByTagName("body")[0].appendChild(form);
}

var txtScr = embed.toString();
txtScr = txtScr.substring(txtScr.indexOf("{")+1, txtScr.lastIndexOf("}"));
script.appendChild(document.createTextNode(txtScr));

pageHead.appendChild(script);

// run in Monkey
// check availability of the name and assign one if the name has been in use
function name_check(original, temp_name, count) {
	if (temp_name.length == 0) {
		temp_name = name_check("Set", "Set_1", 2);
	} else {
		if (GM_getValue("co"+temp_name, false)) {
			temp_name = name_check(original, original+"_"+count, count+1);
		}
	}
	return temp_name;
}

// save CO to Monkey
function save_COs() {
	var CO_JSON = document.getElementById("CO_JSON").value;
	var CO_name = document.getElementById("CO_list");
	if (CO_name.selectedIndex != 0) {
		CO_name = CO_name.options[CO_name.selectedIndex].value;
		// confirm the user is going to overwrite the save
		if ((document.getElementById("CO_name").value == CO_name) || (document.getElementById("CO_name").value.length == 0)) {
			GM_setValue("co" + CO_name, CO_JSON);
		} else {
			alert("Not sure about your intention:\n1) To rename, press the rename button;\n2) To overwrite, leave the name box blank or type the name as your chosen save;\n3) To add a new set, choose from the dropdown list");
		}
	} else {
		CO_name = name_check(document.getElementById("CO_name").value, document.getElementById("CO_name").value, 1);

		// add to dropdown list
		var option = document.createElement("option");
		option.value = CO_name;
		option.innerHTML = CO_name;
		document.getElementById("CO_list").appendChild(option);

		document.getElementById("CO_list").selectedIndex = document.getElementById("CO_list").length - 1;
		GM_setValue("co" + CO_name, CO_JSON);
	};
}

// load CO from Monkey
function load_COs() {
	var CO_name = document.getElementById("CO_list");
	if (CO_name.selectedIndex != 0) {
		CO_name = CO_name.options[CO_name.selectedIndex].value;
		document.getElementById("CO_JSON").value = GM_getValue("co" + CO_name);
	}
}

// delete CO from Monkey
function delete_COs() {
	var CO_list = document.getElementById("CO_list");
	if (CO_list.selectedIndex != 0) {
		GM_deleteValue("co" + CO_list.options[CO_list.selectedIndex].value);
		CO_list.remove(CO_list.options[CO_list.selectedIndex]);
	}
}

// rename CO from Monkey
function rename_COs() {
	if (document.getElementById("CO_list").selectedIndex != 0) {
		load_COs();
		delete_COs();
		document.getElementById("CO_list").selectedIndex = 0;
		save_COs();
	}
}

// call page scope scripts
function call_setCO() {
	document.getElementById("call_setCO").reset();
}

function call_getCO() {
	document.getElementById("call_getCO").reset();
}

function save_onclick() {
	call_getCO();
	save_COs();
}

function load_onclick() {
	load_COs();
	call_setCO();
}

// create CO-set list
document.getElementById("tactics").style.height = "510px";

var div = document.createElement("div");
div.setAttribute("style", "position: absolute; top: 472px; left: 10px;");

// CO list
var span = document.createElement("span");
span.setAttribute("style", "padding-right: 10px;");
var select = document.createElement("select");
select.setAttribute("style", "width: 250px;");
select.id = "CO_list";
select.className = "ui-selectmenu ui-state-default ui-selectmenu-popup";
var option = document.createElement("option");
option.innerHTML = "Add a New CO-set";
select.appendChild(option);
span.appendChild(select);

div.appendChild(span);
document.getElementById("tactics").appendChild(div);

// name
var span = document.createElement("span");
span.setAttribute("style", "padding-right: 10px;");
var input = document.createElement("input");
input.setAttribute("style", "width: 200px;");
input.id = "CO_name";
input.className = "embossed";
input.type = "text";
input.setAttribute("placeholder", "Name or Rename");
span.appendChild(input);
div.appendChild(span);

var GM_value_list = GM_listValues();
for (var i in GM_value_list) {
	var key = GM_value_list[i];
	if (key.indexOf("co") == 0) {
		key = key.substring(2);
		var option = document.createElement("option");
		option.value = key;
		option.innerHTML = key;
		document.getElementById("CO_list").appendChild(option);
	}
}

// save button
var span3 = document.createElement("span");
span3.setAttribute("style", "padding-right: 10px;");
var span = document.createElement("span");
span.className = "button";
span.addEventListener("click", save_onclick, false);

var span2 = document.createElement("span");
span2.className = "button_border";
span2.innerHTML = "Save COs";
span.appendChild(span2);

span3.appendChild(span);
div.appendChild(span3);

// rename button
var span3 = document.createElement("span");
span3.setAttribute("style", "padding-right: 10px;");
var span = document.createElement("span");
span.className = "button";
span.addEventListener("click", rename_COs, false);

var span2 = document.createElement("span");
span2.className = "button_border";
span2.innerHTML = "Rename CO-set";
span.appendChild(span2);

span3.appendChild(span);
div.appendChild(span3);

// load button
var span3 = document.createElement("span");
span3.setAttribute("style", "padding-right: 10px;");
var span = document.createElement("span");
span.className = "button";
span.addEventListener("click", load_onclick, false);

var span2 = document.createElement("span");
span2.className = "button_border";
span2.innerHTML = "Load COs";
span.appendChild(span2);

span3.appendChild(span);
div.appendChild(span3);

// delete button
var span3 = document.createElement("span");
span3.setAttribute("style", "padding-right: 10px;");
var span = document.createElement("span");
span.className = "button";
span.addEventListener("click", delete_COs, false);

var span2 = document.createElement("span");
span2.className = "button_border";
span2.innerHTML = "Delete CO-set";
span.appendChild(span2);

span3.appendChild(span);
div.appendChild(span3);