HWM_Clan_Filter

HWM Clan Filter

Du musst eine Erweiterung wie Tampermonkey, Greasemonkey oder Violentmonkey installieren, um dieses Skript zu installieren.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

Sie müssten eine Skript Manager Erweiterung installieren damit sie dieses Skript installieren können

(Ich habe schon ein Skript Manager, Lass mich es installieren!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name          HWM_Clan_Filter
// @description   HWM Clan Filter
// @include       http://www.heroeswm.ru/clan_info.php*
// @version 0.0.1.20140618144557
// @namespace https://greasyfork.org/users/2879
// ==/UserScript==


var url_cur = location.href ;

//alert("HWM_Clan_Filter");	


var m_online_str = "i/clans/online.gif";
var m_offline_str = "i/clans/offline.gif";
var m_battle_str = "i/clans/battle.gif";
var m_cards_str = "i/clans/arcomag.gif";

var my_clan_table = getClanTable();
//alert("found clan table! my_clan_table = \n"+ my_clan_table.innerHTML); 
var clanRowsNodes_arr = my_clan_table.childNodes[0].childNodes;
//alert("clan members = "+clanRowsNodes_arr.length);

//alert("my_node = "+clanRowsNodes_arr[0].childNodes[2].childNodes[3]);
//alert("my_node = "+clanRowsNodes_arr[0].childNodes[2].childNodes[5].innerHTML);

// tech: 1-bk,  3-name, 5 fract
// batl: 1-name, 3 fract

var sortTable_div = document.createElement( 'div' );
sortTable_div.innerHTML = "temp text, should not be seen";
my_clan_table.parentNode.insertBefore(sortTable_div, my_clan_table);

// sorting flags
var doSort1 = false;
var doSort2 = false; // status
var doSort_bk = false; //bk
var doSort_fr = false; //fraction
var doSort3 = false; // name
var doSort4 = false; // level
var doSort5 = false; // descr

var isBattleClan = ( my_clan_table.innerHTML.indexOf("clan_info.php")==-1);


addSortTable();

// bk name fract descr Lv
// \u0411\u041A \u0418\u043C\u044F \u0424\u0440\u0430\u043A\u0446\u0438\u044F \u041E\u043F\u0438\u0441\u0430\u043D\u0438\u0435 \u041B\u0432

function addSortTable(){
	//var link_sort1 = '<a href="javascript:void(0);" id="clanTblSort1" style="background:'+(doSort1?"#6c6":"none")+';">[#]</a>';
	var link_sort1 = '#';
	var link_sort2 = '<a href="javascript:void(0);" id="clanTblSort2" style="background:'+(doSort2?"#6c6":"none")+';">C</a>';
	var link_sort_bk = '<a href="javascript:void(0);" id="clanTblSort_bk" style="background:'+(doSort_bk?"#6c6":"none")+';">[\u0411\u041A]</a>&nbsp;&nbsp;';
	link_sort_bk = isBattleClan? "" : link_sort_bk;
	var link_sort3 = '<a href="javascript:void(0);" id="clanTblSort3" style="background:'+(doSort3?"#6c6":"none")+';">[\u0418\u043C\u044F]</a>';
	var link_sort_fr = '&nbsp;&nbsp;<a href="javascript:void(0);" id="clanTblSort_fr" style="background:'+(doSort_fr?"#6c6":"none")+';">[\u0424\u0440\u0430\u043A\u0446]</a>';
	var link_sort4 = '<a href="javascript:void(0);" id="clanTblSort4" style="background:'+(doSort4?"#6c6":"none")+';">\u041B\u0432</a>';
	var link_sort5 = '<a href="javascript:void(0);" id="clanTblSort5" style="background:'+(doSort5?"#6c6":"none")+';">[\u041E\u043F\u0438\u0441\u0430\u043D\u0438\u0435]</a>';

	var sortHeaders = '<tr>'+
	'<td class=wblight width=30><b>'+ link_sort1 +'</b></td>'+
	'<td class=wblight width=15><b>'+ link_sort2 +'</b></td>'+
	'<td class=wblight width=150><b>'+ link_sort_bk+ link_sort3 +link_sort_fr +'</b></td>'+
	'<td class=wblight width=10><b>'+ link_sort4 +'</b></td>'+
	'<td class=wblight><b>'+ link_sort5 +'</b></td>'+
	'</tr>';
	
	var sortedRows = getSortedRows();
	
	sortTable_div.innerHTML = '<table class=wb width="80%" cellpadding=3 align=center>'+ sortHeaders +sortedRows+ '</table>';
	
	//sortTable_div.innerHTML += "<hr width='50%'>";
		
	// add listeners
	//document.getElementById('clanTblSort1').addEventListener( "click", clanTblSort1 , false );
	document.getElementById('clanTblSort2').addEventListener( "click", clanTblSort2 , false );
	if(!isBattleClan){
	document.getElementById('clanTblSort_bk').addEventListener( "click", clanTblSort_bk , false );
	}
	document.getElementById('clanTblSort_fr').addEventListener( "click", clanTblSort_fr , false );
	document.getElementById('clanTblSort3').addEventListener( "click", clanTblSort3 , false );
	document.getElementById('clanTblSort4').addEventListener( "click", clanTblSort4 , false );
	document.getElementById('clanTblSort5').addEventListener( "click", clanTblSort5 , false );
	//
	//
	if(!doSort1 && !doSort2 && !doSort3 && !doSort_bk && !doSort_fr && !doSort4 & !doSort5){  // NO filters
		my_clan_table.style.display = "";
	}else{
		// hide default table
		my_clan_table.style.display = "none";
	}
}
//
//
function  getSortedRows(){ 
	//var rows_str = clanRows_arr[0].innerHTML ;
	var rows_str = "" ;
	if(!doSort1 && !doSort2 && !doSort3 && !doSort_bk && !doSort_fr && !doSort4 & !doSort5){ return rows_str; } // NO filters
	//
	var clanRowsStr_arr = [];
	for(var i=0; i<clanRowsNodes_arr.length; i++){
		clanRowsStr_arr.push( [i, clanRowsNodes_arr[i].innerHTML] );
	}
	//	
	//clanRowsStr_arr.reverse();	
	clanRowsStr_arr.sort(mySort4Clan);	
	//
	for(i=0; i<clanRowsStr_arr.length; i++){
		rows_str += "<tr>" +clanRowsStr_arr[i][1] +"</tr>";
	}
	
	return rows_str;
}
//
function  mySort4Clan(a,b){ 
	var ax, bx;
	var tn;
	var res = 0;
	// sort according to priority... from less to max
	// 1st - sort by num...
	ax = Number(clanRowsNodes_arr[a[0]].childNodes[0].innerHTML);
	bx = Number(clanRowsNodes_arr[b[0]].childNodes[0].innerHTML);
	res = (ax<bx)? -1 :(ax>bx)? 1 : 0;
	//
	if(doSort5){ //descr
		ax = clanRowsNodes_arr[a[0]].childNodes[4].innerHTML;
		bx = clanRowsNodes_arr[b[0]].childNodes[4].innerHTML;
		if(ax=="&nbsp;&nbsp;" && bx!="&nbsp;&nbsp;"){
			res = 1;
		}else if(ax!="&nbsp;&nbsp;" && bx=="&nbsp;&nbsp;"){
			res = -1;
		}else{
		res = (ax<bx)? -1 :(ax>bx)? 1 : res; 	
		}
	}
	//
	if(doSort_bk && !isBattleClan){ //BK
		ax = clanRowsNodes_arr[a[0]].childNodes[2].childNodes[1].innerHTML;
		bx = clanRowsNodes_arr[b[0]].childNodes[2].childNodes[1].innerHTML;
		res = (ax<bx)? -1 :(ax>bx)? 1 : res; 	
	}
	//
	if(doSort_fr ){ // fract
		tn = isBattleClan? 3: 5;
		if(isBattleClan || clanRowsNodes_arr[a[0]].childNodes[2].innerHTML.indexOf("clan_info.php")!=-1){
		ax = clanRowsNodes_arr[a[0]].childNodes[2].childNodes[tn].title;
		}else{
		ax = clanRowsNodes_arr[a[0]].childNodes[2].childNodes[3].title;
		}
		if(isBattleClan || clanRowsNodes_arr[b[0]].childNodes[2].innerHTML.indexOf("clan_info.php")!=-1){
		bx = clanRowsNodes_arr[b[0]].childNodes[2].childNodes[tn].title;
		}else{
		bx = clanRowsNodes_arr[b[0]].childNodes[2].childNodes[3].title;
		}
		res = (ax<bx)? -1 :(ax>bx)? 1 : res; 	
	}
	//
	if(doSort3 ){ //name
		tn = isBattleClan? 1: 3;
		if(isBattleClan || clanRowsNodes_arr[a[0]].childNodes[2].innerHTML.indexOf("clan_info.php")!=-1){
		ax = clanRowsNodes_arr[a[0]].childNodes[2].childNodes[tn].innerHTML.toLowerCase();
		}else{
		ax = clanRowsNodes_arr[a[0]].childNodes[2].childNodes[1].innerHTML.toLowerCase();
		}
		if(isBattleClan || clanRowsNodes_arr[b[0]].childNodes[2].innerHTML.indexOf("clan_info.php")!=-1){
		bx = clanRowsNodes_arr[b[0]].childNodes[2].childNodes[tn].innerHTML.toLowerCase();
		}else{
		bx = clanRowsNodes_arr[b[0]].childNodes[2].childNodes[1].innerHTML.toLowerCase();
		}
		res = (ax<bx)? -1 :(ax>bx)? 1 : res; 	
	}
	//
	if(doSort4){ //level descending
		ax = Number(clanRowsNodes_arr[a[0]].childNodes[3].innerHTML);
		bx = Number(clanRowsNodes_arr[b[0]].childNodes[3].innerHTML);
		res = (ax<bx)? 1 :(ax>bx)? -1 : res; 	
	}
	//
	if(doSort2){ //status
		ax = clanRowsNodes_arr[a[0]].childNodes[1].innerHTML;
		bx = clanRowsNodes_arr[b[0]].childNodes[1].innerHTML;
		if(ax.indexOf("i/clans/offline.gif")==-1 && bx.indexOf("i/clans/offline.gif")!=-1 ){
			res = -1;
		}else if(ax.indexOf("i/clans/offline.gif")!=-1 && bx.indexOf("i/clans/offline.gif")==-1 ){
			res = 1;
		}else { res = (ax<bx)? -1 :(ax>bx)? 1 : res; }	
	}
	//
	//
	return res;
}
//
// listeners
function  clanTblSort1(){ doSort1 = !doSort1;	addSortTable();	}
function  clanTblSort2(){ doSort2 = !doSort2;	addSortTable();	}
function  clanTblSort_bk(){ doSort_bk = !doSort_bk;	addSortTable();	}
function  clanTblSort_fr(){ doSort_fr = !doSort_fr;	addSortTable();	}
function  clanTblSort3(){ doSort3 = !doSort3;	addSortTable();	}
function  clanTblSort4(){ doSort4 = !doSort4;	addSortTable();	}
function  clanTblSort5(){ doSort5 = !doSort5;	addSortTable();	}
//
//
function getClanTable(){	
	var all_tbl = document.getElementsByTagName('table');
	var my_tbl;
	for (var i = 0; i < all_tbl.length; i++) {
		my_tbl = all_tbl[i];
		//
		if(my_tbl.innerHTML.indexOf('<table')!=-1 ){ continue; } // has child tables... 
		//
		var has_online_gif = (my_tbl.innerHTML.indexOf(m_online_str)!=-1 );
		var has_offline_gif = (my_tbl.innerHTML.indexOf(m_offline_str)!=-1 );
		var has_battle_gif = (my_tbl.innerHTML.indexOf(m_battle_str)!=-1 );
		var has_cards_gif = (my_tbl.innerHTML.indexOf(m_cards_str)!=-1 );
		//
		if(has_online_gif || has_offline_gif || has_battle_gif || has_cards_gif){ 						
			return my_tbl;			
		} 		
	}
}


// ========= END ==============