Virtonomica:Top page redisign

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

  1. // ==UserScript==
  2. // @name Virtonomica:Top page redisign
  3. // @version 0.1
  4. // @description Переделываем новый "дизайн" (конца 2019 года)
  5. // @grant none
  6. // @include https://*virtonomic*.*/vera/main/user/privat/persondata/knowledge
  7. // @namespace https://greasyfork.org/users/2055
  8. // ==/UserScript==
  9. var run = function() {
  10.  
  11. var win = (typeof(unsafeWindow) != 'undefined' ? unsafeWindow : top.window);
  12. $ = win.$;
  13. function get_qa_type( el )
  14. {
  15. //var tmp = $(".qa-advert", el);
  16. //if (tmp.length == 1) return "advert";
  17. var type = ['management', 'medicine', 'car', 'it', 'educational', 'restaurant', 'service', 'trade', 'mining', 'manufacture', 'power', 'animal', 'fishing', 'farming', 'research'];
  18. for( var i=0; i< type.length; i++) {
  19. var tmp = $(".qa-" + type[i], el);
  20. if (tmp.length == 1) return type[i]
  21. }
  22. /*
  23. var tmp = $(".qa-management", el);
  24. if (tmp.length == 1) return "management";
  25. tmp = $(".qa-medicine", el);
  26. if (tmp.length == 1) return "medicine";
  27. tmp = $(".qa-car", el);
  28. if (tmp.length == 1) return "car";
  29.  
  30. tmp = $(".qa-it", el);
  31. if (tmp.length == 1) return "it";
  32.  
  33. tmp = $(".qa-educational", el);
  34. if (tmp.length == 1) return "educational";
  35.  
  36. */
  37. return "unknow";
  38. }
  39. // Стили
  40. var st = $("style");
  41.  
  42. // скрываем иконки "достижений"
  43. st.append(".achivement{display: none;}");
  44. // класс для показа базового числа рабочих
  45. st.append(".base{color: #2149c1;font-weight: bold;}");
  46. // раздвигаем на весь блок
  47. $(".skill").css("width", "100%");
  48. // меняем цвет у прироста
  49. $(".fill2").css("background-color","#b9b9b9");
  50. // убираем кнопки повышения квалы
  51. $(".input-group").css("display","none");
  52. $(".forecast_value_container").parent().css("display","none");
  53. // надписи про рабоичх и рекламу в одну строку
  54. $(".legend").css("white-space", "nowrap");
  55. //$(".bonuses-table tr").css("width", "40px");
  56. //ускорение роста навыка после покупки:
  57. $(".message").each( function(){
  58. var el = $(this);
  59. el.html( el.html().replace("ускорение роста навыка после покупки:", ""));
  60. });
  61. $(".text").each( function(){
  62. var el = $(this);
  63. el.html( el.html().replace("за пересчёт:", "+"));
  64. });
  65. st.append(".pull-right{color: #790ddf;}");
  66. var kv = $(".values");
  67. console.info(kv);
  68. kv.each( function(){
  69. var el = $(this);
  70. var val = parseInt( $(".val", el ).text() );
  71. var type = get_qa_type( el );
  72. console.log( type + ":" + val);
  73. //console.info( val );
  74. if ( type == "unknow") return;
  75. var info = $(".text-right", el.parent().parent() );
  76. console.info( info );
  77. info.before("<td class='base text-center text-middle' title='Максимальная численность персонала для квалификации без бонусов / миниум для 100% роста квалификации'>" + getThousandsSplitted( calcPersonalTop3( val, type) ) + "</td>");
  78. //text-right
  79.  
  80. });
  81. // попробуем переместить усорение от снятия штрафа на рост квалы
  82. $(".card-block").each(function(){
  83. var el = $(this);
  84. var mes = $(".message", el) ;
  85. mes.hide();
  86. //$('.legend', el).append("<tr><div class='message>'" + mes.html() + "</div>" );
  87. $('.legend', el).append( "<span class=message>" + mes.html() + "</span>" );
  88. mes.hide();
  89. });
  90. function getThousandsSplitted(val) {
  91. return val.toString().replace(/\B(?=(\d{3})+(?!\d))/g, " ");
  92. }
  93.  
  94. /**
  95. * вычисляет максимальное кол-во работающих на предприятиях отрасли для заданной квалификации игрока (топ-3)
  96. * function calcPersonalTop3(q, type)
  97. *
  98. *@param q - квалификация игрока
  99. *
  100. */
  101. function calcPersonalTop3( q, type){
  102. return ((2*q*q + 6*q)*getK3(type));
  103. }
  104.  
  105. /**
  106. * возвращает к для расчётов нагрузки по типу для топ-3
  107. *
  108. *@param type строка с запрашиваемым типом
  109. */
  110. function getK3(type)
  111. {
  112. switch(type)
  113. {
  114. //case('shop'):
  115. case('trade'):
  116. //case('restaurant'):
  117. case('restaurant'):
  118. //case('lab'):
  119. case('research'):
  120. return 5;
  121. break;
  122. case('workshop'):
  123. if (/anna/.test(window.location.href)) {
  124. return 100;
  125. break;
  126. }
  127. else {
  128. return 50;
  129. break;
  130. }
  131. case('mill'):
  132. if (/anna/.test(window.location.href)) {
  133. return 100;
  134. break;
  135. }
  136. return 50;
  137. break;
  138. case('sawmill'):
  139. if (/anna/.test(window.location.href)) {
  140. return 100;
  141. break;
  142. }
  143. return 50;
  144. break;
  145. //case('animalfarm'):
  146. case('animal'):
  147. return 7.5;
  148. break;
  149. case('medicine'):
  150. //case('fishingbase'):
  151. case('fishing'):
  152. return 12.5;
  153. break;
  154. case('farm'):
  155. return 20;
  156. break;
  157. case('orchard'):
  158. return 15;
  159. break;
  160. //case('mine'):
  161. case('mining'):
  162. if (/anna/.test(window.location.href)) {
  163. return 50;
  164. break;
  165. }
  166. else {
  167. return 100;
  168. break;
  169. }
  170. //case('office'):
  171. case('management'):
  172. return 1;
  173. break;
  174. //case('service_light'):
  175. case('service'):
  176. return 1.5;
  177. break;
  178. case('power'):
  179. return 75.0;
  180. break;
  181. //case('repair'):
  182. case('car'):
  183. return 2.5;
  184. break;
  185. case('fuel'):
  186. return 2.5;
  187. break;
  188. case('educational'):
  189. return 1.5;
  190. break;
  191. case('it'):
  192. return 1;
  193. break;
  194. case('villa'):
  195. case('warehouse'):
  196. case('unknown'):
  197. default:
  198. return 0;
  199. }//end switch
  200. }//end getType()
  201. }
  202.  
  203. if(window.top == window) {
  204. var script = document.createElement("script");
  205. script.textContent = '(' + run.toString() + ')();';
  206. document.documentElement.appendChild(script);
  207. }