MediaWiki:CreatureGridFiltering.js

Da ARK Wiki.
Jump to navigation Jump to search

In altre lingue: DeutschEnglishEspañolFrançaisPolskiPortuguês do BrasilРусский


Le modifiche ai file CSS e Javascript devono essere conformi alle regole di design del wiki.


Nota: dopo aver salvato, potrebbe essere necessario pulire la cache del proprio browser per vedere i cambiamenti.

  • Firefox / Safari: tenere premuto il tasto delle maiuscole Shift e fare clic su Ricarica, oppure premere Ctrl-F5 o Ctrl-R (⌘-R su Mac)
  • Google Chrome: premere Ctrl-Shift-R (⌘-Shift-R su un Mac)
  • Internet Explorer: tenere premuto il tasto Ctrl e fare clic su Aggiorna, oppure premere Ctrl-F5
  • Opera: svuotare completamente la cache dal menu Strumenti → Preferenze
/**
 * Grid Filtering
 *
 * Adds filter options to [[Template:Nav creatures/New]].
 * 
 * Javascript:          Karol "[[User:Nanaki]]" Dylewski 
 * License:             CC-BY-SA 3.0 
 *
 * ARK Compatibility:   [[User:3mptylord]]
*/
mw.loader.using( ['mediawiki.util', 'jquery.client'], function () {
	/* Config for gridFiltering */
	var gridContainer = '#creature-grid';
	var SearchPlaceholder = 'Cerca...';
	var gridFilters = {
	'creature': 'search',
	'map': [
		'- Mappa -',
		['The Island','The Island'],
		['The Center','The Center'],
		['Scorched Earth','Scorched Earth'],
		['Ragnarok','Ragnarok'],
		['Aberration','Aberration'],
		['Extinction','Extinction'],
		['Valguero','Valguero'],
		['Genesis','Genesis'],
		['Mobile','Mobile'],
		['Non rilasciata','Non rilasciata'],
		['Rimossa','Rimossa'],
	],
	'group': [
		'- Gruppo -',
		['Predatori alfa','Predatori alfa'],
		['Anfibi','Anfibi'],
		['Uccelli','Uccelli'],
		['Boss','Boss'],
		['Dinosauri','Dinosauri'],
		['Creature inferocite','Creature inferocite'],
		['Creature evento','Creature evento'],
		['Fantastici','Fantastici'],
		['Pesci','Pesci'],
		['Invertebrati','Invertebrati'],
		['Mammiferi','Mammiferi'],
		['Meccanici','Meccanici'],
		['Rettili','Rettili'],
		['Sinapsidi','Sinapsidi'],
		['Creature Tek','Creature Tek'],
		['Titani','Titani'],
	],
	'habitat': [
		'- Habitat -',
		['Arboreo','Arboreo (Alberi)'],
		['Aereo','Aereo'],
		['Acquatico','Acquatico'],
		['Fossorio','Fossorio (Scavatore)'],
		['Terrestre','Terrestre'],
		['Sotterraneo','Sotterraneo'],
		['Boss','Boss (Evocati)'],
	],
	'diet': [
		'- Dieta -',
		['Carnivoro','Carnivori'],
		['Piscivoro','Piscivori'],
		['Erbivoro','Erbivori'],
		['Onnivoro','Onnivori'],
		['Necrofago','Necrofagi'],
		['Coprofago', 'Coprofagi'],
		['Ematofago', 'Ematofagi'],
		['Mangiafiamme', 'Mangiafiamme'],
		['Minerali', 'Minerali'],
		['Spazzino dei fondali', 'Spazzini dei fondali'],
		['Ghiotto di dolci', 'Ghiotti di dolci'],
	],
    };

	function gridFiltering() {
		if(typeof gridContainer === 'undefined' || !gridContainer) return
		var grid = $(gridContainer)
		if(!grid || !grid.length) return
		if(!gridFilteringSwitches()) return
 
		window.gridElements = []
		grid.find('.creature_icon').each(function() {
			var obj = {}
			var elem = $(this)
			obj['*'] = elem
			for(x in gridFilters) {
				obj[x] = elem.data(x).split(',')
				for(var y=0;y<obj[x].length;y++) {
					obj[x][y] = obj[x][y].replace(/^\s+|\s+$/g, '').toLowerCase()
				}
			}
			window.gridElements.push(obj)
		})
	}
 
	function gridFilteringSwitches() {
		var flag = false
		for(x in gridFilters) {
			var container = $('#grid-filter-'+x)
			if(!container.length) continue
			flag = true
 
			if(gridFilters[x] == 'search') {
				var field = $('<input type="text" placeholder="'+SearchPlaceholder+'" />').appendTo(container).attr('id', container.attr('id')+'-field').data('type', 'search')
 
				field.keyup(function() {
					gridFilteringApply()
					if(window.gridFiltersTimeout) window.clearTimeout(window.gridFiltersTimeout)
					window.gridFiltersTimeout = window.setTimeout(gridFilteringClear, 30000)
				})
			} else if(gridFilters[x] instanceof Array) {
				var field = $('<select></select>').appendTo(container).attr('id', container.attr('id')+'-field').data('type', 'select')
				$('<option></option>').appendTo(field).attr('value', '').html(gridFilters[x][0])
				for(var y=1;y<gridFilters[x].length;y++) {
					$('<option></option>').appendTo(field).attr('value', gridFilters[x][y][0]).html(gridFilters[x][y][1])
				}
				field.val('')
 
				field.change(function() {
					gridFilteringApply()
					if(window.gridFiltersTimeout) window.clearTimeout(window.gridFiltersTimeout)
					window.gridFiltersTimeout = window.setTimeout(gridFilteringClear, 30000)
				})
			}
		}
		return flag
	}
	function gridFilteringClear() {
		for(x in gridFilters) {
			$('#grid-filter-'+x+'-field').val('')
		}
		gridFilteringApply()
	}
	function gridFilteringApply() {
		for(var x=0;x<gridElements.length;x++) {
			var elem = $(gridElements[x]['*'])
			var active = true
			for(y in gridFilters) {
				var field = $('#grid-filter-'+y+'-field')
 
				var value = field.val().toLowerCase()
				if(value == '') continue;
 
				var type = field.data('type')
				if(type == 'search') {
					var rx = new RegExp('^.*?(' + value.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&") + ').*?$','i');
					var flag = rx.test(gridElements[x][y].join(', '))
					if(!flag) active = false
				} else if(type == 'select') {
					if(gridElements[x][y].indexOf(value) == -1) active = false
				}
			}
			if(active) gridFilteringShow(elem)
			else gridFilteringHide(elem)
		}
	}
	function gridFilteringHide(elem) {
		$(elem).stop(true);
		$(elem).fadeTo(200, 0.1);
	}
	function gridFilteringShow(elem) {
		$(elem).stop(true);
		$(elem).fadeTo(200, 1);
	}
	$( gridFiltering )
});