MediaWiki:CreatureGridFiltering.js
Jump to navigation
Jump to search
In altre lingue: Deutsch • English • Español • Français • Polski • Portuguê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 )
});