RandomSec/main/webapp/modules/core/scripts/util/filter-lists.js
2017-11-28 00:16:08 +01:00

62 lines
2.8 KiB
JavaScript

/*
* Copyright (C) 2009 Joel Sutherland.
* Liscenced under the MIT liscense
*/
(function($) {
$.fn.filterList = function(settings) {
settings = $.extend(
{
animationSpeed: 500,
show: { height: 'show', opacity: 'show' },
hide: { height: 'hide', opacity: 'hide' },
useTags: true,
tagSelector: '#projectTags a',
selectedTagClass: 'current',
allTag: 'all'
}, settings);
var listElement = $(this);
/* FILTER: select a tag and filter */
listElement.bind("filter", function( e, tagToShow ){
if(settings.useTags){
$(settings.tagSelector).removeClass(settings.selectedTagClass);
$(settings.tagSelector + '[href=' + tagToShow + ']').addClass(settings.selectedTagClass);
}
$(this).trigger("filterMyList", [ tagToShow.substr(1) ]);
});
/* FILTERPORTFOLIO: pass in a class to show, all others will be hidden */
listElement.bind("filterMyList", function( e, classToShow ){
if(classToShow === settings.allTag){
$(this).trigger("show");
}else{
$(this).trigger("show", [ '.' + classToShow ] );
$(this).trigger("hide", [ ':not(.' + classToShow + ')' ] );
}
});
/* SHOW: show a single class*/
$(this).bind("show", function( e, selectorToShow ){
listElement.children(selectorToShow).animate(settings.show, settings.animationSpeed);
});
/* SHOW: hide a single class*/
$(this).bind("hide", function( e, selectorToHide ){
listElement.children(selectorToHide).animate(settings.hide, settings.animationSpeed * 0.6);
});
/* ============ Setup Tags ====================*/
if(settings.useTags){
$(settings.tagSelector).on("click", function(){
listElement.trigger("filter", [ $(this).attr('href') ]);
$(settings.tagSelector).removeClass('current');
$(this).addClass('current');
});
}
return this;
};
})(jQuery);