您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Дополнительная информация по лаборатории
当前为
// ==UserScript== // @name Virtonomica:Labs Info // @name:en Virtonomica:Labs Info // @namespace Virtonomica // @version 1.51 // @description Дополнительная информация по лаборатории // @description:en Additional information about the lab // @include https://*virtonomic*.*/*/main/unit/view/*/investigation // ==/UserScript== var run = function() { function TrimStr(s) { s = s.replace( /^\s+/g, ''); return s.replace( /\s+$/g, ''); } /** * Склоенение числа дней */ function getDays( days ){ if (lang == "En") { if (days == 1) return "1 day"; else return days + " days"; } // RU d = days%10; switch( d ){ case 1: return (days + " день"); case 2: case 3: case 4: return (days + " дня"); default : return (days + " дней"); } } // определяем интерфейс // autodefined language interface var lang = 'undef'; var bt_logout = $("li[class='icon menulogout']"); var logout_string = bt_logout.attr('title'); if (logout_string == 'Выход') { lang = 'Ru'; } else if(logout_string == 'Logout') { lang = 'En'; } if ( lang == 'undef') { alert('Unsupported language for userscript "LabsInfo"'); return; } // Строки зависимые от языка // language definitions var LangMsg = new Object(); LangMsg['Ru'] = new Object(); LangMsg['En'] = new Object(); LangMsg['Ru']['Scientists'] = "Учёных на проекте"; LangMsg['En']['Scientists'] = "Scientists in project"; LangMsg['Ru']['required'] = "требуется учёных:"; LangMsg['En']['required'] = "scientists required"; LangMsg['Ru']['Current research stage'] = "Текущая стадия длится"; LangMsg['En']['Current research stage'] = "Current research stage lasts for"; LangMsg['Ru']['average up'] = "средний прирост"; LangMsg['En']['average up'] = "average up"; LangMsg['Ru']['prognosis'] = "прогнозируется заверешние работ через "; LangMsg['En']['prognosis'] = "Prognosis completion in "; LangMsg['Ru']['bonus'] = "Бонус"; LangMsg['En']['bonus'] = "Bonus"; function getLabsInfo() { info = $("<div id=labs_info></div>"); $("table.infoblock").before( info ); // Число ученых var works = $("td:contains('" + LangMsg[lang]['Scientists'] + "')").next().text().replace(" ","").replace(" ",""); // Сколько ученых надо var el_req = $("td:contains('" + LangMsg[lang]['required'] + "')"); var str = el_req.text(); var pos = str.indexOf('(') + 1 + LangMsg[lang]['required'].length; var req = parseInt( str.substr(pos).replace(")","").replace(" ","").replace(" ","") ); var power = works/req; el_req.append( " <font color=green>" + (Math.ceil(works/req*1000)/10) + "%</font>" ); // Число недель для текущей стадии var weeks = $("td:contains('" + LangMsg[lang]['Current research stage'] + "')").next().text(); if (weeks > 0) { // Элемент для вывода информации var el = $("td.progress_bar:eq(1)").next(); // Текущий процент var procents = parseFloat( el.text() ); var up = procents/weeks; var last = Math.ceil( (100 - procents)/up); el.parent().parent() .append("<tr><td colspan=2>"+ LangMsg[lang]['average up'] + ": " + (Math.ceil( 1000*up )/1000) + "%") .append("<tr><td colspan=2>" + LangMsg[lang]['prognosis'] + "<font color=green>" + getDays(last) + "</font>"); } // поиск гипотез form = $("form[action*='investigation']"); tr = $("tr[onclick^='hypotesisSelect']", form.eq(0) ); // Bonus kv = 1.0; // find all bonus var td_bonus = $("td:contains('" + LangMsg[lang]['bonus'] + "')").next(); var div_bonus = $("div", td_bonus); for(var i=0; i<div_bonus.length; i++ ) { var str = div_bonus.eq(i).text(); var pos1 = str.indexOf('+') + 2; var pos2 = str.indexOf('%') - 1; var bonus = parseFloat( str.substr(pos1, pos2-pos1) ); kv *= (1 + bonus/100); } k = kv*1.4286*(1 - 0.3/power); for (i=0; i<tr.length; i++){ td = $("td", tr.eq(i) ); pr = parseFloat(td.eq(2).text().replace("%", "").replace(" ", "").replace(" ", "") ); days = parseFloat(td.eq(3).text().replace(" ", "").replace(" ", "") ); td.eq(3).append( " <span title='" + (Math.ceil(days/k*10)/10)+"'><font color=maroon>(" + (Math.ceil(days/k)/1) + ")</font></span>"); } } getLabsInfo(); } if(window.top == window) { var script = document.createElement("script"); script.textContent = '(' + run.toString() + ')();'; document.documentElement.appendChild(script); }