MediaWiki:Common.js: Difference between revisions

From CTMS
(Added searchable tables)
(Added facility to exclude rows from table search functionality)
Line 5: Line 5:
$('#'+tableID+' tr').each(function(){   
$('#'+tableID+' tr').each(function(){   
var found = 'false';   
var found = 'false';   
$(this).each(function(){   
if (!$(this).hasClass('non-searchable')) {
if (!$(this).find('th').length > 0) {
$(this).each(function(){   
  if($(this).text().toLowerCase().indexOf(value.toLowerCase()) >= 0)   
if ($(this).find('td.non-searchable').length > 0) {
  {   
  found = 'true'; 
  found = 'true';   
} else if (!$(this).find('th').length > 0) {
  }
  if($(this).text().toLowerCase().indexOf(value.toLowerCase()) >= 0)   
} else {
  {   
// Always keep the header row
  found = 'true';   
found = 'true';
  }
}
} else {
});   
// Always keep the header row
if(found == 'true')   
found = 'true';
{   
}
  $(this).show();   
});   
}   
if(found == 'true')   
else   
{   
{   
  $(this).show();   
  $(this).hide();   
}   
}
else   
{   
  $(this).hide();
}  
}
});   
});   
}   
}   

Revision as of 10:55, 24 July 2024

/* Any JavaScript here will be loaded for all users on every page load. */

// Javascript/jQuery code for searching tables
function search_table(tableID, value){  
	$('#'+tableID+' tr').each(function(){  
		 var found = 'false';  
		 if (!$(this).hasClass('non-searchable')) {
			 $(this).each(function(){  
				if ($(this).find('td.non-searchable').length > 0) {
					   found = 'true';  
				} else if (!$(this).find('th').length > 0) {
				  if($(this).text().toLowerCase().indexOf(value.toLowerCase()) >= 0)  
				  {  
					   found = 'true';  
				  }
				} else {
					// Always keep the header row
					found = 'true';
				}
			 });  
			 if(found == 'true')  
			 {  
				  $(this).show();  
			 }  
			 else  
			 {  
				  $(this).hide();  
			 }  
		 }
	});  
}  
$(document).ready(function(){
	$("table.apt-searchable").each(function(index, element) {
		if (this.id !== '') {
			$('<input type="text" id="'+this.id+'_'+index+'" onkeyup="search_table(\''+this.id+'\',$(this).val())" placeholder="Search the table..">').insertBefore($(this));
		}
	});
});