您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Добавление нового функционала к управлению предприятиями
// ==UserScript== // @name Virtonomica: управление предприятиями // @namespace virtonomica // @version 1.60 // @description Добавление нового функционала к управлению предприятиями // @include https://*virtonomic*.*/*/main/company/view/*/unit_list // @include https://*virtonomic*.*/*/main/company/view/* // ==/UserScript== var run = function() { var win = (typeof(unsafeWindow) != 'undefined' ? unsafeWindow : top.window); $ = win.$; // поиск эффективности и подсевтка красным всего что не 100% $("td.prod").each(function() { // эффективность ef = parseInt( $(this).text() ); if (ef < 100) { $(this).css("color", 'red'); } }); function getStyle() { var out = "<style>"; out+= ".tchk {"; out+= "padding: 0px; background: #D8D8D8; float:left; height: 6px; width: 6px; margin: 1px;"; out+= "}"; out+= ".geocombo {"; out+= "background-position: 2px 50%; background-repeat: no-repeat; padding-left: 20px;"; out+= "}"; out+= "</style>"; return out; } function getSizeHtml( size ) { var out = "<div>"; for(var i=0; i<size; i++ ){ out+= "<div class=tchk > </div>"; if (i == 2) out+= "<div style='clear:both'></div>"; } out+= "</div>"; return out; } // сокращенный размер для размеров подразделений $("table.unit-top").append( getStyle() ); /* $("td.size").each(function(){ $(this).html( getSizeHtml( $("img", this).length) ); }); */ var title = $("div.field_title").eq(3); //console.log( title.text() ); title.html( title.html().replace("Размер", "Р.") ).attr('title', 'размер подраздления (от 1 до 6)'); // Перекрашиваем заголовок //$("th").css('background', 'none repeat scroll 0 0 #CED8F6').css('color', 'grey'); // Перемещаем создать подразделение в одну строку с типа подразделений var type_toolbar = $("td.u-l"); //var el = type_toolbar.parent().next(); var el = $("img.img_button").parent(); //console.log( "len = " + el.length); //console.log( el.html() ); var ttt = $("img", el) ; //console.log( ttt.attr('src') ); var create_img = "<a href=" + el.attr('href') + " title='Создать подразделение'><img src=" + ttt.attr('src') +"></a>"; //console.log( create_img ); type_toolbar.append( create_img ); //$("a", el).parent().hide(); el.hide(); var url = /^https:\/\/virtonomic[as]\.(\w+)\/\w+\//.exec(location.href)[0]; // Список с ячейками, содержащими названия подразделений var list = $('td.info'); list.each(function(){ //console.log( $(this).html() ); var str = $(this).html(); var n = str.indexOf('<br>'); if (n == -1) return; str = str.substr(0, n); $(this).html( str ); }); var input_ef = $('<select>') .append('<option value=-1>Все</option>') .append('<option value=10>< 100%</option>') .append('<option value=100>100%</option>') .append('<option value=0>0%</option>').change(function() { var find_count = 0; list.each(function() { var needle = input_ef.val(); // поиск эффективности var ef = parseInt ( $(this).next().next().next().next().text() ); var find = -1; switch( needle ) { case '10': { if ( (ef >0) && (ef != 100) ) find = 1; break; } case '100': { if (ef == 100) find = 1; break; } case '0': { if (ef == 0) find = 1; break; } case '-1': find = 1; break; } // заметки var find_notes = 0; if ( ( $(this).parent().next().prop("class") == "u-z") || ( $(this).parent().next().prop("class") == "u-z ozz") ) { find_notes = 1; } if ( find == -1) { $(this).parent().hide(); if ( find_notes == 1 ) $(this).parent().next().hide(); } else { $(this).parent().show(); find_count++ if ( find_notes == 1 ) $(this).parent().next().show(); } }); if ( find_count == 0) $("#ef_info").html (" "); else $("#ef_info").html ("(" + find_count + ")"); }); // Клик по эффективности $(list).next().next().next().next().css('cursor', 'pointer').prop('title', 'Узнать прогноз эффективности').click(function() { var td = $(this); td.empty().append($('<img>').attr({'src': 'http://s3.devels.info/load.gif', 'height': 16, 'width': 16}).css('padding-right', '20px')); var el = $("td.unit_id", $(this).parent() ); var id = el.text() ; $.get(url + 'window/unit/productivity_info/' + id, function(data) { var percent = $('td:contains(Эффективность работы) + td td:eq(1)', data).text().replace('%', '').trim(); var color = (percent == '100.00' ? 'green' : 'red'); var html = percent + '<i>%</i>'; td.css('color', color).html(html); }); }); var container = $("td.u-l").parent().parent(); var input = $('<input>').attr({type: 'text', value: ''}).change( function() { //alert( list.length ); var needle = new RegExp('^\\s*' + input.val(), 'i'); var find_count = 0; list.each(function() { // если фильтр не задан, то показать все что есть if (needle.length == 0) { $(this).parent().show(); return; } // заметки var find_notes = 0; if ( ( $(this).parent().next().prop("class") == "u-z") || ( $(this).parent().next().prop("class") == "u-z ozz") ) { find_notes = 1; } // применить фильтр if ($(this).text().search(needle) == -1) { $(this).parent().hide(); if ( find_notes == 1 ) $(this).parent().next().hide(); } else { $(this).parent().show(); find_count++; if ( find_notes == 1 ) $(this).parent().next().show(); } }); if ( find_count == 0) $("#find_info").html (" "); else $("#find_info").html ("(" + find_count + ")"); }); // Поиск id // Не забыть убрать var input_id = $(' <button>id</button>').click( function(){ out = ""; var el = $("td.unit_id"); for(i=0; i< el.length; i++){ if ( !el.eq(i).is(':visible') ) continue; id = el.eq(i).text(); out+= id + ", "; } //=================== //out = ''; //supply_id = JSON.parse( window.localStorage.getItem('supply_id') ); //for (key in supply_id){ // out+= key + ", "; //} alert(out); }); // фильтр по регионам var flags = $("td.geo"); var list_region = new Object(); var list_flags = new Object(); for (i=0; i<flags.length; i++){ var reg = flags.eq(i).attr('title'); //console.log(reg); if (list_region[reg]!= null) { list_region[reg]++; } else { list_region[reg] = 1; } list_flags[reg] = flags.eq(i).attr('class').replace('geo', 'geocombo'); } // сортировка объекта как строки function sortObj(arr){ // Setup Arrays var sortedKeys = new Array(); var sortedObj = {}; // Separate keys and sort them for (var i in arr){ sortedKeys.push(i); } sortedKeys.sort(); // Reconstruct sorted obj based on keys for (var i in sortedKeys){ sortedObj[sortedKeys[i]] = arr[sortedKeys[i]]; } return sortedObj; } list_region = sortObj(list_region); var Filter_region = $(" <select style='max-width:140px;'>").append('<option value=0> </option>').change( function(){ search = $(this).val(); var el = $("td.geo").each(function(){ // если фильтр не задан, то показать все что есть if (search == 0) { $(this).parent().show(); return; } var reg = $.trim( $(this).attr('title') ); //console.log( reg + "[" + search +"]"); // применить фильтр if (reg.search(search) == -1) { $(this).parent().hide(); } else { $(this).parent().show(); } }); }); for(name in list_region){ str = '<option class="' + list_flags[name] + '" value="'+ name +'">'+ name; if ( list_region[name] > 1) str+= ' (' + list_region[name] + ')'; str+= '</option>'; Filter_region.append(str); } // Фильтр по городу var input_city = $('<input>').attr({type: 'text', value: ''}).change( function() { var needle = new RegExp('^\\s*' + input_city.val(), 'i'); console.log(needle); var find_count = 0; var el = $("td.geo").each(function(){ // если фильтр не задан, то показать все что есть if (needle.length == 0) { $(this).parent().show(); return; } // применить фильтр if ($(this).text().search(needle) == -1) { $(this).parent().hide(); } else { $(this).parent().show(); find_count++; } if ( find_count == 0) $("#city_info").html (" "); else $("#city_info").html ("(" + find_count + ")"); }); }); var ext_panel = $("#extension_panel"); if ( ext_panel.length == 0 ) { // если панели еще нет, то доабвить её var panel = "<div style='padding: 2px; border: 1px solid #0184D0; border-radius: 4px 4px 4px 4px; float:left; white-space:nowrap; color:#0184D0; display:none;' id=extension_panel></div>"; container.append( "<tr><td>" +panel ); } $("#extension_panel").append(Filter_region); $("#extension_panel").append(" Город: " ).append("<span id=city_info> </span> ").append(input_city); $("#extension_panel").append( " Название: " ).append("<span id=find_info> </span> ").append( input).append( " ") .append('Эффективность: ').append("<span id=ef_info> </span> ").append(input_ef); // Не забыть убрать $("#extension_panel").append(" ").append(input_id); $("#extension_panel").show(); } if(window.top == window) { var script = document.createElement("script"); script.textContent = '(' + run.toString() + ')();'; document.documentElement.appendChild(script); }