LNK_clanSort

Сортировка списка клана

目前為 2021-11-15 提交的版本,檢視 最新版本

// ==UserScript==
// @name        LNK_clanSort
// @author      NemoMan
// @namespace   LNK
// @description Сортировка списка клана
// @include     *heroeswm.ru/clan_info.php*
// @version     1.0
// @grant          none
// ==/UserScript==

(function() {
	'use strict';

 	var table, sortedRows, elems, paramTbl;
	var i;
    var iventCount = false;

    function compareIvent(rowA, rowB) {
        var a = rowA.cells[5].innerHTML.replace(/ *\([^)]*\) */g, "").replace(/[\D]+/g,'');
        var b = rowB.cells[5].innerHTML.replace(/ *\([^)]*\) */g, "").replace(/[\D]+/g,'');
        //rowB.cells[0].innerHTML = b;
        return b-a ;
    }
    
    function compareOrder(rowA, rowB) {
        var a = rowA.cells[0].innerHTML.replace(/[\D]+/g,'');
        var b = rowB.cells[0].innerHTML.replace(/[\D]+/g,'');
        //rowB.cells[0].innerHTML = b;
        return a-b ;
    }
    
    function sortIvent() {
        sortedRows = Array.from(table.rows)
        //.slice(1)
        .sort(compareIvent);
        table.tBodies[0].append(...sortedRows);
        elems = table.rows;
        if (!iventCount) {
            for (i = 0; i < elems.length; i++) {
                elems[i].cells[5].innerHTML = elems[i].cells[5].innerHTML + ' (' + (i+1) + ')';
                elems[i].cells[5].width = '90px';
            }
            iventCount = true;
        }
    }

    function sortOrder() {
        sortedRows = Array.from(table.rows)
        .sort(compareOrder);
        table.tBodies[0].append(...sortedRows);
    }

    if (location.href.indexOf('clan_info.php') != -1) { // страница инфы клана со списком
		var elements = document.querySelectorAll("table");
        for ( i = 0; i < elements.length; i++) {
            if (elements[i].rows.length > 50) {
                //alert(elements[i].rows.length);
                table = elements[i];
                break;
            }
        }
 		paramTbl = document.createElement('table');
		paramTbl.innerHTML =
			'<tbody> '+
				'<tr> '+
					'<td align="left"> <input type="button" id="butSortOrder" value="Сортировать по порядку" /></td>'+
					'<td align="right"> <input type="button" id="butSortIvent" value="Сортировать по очкам в ивенте" /></td>'+
				'</tr> '+
			'</tbody>';
		paramTbl.id="paramTbl";
		paramTbl.align="left";
		paramTbl.width="100%";
		paramTbl.style.borderCollapse = 'collapse';
		paramTbl.setAttribute('border',2);
		paramTbl.setAttribute('cellpadding',4);
		//document.body.append(paramTbl);
        table.before(paramTbl);
		document.getElementById('butSortIvent').onclick = sortIvent;
		document.getElementById('butSortOrder').onclick = sortOrder;
        
	}

 })();