您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Сохранение последних введенных данных по артам, работа без перезагрузки при сохранении новых параметров или взятии артов со склада, сохраненение всего одной кнопкой, и другое.
当前为
// ==UserScript== // @name HWM_WH_Helper // @namespace Рианти // @description Сохранение последних введенных данных по артам, работа без перезагрузки при сохранении новых параметров или взятии артов со склада, сохраненение всего одной кнопкой, и другое. // @include http://www.heroeswm.ru/sklad_info.php?id=*&cat=* // @version 1.2 // @grant GM_getValue // @grant GM_setValue // @grant GM_xmlhttpRequest // ==/UserScript== // Когда цена оранжевая - значит, что сохраненная в скрипте цифра отличается от текущей на складе. Оранжевая - та что сохранена у тебя. Чтоб узнать текущую нужно навести мышку на поле с ценой, она будет в подсказке ///settings var elementColorOnDifference = '#E97300'; var defaultAccessLevel = 0; var checkerTimeout = 50; //ms //\settings var saveStack = [], removeStack = [], stackBusy = 0, dissasembly = 0; var constants = { disabledAccessLevel: '1000' }; function serialize (form) { if (!form || form.nodeName !== "FORM") { return; } var i, j, q = []; for (i = form.elements.length - 1; i >= 0; i = i - 1) { if (form.elements[i].name === "") { continue; } switch (form.elements[i].nodeName) { case 'INPUT': switch (form.elements[i].type) { case 'text': case 'hidden': case 'password': case 'button': case 'reset': case 'submit': q.push(form.elements[i].name + "=" + encodeURIComponent(form.elements[i].value)); break; case 'checkbox': case 'radio': if (form.elements[i].checked) { q.push(form.elements[i].name + "=" + encodeURIComponent(form.elements[i].value)); } break; } break; case 'file': break; case 'TEXTAREA': q.push(form.elements[i].name + "=" + encodeURIComponent(form.elements[i].value)); break; case 'SELECT': switch (form.elements[i].type) { case 'select-one': q.push(form.elements[i].name + "=" + encodeURIComponent(form.elements[i].value)); break; case 'select-multiple': for (j = form.elements[i].options.length - 1; j >= 0; j = j - 1) { if (form.elements[i].options[j].selected) { q.push(form.elements[i].name + "=" + encodeURIComponent(form.elements[i].options[j].value)); } } break; } break; case 'BUTTON': switch (form.elements[i].type) { case 'reset': case 'submit': case 'button': q.push(form.elements[i].name + "=" + encodeURIComponent(form.elements[i].value)); break; } break; } } return q.join("&"); } var buttons = document.querySelectorAll('input[type="submit"][value="Сохранить"]'); for(var i = 0; i < buttons.length; i++){ buttons[i].onclick = function(e){ e.preventDefault(); e.target.value = 'Сохраняем..'; e.target.disabled = true; stackBusy = 1; GM_xmlhttpRequest({ overrideMimeType: 'text/plain; charset=windows-1251', synchronous: false, url: 'http://www.heroeswm.ru/sklad_info.php?' + serialize(e.target.form), method: "GET", onload: function(response){ e.target.value = 'Сохранено'; stackBusy = 0; } }); }; saveStack.push(buttons[i]); } buttons = document.querySelectorAll('input[type="submit"][value="Разобрать"]'); for(i = 0; i < buttons.length; i++){ var t = buttons[i].parentElement.parentElement.parentElement.innerHTML.split('uid='); var st = [], uid; for (var j = 1; j < t.length; j++){ uid = t[j].substr(0, t[j].indexOf('&')); if(st.indexOf(uid) == -1) st.push(uid); } buttons[i].id = '-1|' + st.join('|'); buttons[i].onclick = function(e){ if (!e.ctrlKey && !dissasembly){ e.traget.form.submit(); return; } e.preventDefault(); stackBusy = 1; e.target.value = 'Забираем..'; e.target.disabled = true; disassemble(e); }; removeStack.push(buttons[i]); } function disassemble(e) { if (e.target.id == '') { e.target.value = 'Забрано'; stackBusy = 0; return; } var ids = e.target.id.split('|'); var curId = ids.shift(); e.target.id = ids.join('|'); if (curId == '-1') { GM_xmlhttpRequest({ overrideMimeType: 'text/plain; charset=windows-1251', synchronous: false, url: 'http://www.heroeswm.ru/sklad_info.php?' + serialize(e.target.form), method: "GET", onload: function (response) { disassemble(e); } }); } else { var se = 'set_id=0&inv_id=' + curId + '&action=get_art&cat=0&sign=' + serialize(e.target.form).split('sign=')[1]; GM_xmlhttpRequest({ overrideMimeType: 'text/plain; charset=windows-1251', synchronous: false, url: 'http://www.heroeswm.ru/sklad_info.php?' + se, method: "GET", onload: function (response) { disassemble(e); } }); } } buttons = document.querySelectorAll('input[type="submit"][value="Забрать"]'); for(i = 0; i < buttons.length; i++){ buttons[i].onclick = function(e){ e.preventDefault(); e.target.value = 'Забираем..'; e.target.disabled = true; stackBusy = 1; GM_xmlhttpRequest({ overrideMimeType: 'text/plain; charset=windows-1251', synchronous: false, url: 'http://www.heroeswm.ru/sklad_info.php?' + serialize(e.target.form), method: "GET", onload: function(response){ e.target.value = 'Забрано'; stackBusy = 0; } }); }; removeStack.push(buttons[i]); } var forms = document.querySelectorAll('input[type="submit"][value="Сохранить"]'); for(i = 0; i < forms.length - 1; i++){ var form = forms[i].parentElement.parentElement; var artId = form.querySelector('input[name="inv_id"]').value; var blimit = form.querySelector('select[name="blimit"]'); var bcost = form.querySelector('input[name="bcost"]'); var al = form.querySelector('select[name="al"]'); var saved = JSON.parse(GM_getValue('saved' + artId, 'null')); if (saved){ if(saved.blimit != null && blimit.selectedIndex != saved.blimit){ blimit.title = 'Сейчас выставлено за: ' + blimit[blimit.selectedIndex].innerHTML; blimit.value = saved.blimit; blimit.style.color = elementColorOnDifference; } if(saved.bcost != null && bcost.value != saved.bcost){ bcost.title = 'Текущее: ' + bcost.value; bcost.value = saved.bcost; bcost.style.color = elementColorOnDifference; } if(saved.al == constants.disabledAccessLevel) saved.al = 0; if(al.value == constants.disabledAccessLevel || (saved.al != null && al.value != saved.al)){ al.title = 'Текущее: ' + al[al.selectedIndex].innerHTML; al.value = (saved.al != null ? saved.al : defaultAccessLevel); al.style.color = elementColorOnDifference; } } blimit.onchange = bcost.onchange = al.onchange = function(e){ var form = e.target.form; var artId = form.parentNode.querySelector('input[name="inv_id"]').value; var saved = JSON.parse(GM_getValue('saved' + artId, '{}')); saved[e.target.name] = e.target.value; GM_setValue('saved' + artId, JSON.stringify(saved)); } } if(document.location.href.indexOf('cat=4') == -1){ var cell = document.querySelector('td[align="left"][colspan="3"]'); var cellParent = cell.parentElement; cellParent.removeChild(cell); var td = document.createElement('td'); cellParent.appendChild(td); td.align = 'center'; td.innerHTML = '<input type="button" value="Сохр. всё" id="scr_save_all">'; td = document.createElement('td'); cellParent.appendChild(td); td = document.createElement('td'); cellParent.appendChild(td); td.align = 'center'; td.innerHTML = '<input type="button" value="Забр. всё" id="scr_remove_all">'; document.getElementById('scr_save_all').onclick = saveAll; document.getElementById('scr_remove_all').onclick = removeAll; } else { var cell = document.querySelector('table.wb:nth-child(5) > tbody:nth-child(1) > tr:nth-child(1) > td:nth-child(1) > table:nth-child(1) > tbody:nth-child(1) > tr:nth-child(1) > td:nth-child(5)'); cell.innerHTML = '<input type="button" value="Сохр. всё" id="scr_save_all">'; cell.align = 'center'; document.getElementById('scr_save_all').onclick = saveAll; } function saveAll(){ if (!saveStack.length){ document.location.reload(); return; } if(stackBusy){ setTimeout(saveAll, checkerTimeout); return; } var but = saveStack.shift(); but.click(); setTimeout(saveAll, checkerTimeout); } function removeAll(){ if (!removeStack.length){ document.location.reload(); return; } if(stackBusy){ setTimeout(removeAll, checkerTimeout); return; } dissasembly = 1; var but = removeStack.shift(); but.click(); setTimeout(removeAll, checkerTimeout); } document.onkeydown = function(e){ if (e.ctrlKey) { var buttons = document.querySelectorAll('input[type="submit"][value="Разобрать"]'); for (var i = 0; i < buttons.length; i++){ buttons[i].className = 'dissassembly'; buttons[i].value = 'Забрать'; } } }; document.onkeyup=function(e){ if (!e.ctrlKey) { var buttons = document.querySelectorAll('input[type="submit"][value="Забрать"][class="dissassembly"]'); for (var i = 0; i < buttons.length; i++){ buttons[i].value = 'Разобрать'; } } };