您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Находим страницу протокола по дате
- // ==UserScript==
- // @name HWM_Find_Protocol_Page_By_Date
- // @namespace Рианти
- // @description Находим страницу протокола по дате
- // @include http://www.heroeswm.ru/pl_transfers.php?id=*
- // @include http://www.heroeswm.ru/pl_warlog.php?id=*
- // @include http://www.heroeswm.ru/sklad_log.php?id=*
- // @version 1
- // @grant GM_xmlhttpRequest
- // ==/UserScript==
- var URL_Template = document.location.href.split('&')[0].split('#')[0] + '&page=';
- var lookupProcess;
- function requestPage (url, onloadHandler){
- console.log('loading: ', url);
- try{
- GM_xmlhttpRequest({
- overrideMimeType: 'text/plain; charset=windows-1251',
- synchronous: false,
- url: url,
- method: "GET",
- onload: function(response){
- document.getElementById('HWM_Find_By_date').innerHTML = 'Страниц обработано: ' + ++lookupProcess.totalPagesLoaded;
- onloadHandler(new DOMParser().parseFromString(response.responseText, 'text/html').documentElement);
- }
- });
- } catch (e) {
- console.log(e);
- }
- }
- function getPageId(dom){
- return parseInt(dom.querySelector('center > b > font[color="red"]').innerHTML) - 1;
- }
- function getEarliestDateFromPage(dom){
- var regexp = /(\d{2}-\d{2}-\d{2} \d{2}:\d{2})/g;
- var res, temp;
- while(res = regexp.exec(dom.innerHTML)) temp = res;
- return getDateFromHWMFormatString(temp[1]);
- }
- function findDateOnPage(dom, date){
- var regexp = /(\d{2}-\d{2}-\d{2} \d{2}:\d{2})/g;
- var res;
- while(res = regexp.exec(dom.querySelector('body > center:nth-child(2) > table:nth-child(2) > tbody:nth-child(1) > tr:nth-child(1) > td:nth-child(1)').innerHTML)) if (getDateFromHWMFormatString(res[1]) == date) return 1;
- return 0;
- }
- function getDateFromHWMFormatString(string){
- if(string.split(' ').length == 1) string = string + ' 00:00';
- var t1 = string.split(' '),
- t2 = t1[0].split('-');
- return new Date('20' + t2[2] + '-' + t2[1] + '-' + t2[0] + 'T' + t1[1] + ':00Z');
- }
- function lookup(){
- if (lookupProcess.stopLoading) return;
- if (lookupProcess.result){
- loadResult(lookupProcess.lastPage - 1);
- } else if(lookupProcess.lastPage == -1){
- requestPage (URL_Template + 100000, function(dom){
- lookupProcess.lastPage = getPageId(dom);
- lookup();
- });
- } else if(lookupProcess.firstPage != lookupProcess.lastPage) {
- var midPage = Math.floor((lookupProcess.firstPage + lookupProcess.lastPage) / 2);
- requestPage (URL_Template + midPage, function(dom){
- try {
- var dateOnPage = getEarliestDateFromPage(dom);
- if (dateOnPage > lookupProcess.lookedDate) {
- if (lookupProcess.firstPage == getPageId(dom)) lookupProcess.firstPage++;
- else lookupProcess.firstPage = getPageId(dom);
- } else if (dateOnPage < lookupProcess.lookedDate) {
- if (lookupProcess.lastPage == getPageId(dom)) lookupProcess.lastPage--;
- else lookupProcess.lastPage = getPageId(dom);
- } else {
- lookupProcess.lastPage = getPageId(dom);
- lookupProcess.firstPage = lookupProcess.lastPage
- }
- lookup();
- } catch (e ){
- console.log(e);
- }
- });
- } else {
- lookupProcess.lastPage = lookupProcess.firstPage = lookupProcess.lastPage + 1;
- requestPage (URL_Template + lookupProcess.lastPage, function(dom){
- try {
- if (!findDateOnPage(dom, lookupProcess.lookedDate)){
- lookupProcess.result = 1;
- }
- lookup();
- } catch (e ){
- console.log(e);
- }
- });
- }
- }
- function addQuickLink (label, id, action){
- try{
- var quickLinksTable = document.querySelector('body > center:nth-child(2) > center:nth-child(1)');
- if (quickLinksTable) {
- quickLinksTable.innerHTML = quickLinksTable.innerHTML + ' | <a class="pi" id="' + id + '" href="#">' + label + '</a>';
- } else {
- quickLinksTable = document.querySelector('body > center:nth-child(2) > table > tbody > tr');
- quickLinksTable.innerHTML = quickLinksTable.innerHTML + '<td> | <a class="pi" id="' + id + '" href="#">' + label + '</a></td>';
- }
- var elem = document.getElementById(id);
- elem.onclick = action;
- } catch (e) {
- console.log(e);
- }
- }
- addQuickLink ('Поиск по дате', 'HWM_Find_By_date',
- function(){
- var el = document.getElementById('HWM_Find_By_date');
- el.innerHTML = 'Страниц обработано: 0';
- el.onclick = function(){
- el.innerHTML = 'Остановлено';
- lookupProcess.stopLoading = 1;
- };
- main();
- });
- function main(){
- lookupProcess = {
- firstPage: 0,
- lastPage: -1,
- result: 0,
- totalPagesLoaded: 0,
- stopLoading: 0,
- lookedDate: getDateFromHWMFormatString(prompt("Введите дату которую нужно найти в протоколе, в формате дд-мм-гг (например 19-04-15):"))
- };
- console.log('performing lookup on date: ' + lookupProcess.lookedDate);
- lookup();
- }
- function loadResult(pageId){
- document.location.href = URL_Template + pageId;
- }