Virtonomica:DinamicSalary 2

Позволяет помечать города из списка

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name           Virtonomica:DinamicSalary 2
// @namespace      Virtonomica
// @description     Позволяет помечать города из списка
// @description     Клик по названию города помечает его зачеркиванием
// @description     Повторный клик снимает зачеркивание
// @version        1.92
// @include        https://*virtonomic*.*/*main/common/main_page/game_info/salary
// @include    	   https://virtonomic*.*/*/main/company/view/*/unit_list
// @include    	   https://virtonomic*.*/*/main/company/view/*/unit_list/employee
// ==/UserScript==

var run = function() {

    var win = (typeof(unsafeWindow) != 'undefined' ? unsafeWindow : top.window);
    $ = win.$;

	/**
    * записать данные в локальнео хранилище, с проверкой ошибок
    */
	function ToStorage(name,  val)
	{
        try {
            window.localStorage.setItem( name,  JSON.stringify( val ) );
		} catch(e) {
         out = "Ошибка добавления в локальное хранилище";
		}
	}

	var demograhics = JSON.parse( window.localStorage.getItem('demograhics') );
	if (demograhics == null) {
		demograhics = new Object();
	}
	
	// Проверим ссылку что это список юнитов
	var href = location.href;
	n = href.lastIndexOf("/");
	end = href.substr(n+1, href.length) ;
	if ( end == "unit_list" ) {
		var table = $("table.unit-list-2014");
		var el = $("td.geo", table);
		for( i=0; i<el.length; i++){
			var name = $.trim( el.eq(i).text() );
			if (demograhics[name] == null) continue;
			//console.log(name);
			//console.log( demograhics[name] );
			
			var add = "";
			if ( demograhics[name]['price'] != null) {
				add+= "<font color=";
				if (parseFloat(demograhics[name]['price']) < 0) {
					add+= "red";
				} else {
					add+= "green";
				}
				add+= ">";
				add+= "$" + demograhics[name]['price'];
				add+= "</font>";
			}
			if ( demograhics[name]['obr'] != null) {
				add+= "<font color= ";
				if (parseFloat(demograhics[name]['obr']) < 0) {
					add+= "red";
				} else {
					add+= "green";
				}
				add+= ">";
				add+= " Об." + demograhics[name]['obr'];
				add+= "</font>";
			}
			if (add != "") {
				el.eq(i).append( "<br><small>(" + add + ")</small>");
			}
		}	
		return;
	} 
		n = href.lastIndexOf("employee");
		console.log("employee 0");
		// Управление - персонал
		if (n > -1) {
			console.log("employee");
			var table = $("table.list");
			var el = $("td.u-a", table);
			console.log(el.length);
			for( i=0; i<el.length; i++){
				var name = $.trim( $("b", el.eq(i)).text() );
				if (demograhics[name] == null) continue;
				//console.log(name);
				//console.log( demograhics[name] );
			
			var add = "";
			if ( demograhics[name]['price'] != null) {
				add+= "<font color=";
				if (parseFloat(demograhics[name]['price']) < 0) {
					add+= "red";
				} else {
					add+= "green";
				}
				add+= ">";
				add+= "$" + demograhics[name]['price'];
				add+= "</font>";
			}
			if ( demograhics[name]['obr'] != null) {
				add+= "<font color= ";
				if (parseFloat(demograhics[name]['obr']) < 0) {
					add+= "red";
				} else {
					add+= "green";
				}
				add+= ">";
				add+= " Об." + demograhics[name]['obr'];
				add+= "</font>";
			}
			if (add != "") {
				el.eq(i).append( "<small>(" + add + ")</small>");
			}
			
		}	
		return;
			
		}

	
    //console.log('start');
    var table = $("table.list");
    var tr = $("tr", table);
    for(i=1; i<tr.length; i++) {
		td = $("td", tr.eq(i) ).eq(0);
		if (td.length== 0) continue;

		img = $('img', td);
		if (img.length != 1) continue;

		img.click( function() {
			el = $(this).parent().parent();
			var decor = el.css("text-decoration");
			//console.log(decor);
			var new_decor = "none";
			var new_color = "black";
			if (decor != 'line-through'){
				new_decor = "line-through";
				new_color = "grey";
			}	
			el.css("text-decoration", new_decor);
			el.css("color", new_color);
		});
	
		var name = $.trim( img.next().html() );
		//console.log(name);
		
		td = $("td", tr.eq(i) ).eq(5);
		price = $.trim( td.text() );
		if ( price != "") {
			price = price.replace('$','');
			price = price.replace('+','');
			//console.log( price );ar
			if ( demograhics[ name ] == null ) {
				demograhics[ name ] = new Object();
			} 
			demograhics[ name ]['price'] = price;
		}
		
		td = $("td", tr.eq(i) ).eq(7);
		ur_obr = $.trim( td.text() );
		if ( ur_obr != "") {
			ur_obr = ur_obr.replace('+','');
			//console.log( ur_obr );
			if ( demograhics[ name ] == null ) {
				demograhics[ name ] = new Object();
			} 
			demograhics[ name ]['obr'] = ur_obr;
		}
    }	
    //console.log( demograhics );
	ToStorage("demograhics", demograhics);

    table.before("<p>Клик мышкой по флажку слева от города делает строчку зачеркнутой.<br>Повторный клик снимает зачеркнутость.<div id=dm_out></div>");
	
	var save = $('<div id=dm_save style="float:left;cursor:pointer;">SAVE</div>');
	var clear = $('<div id=dm_save style="float:right;cursor:pointer;">CLEAR</div>');
	
	table.before(save).before(clear);

	save.click(function(){
		console.log( demograhics );
		ToStorage("demograhics", demograhics);
		$("#dm_out").html("данные сохранены").css('color', 'green');
	});
	
	clear.click(function(){
		demograhics = null;
		ToStorage("demograhics", demograhics);
		$("#dm_out").html("данные сброшены").css('color', 'red');
	});
	
}


// Хак, что бы получить полноценный доступ к DOM >:]
if(window.top == window) {
    var script = document.createElement("script");
    script.textContent = '(' + run.toString() + ')();';
    document.documentElement.appendChild(script);
}