Virtonomica:Top page redisign

Переделываем новый "дизайн" (конца 2019 года)

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name     Virtonomica:Top page redisign
// @version  0.1
// @description Переделываем новый "дизайн" (конца 2019 года)
// @grant    none
// @include	https://*virtonomic*.*/vera/main/user/privat/persondata/knowledge
// @namespace https://greasyfork.org/users/2055
// ==/UserScript==
var run = function() {

var win = (typeof(unsafeWindow) != 'undefined' ? unsafeWindow : top.window);
	$ = win.$;
  
  function get_qa_type( el )
  {
  	//var tmp = $(".qa-advert", el);
    //if (tmp.length == 1) return "advert";
    var type = ['management', 'medicine', 'car', 'it', 'educational', 'restaurant', 'service', 'trade', 'mining', 'manufacture', 'power', 'animal', 'fishing', 'farming', 'research'];
    
    for( var i=0; i< type.length; i++) {
	    var tmp = $(".qa-" + type[i], el);
      if (tmp.length == 1) return type[i]
    }
    /*
    var tmp = $(".qa-management", el);
    if (tmp.length == 1) return "management";
    
    tmp = $(".qa-medicine", el);
    if (tmp.length == 1) return "medicine";
    
    tmp = $(".qa-car", el);
    if (tmp.length == 1) return "car";

    tmp = $(".qa-it", el);
    if (tmp.length == 1) return "it";

    tmp = $(".qa-educational", el);
    if (tmp.length == 1) return "educational";

    */
    return "unknow";
  }
  
	// Стили  
	var st = $("style");

  // скрываем иконки "достижений"
  st.append(".achivement{display: none;}");
  
  // класс для показа базового числа рабочих
  st.append(".base{color: #2149c1;font-weight: bold;}");
  
  // раздвигаем на весь блок
  $(".skill").css("width", "100%");  
  
  // меняем цвет у прироста
  $(".fill2").css("background-color","#b9b9b9");
  
  // убираем кнопки повышения квалы
  $(".input-group").css("display","none");
  $(".forecast_value_container").parent().css("display","none");
  
  // надписи про рабоичх и рекламу в одну строку
  $(".legend").css("white-space", "nowrap");
  
  //$(".bonuses-table tr").css("width", "40px");
  
  //ускорение роста навыка после покупки:
  $(".message").each( function(){
  	var el = $(this);
    el.html( el.html().replace("ускорение роста навыка после покупки:", ""));
  });
  $(".text").each( function(){
  	var el = $(this);
    el.html( el.html().replace("за пересчёт:", "+"));
    	
  });
  
  st.append(".pull-right{color: #790ddf;}");
  
  
  var kv = $(".values");
  console.info(kv);
  kv.each( function(){
    var el = $(this);
    var val = parseInt( $(".val", el ).text() );
    
    var type = get_qa_type( el );
    
    console.log( type + ":" + val);
    //console.info( val );
    
    if ( type == "unknow") return;
    
    var info = $(".text-right", el.parent().parent() );
    console.info( info );
    info.before("<td class='base text-center text-middle' title='Максимальная численность персонала для квалификации без бонусов / миниум для 100% роста квалификации'>" + getThousandsSplitted( calcPersonalTop3( val, type) ) + "</td>");
    //text-right

  });
  
  // попробуем переместить усорение от снятия штрафа на рост квалы
  $(".card-block").each(function(){
  	var el = $(this);
    var mes = $(".message", el) ;
    mes.hide();
    //$('.legend', el).append("<tr><div class='message>'" + mes.html() + "</div>" );
    $('.legend', el).append( "<span class=message>" + mes.html() + "</span>" );
    mes.hide();
    
  });
  
 	function getThousandsSplitted(val) {
		return val.toString().replace(/\B(?=(\d{3})+(?!\d))/g, " ");
	}

	/**
   * вычисляет максимальное кол-во работающих на предприятиях отрасли для заданной квалификации игрока (топ-3)
	 * function calcPersonalTop3(q, type)
   *
	 *@param q - квалификация игрока
	 * 
	 */
	function calcPersonalTop3( q, type){
		return ((2*q*q + 6*q)*getK3(type));
	}

	/**
	 * возвращает к для расчётов нагрузки по типу для топ-3
	 *   
	 *@param type строка с запрашиваемым типом
	 */
	function getK3(type)
	{
		switch(type)
		{
			//case('shop'):
      case('trade'):
			//case('restaurant'):
      case('restaurant'):
			//case('lab'):
      case('research'):  
				return 5;
				break;
			case('workshop'):
				if (/anna/.test(window.location.href)) {
				return 100;
				break;
				}
				else {
				return 50;
				break;
				}
			case('mill'):
				if (/anna/.test(window.location.href)) {
				return 100;
				break;
				}
				return 50;
				break;
			case('sawmill'):
				if (/anna/.test(window.location.href)) {
				return 100;
				break;
				}
				return 50;
				break;
			//case('animalfarm'):
      case('animal'):  
				return 7.5;
				break;
			case('medicine'):
			//case('fishingbase'):
      case('fishing'):
				return 12.5;
				break;
			case('farm'):
				return 20;
				break;
			case('orchard'):
				return 15;
				break;
			//case('mine'):
      case('mining'):
				if (/anna/.test(window.location.href)) {
				return 50;
				break;
				}
				else {
				return 100;
				break;
				}
			//case('office'):
      case('management'):
				return 1;
				break;
			//case('service_light'):
      case('service'):
				return 1.5;
				break;
			case('power'):
				return 75.0;
				break;
			//case('repair'):
        case('car'):
				return 2.5;
				break;
			case('fuel'):
				return 2.5;
				break;
			case('educational'):
				return 1.5;
				break;
			case('it'):
				return 1;
				break;
			case('villa'):
			case('warehouse'):
			case('unknown'):
			default:
				return 0;
		}//end switch
	}//end getType()
  
}

if(window.top == window) {
    var script = document.createElement("script");
    script.textContent = '(' + run.toString() + ')();';
    document.documentElement.appendChild(script);
}