MediaWiki:Common.js

From Super Snail Wiki
Jump to navigation Jump to search

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Press Ctrl-F5.
/* Any JavaScript here will be loaded for all users on every page load. */
//importScriptPage('MediaWiki:CountDownTimer.js', 'supersnail');

$(function() {
	if(!$('#last-updated-text')){
		return;
	}
	
	$('#last-updated-text')[0].innerText = $('#footer-info-lastmod')[0].innerText;
});

$( function() {
	if(!$('.copy-text-button')){
		return;
	}
	
	$('.copy-text-button').click(function() {
		var textBlockID = $(this).attr('class').split(' ')[1];
		var textBlock = $('#'+textBlockID);
		
		navigator.clipboard.writeText(textBlock[0].innerText);
		
		$(this)[0].innerText = 'Copied!';
	})
});

$( function () {
    if( !$( '.filter-toggles' ).length ) {
        return;
    }
    
    $( '.filter-toggles' ).find( 'td > a' ).click( function () {
        
        var classes = $(this).parent().attr('class').split(' ');

        if(classes.includes('filter-toggle-selected')){
            $(this).parent().addClass('filter-toggle-not-selected').removeClass('filter-toggle-selected');
        } else{
            $(this).parent().addClass('filter-toggle-selected').removeClass('filter-toggle-not-selected');
        }
        var classArray = []
		var cat1Classes = [];
	    var cat2Classes = [];
	    var cat3Classes = [];
		var cat4Classes = [];
	    var cat5Classes = [];
	    var cat6Classes = [];
		var cat7Classes = [];
	    var cat8Classes = [];
	    var cat9Classes = [];
		var cat10Classes = [];
		if(!classes.includes('view-all')){
	        var buttons = $('td.filter-toggle-selected');
	        
	        for(var i = 0; i < buttons.length; i++){
	            for(var j = 0; j < buttons[i].classList.length; j++){
	                if(buttons[i].classList[j] == 'wds-button' || buttons[i].classList[j] == 'filter-toggle-selected' || buttons[i].classList[j] == 'filter-toggle-not-selected' ||buttons[i].classList[j] == 'cat1' || buttons[i].classList[j] == 'cat2' || buttons[i].classList[j] == 'cat3' || buttons[i].classList[j] == 'cat4' || buttons[i].classList[j] == 'cat5' || buttons[i].classList[j] == 'cat6' || buttons[i].classList[j] == 'cat7' || buttons[i].classList[j] == 'cat8' || buttons[i].classList[j] == 'cat9' || buttons[i].classList[j] == 'cat10')
	                    continue;
	                else{
	                    if(buttons[i].classList.value.includes('cat1'))
	                        cat1Classes.push(buttons[i].classList[j]);            
	                    else if(buttons[i].classList.value.includes('cat2'))
	                        cat2Classes.push(buttons[i].classList[j]);            
	                    else if(buttons[i].classList.value.includes('cat3'))
	                        cat3Classes.push(buttons[i].classList[j]);            
	                    else if(buttons[i].classList.value.includes('cat4'))
	                        cat4Classes.push(buttons[i].classList[j]);            
	                    else if(buttons[i].classList.value.includes('cat5'))
	                        cat5Classes.push(buttons[i].classList[j]);            
	                    else if(buttons[i].classList.value.includes('cat6'))
	                        cat6Classes.push(buttons[i].classList[j]);            
	                    else if(buttons[i].classList.value.includes('cat7'))
	                        cat7Classes.push(buttons[i].classList[j]);            
	                    else if(buttons[i].classList.value.includes('cat8'))
	                        cat8Classes.push(buttons[i].classList[j]);            
	                    else if(buttons[i].classList.value.includes('cat9'))
	                        cat9Classes.push(buttons[i].classList[j]);            
	                    else if(buttons[i].classList.value.includes('cat10'))
	                        cat10Classes.push(buttons[i].classList[j]);
	                }
	            }    
	        }
		}
		if(cat1Classes.length > 0)
			classArray.push(cat1Classes);
		if(cat2Classes.length > 0)
			classArray.push(cat2Classes);
		if(cat3Classes.length > 0)
			classArray.push(cat3Classes);
		if(cat4Classes.length > 0)
			classArray.push(cat4Classes);
		if(cat5Classes.length > 0)
			classArray.push(cat5Classes);
		if(cat6Classes.length > 0)
			classArray.push(cat6Classes);
		if(cat7Classes.length > 0)
			classArray.push(cat7Classes);
		if(cat8Classes.length > 0)
			classArray.push(cat8Classes);
		if(cat9Classes.length > 0)
			classArray.push(cat9Classes);
		if(cat10Classes.length > 0)
			classArray.push(cat10Classes);
		
        var filter = '';
        var res = []
        if(classArray.length > 0)
        	res = cartesian(classArray);
        	
        console.log(res);
        
        if(res.length > 0){
        	for(var k = 0; k < res.length; k++){
        		filter += 'tr.' + res[k].join('.') + (k == res.length - 1 ? '' : ',');
        	}
        } else{
        	filter = 'tr.toggle-row';
            $('td.filter-toggle-selected').addClass('filter-toggle-not-selected').removeClass('filter-toggle-selected');
        }
        
        $('tr.toggle-row').hide();
        $(filter).show();
    } );
} );

function cartesian(args) {
    var r = [], max = args.length-1;
    function helper(arr, i) {
        for (var j=0, l=args[i].length; j<l; j++) {
            var a = arr.slice(0); // clone arr
            a.push(args[i][j]);
            if (i==max)
                r.push(a);
            else
                helper(a, i+1);
        }
    }
    helper([], 0);
    return r;
}