• Welcome to the Kancolle Wiki!
  • If you have any questions regarding site content, account registration, etc., please visit the KanColle Wiki Discord

Changes

Jump to navigation Jump to search
Filterable Function
Line 4: Line 4:  
  * Original from touhouwiki
 
  * Original from touhouwiki
 
  */
 
  */
   
function AutoScroll(objNotice) {
 
function AutoScroll(objNotice) {
 
     $(objNotice).find("ul:first").animate({
 
     $(objNotice).find("ul:first").animate({
Line 12: Line 11:  
     });
 
     });
 
}
 
}
+
 
 
$(document).ready(function() {
 
$(document).ready(function() {
 
     setInterval('AutoScroll("#scrollDiv")',10000);
 
     setInterval('AutoScroll("#scrollDiv")',10000);
Line 22: Line 21:  
});
 
});
   −
   
mw.hook( 'wikipage.content' ).add( createCollapseButtons );
 
mw.hook( 'wikipage.content' ).add( createCollapseButtons );
   
+
 
 +
/**
 +
  Filterable Function
 +
*/
 +
$(function() {
 +
    $(".showExtra").click(function() {
 +
    $(this).closest("table").find(".extraRow").fadeIn("slow");$(this).closest("tr").remove();
 +
    });
 +
    filterTable();
 +
});
 +
 
 +
// FilterTable
 +
function filterTable(){
 +
$("table.filterable").each(function(){
 +
var i=0;
 +
var cols;
 +
$(this).find("tr:first-child th, tr:first-child td").each(function(){
 +
if (!$(this).hasClass("unfilterable")){
 +
cols=[];
 +
$(this).closest("table").find("tr td:nth-child("+(i+1)+")").each(function(){
 +
cols.push($(this).text());
 +
});
 +
cols = arrayUnique(cols);
 +
l=0;
 +
for (j=0; j<cols.length; j++){
 +
t=charLength(cols[j]);
 +
if (l<t) l=t;
 +
}
 +
$(this).css("position","relative");
 +
$(this).html('<a href="javascript:void(0)" class="showFilterMenu">'+$(this).html()+'▼</a>');
 +
$(this).append($('<div class="filterMenu hidden" style="position: absolute; top: '+$(this).height()+35+'px; left: 0; width: '+(50+l*7)+'px; text-align: left; padding: 5px; border: 1px #333333 solid; -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; background: inherit; z-index: 1"></div>'));
 +
for (j=0; j<cols.length; j++){
 +
$(this).find(".filterMenu").append('<div><input type="checkbox" value="'+cols[j]+'" col="'+(i+1)+'" class="filterOption" checked>'+cols[j]+'</div>');
 +
}
 +
}
 +
i++;
 +
});
 +
$(this).find("tr:nth-child(n+1)").attr("condition", 0);
 +
});
 +
$(".showFilterMenu").click(function(){
 +
if ($(this).parent().find(".filterMenu:visible").length){
 +
$(".filterMenu").slideUp(150);
 +
}else{
 +
$(".filterMenu").slideUp(150);
 +
$(this).parent().find(".filterMenu").slideDown(150);
 +
}
 +
});
 +
$(document).mouseup(function(e){
 +
var container = $(".filterMenu");
 +
    if (!container.is(e.target) && container.has(e.target).length === 0){
 +
        container.slideUp(150);
 +
    }
 +
});
 +
$(".filterOption").click(function(){
 +
col=$(this).attr("col");
 +
val=$(this).val();
 +
if ($(this).is(":checked")) chg=1; else chg=-1;
 +
$(this).closest("table").find("tr:nth-child(n+1)").each(function(){
 +
if ($(this).find("td:nth-child("+col+")").text()==val){
 +
var cond=$(this).attr("condition");
 +
cond=Number(cond)+chg;
 +
$(this).attr("condition", cond);
 +
if (cond==0) $(this).show();
 +
else $(this).hide();
 +
}
 +
});
 +
});
 +
}
 +
 
 +
function arrayUnique(a) {
 +
    return a.reduce(function(p, c) {
 +
        if (p.indexOf(c) < 0) p.push(c);
 +
        return p;
 +
    }, []);
 +
}
 +
 
 +
function charLength(s){
 +
return s.length+(encodeURI(s).split(/%..|./).length-1-s.length)/2;
 +
}
 +
 
 
/**
 
/**
 
  * Dynamic Navigation Bars (experimental)
 
  * Dynamic Navigation Bars (experimental)
6,043

edits

Navigation menu