您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Плагин для https://greasyfork.org/ru/scripts/2843-virtonomica-%D0%B8%D0%BD%D1%84%D0%BE-%D0%B3%D1%80%D1%83%D0%BF%D0%BF%D0%BE%D0%B2%D1%8B%D0%B5-%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8
// ==UserScript== // @name Virtonomica: смена названий юнитов через групповые операции // @version 1.6 // @include http*://*virtonomic*.*/*/main/company/view/* // @description Плагин для https://greasyfork.org/ru/scripts/2843-virtonomica-%D0%B8%D0%BD%D1%84%D0%BE-%D0%B3%D1%80%D1%83%D0%BF%D0%BF%D0%BE%D0%B2%D1%8B%D0%B5-%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8 // @author cobra3125 // @namespace virtonomica // @grant none // ==/UserScript== var run = function() { var win = (typeof(unsafeWindow) != 'undefined' ? unsafeWindow : top.window); $ = win.$; function changeName(unitLink, newName) { var data = {}; var svUrl = unitLink.attr('href').replace('/main/unit/view/', '/window/unit/changename/'); data['unitData[name]'] = newName; //console.log("data = " + JSON.stringify(data)); $.post( svUrl, data ) .done(function() { console.log( "success" ); if (newName == ""){ var stdName = unitLink.parent().attr('title'); unitLink.text(stdName); } else { unitLink.text(newName); } }) .fail(function() { console.log( "error" ); }) .always(function() { //console.log( "always" ); }); } function add() { var panel = $('legend:contains("Групповые операции")'); if(panel.length == 1) { //console.log( "1" ); var btn = $('<button class="js-multisale-button">Переименовать</button>'); btn.click(function() { var selectedRows = $('tr[class~="ui-selected"]'); if (selectedRows.length == 0) { alert('Сначала выберите одно или несколько подразделений'); } else { var newName = prompt("Введите новое название. Можно использовать ### для автонумерации."); if (newName !== null) { var initCnt = null; var nvMinimumIntegerDigits = 0; if (newName.indexOf('###') > -1) { nvMinimumIntegerDigits = newName.match(/#{3,}/)[0].length; initCnt = prompt("Введите начальное значение счётчика", 1); if (initCnt !== null) { initCnt = parseFloat(initCnt) || 0; } else { return false; } } selectedRows.each(function() { var row = $(this); var unitLink = $('> td.info > a', row).first(); if (nvMinimumIntegerDigits > 0) { var counterStr = initCnt.toLocaleString('en-US',{ style: 'decimal', minimumIntegerDigits: nvMinimumIntegerDigits, useGrouping: false }); changeName(unitLink, newName.replace(/#{3,}/, counterStr)); initCnt++; } else { changeName(unitLink, newName); } }); } } return false; }); panel.after(btn); } } function waitfor(msec, count) { var panel = $('legend:contains("Групповые операции")'); // Check if condition met. If not, re-check later (msec). while (panel.length != 1) { count++; setTimeout(function() { waitfor(msec, count); }, msec); return; } // Condition finally met. callback() can be executed. //console.log("count = " + count); add(); } // Wait until idle (busy must be false) waitfor(100, 0); } if(window.top == window) { var script = document.createElement("script"); script.textContent = '(' + run.toString() + ')();'; document.documentElement.appendChild(script); }