10 lines
3.3 KiB
JavaScript
10 lines
3.3 KiB
JavaScript
(function($,w,undefined){if(w.footable===undefined||w.footable===null)
|
|
throw new Error('Please check and make sure footable.js is included in the page and is loaded prior to this script.');var defaults={filter:{enabled:true,input:'.footable-filter',timeout:300,minimum:2,disableEnter:false,filterFunction:function(index){var $t=$(this),$table=$t.parents('table:first'),filter=$table.data('current-filter').toUpperCase(),text=$t.find('td').text();if(!$table.data('filter-text-only')){$t.find('td[data-value]').each(function(){text+=$(this).data('value');});}
|
|
return text.toUpperCase().indexOf(filter)>=0;}}};function Filter(){var p=this;p.name='Footable Filter';p.init=function(ft){p.footable=ft;if(ft.options.filter.enabled===true){if($(ft.table).data('filter')===false)return;ft.timers.register('filter');$(ft.table).unbind('.filtering').bind({'footable_initialized.filtering':function(e){var $table=$(ft.table);var data={'input':$table.data('filter')||ft.options.filter.input,'timeout':$table.data('filter-timeout')||ft.options.filter.timeout,'minimum':$table.data('filter-minimum')||ft.options.filter.minimum,'disableEnter':$table.data('filter-disable-enter')||ft.options.filter.disableEnter};if(data.disableEnter){$(data.input).keypress(function(event){if(window.event)
|
|
return(window.event.keyCode!==13);else
|
|
return(event.which!==13);});}
|
|
$table.bind('footable_clear_filter',function(){$(data.input).val('');p.clearFilter();});$table.bind('footable_filter',function(event,args){p.filter(args.filter);});$(data.input).keyup(function(eve){ft.timers.filter.stop();if(eve.which===27){$(data.input).val('');}
|
|
ft.timers.filter.start(function(){var val=$(data.input).val()||'';p.filter(val);},data.timeout);});},'footable_redrawn.filtering':function(e){var $table=$(ft.table),filter=$table.data('filter-string');if(filter){p.filter(filter);}}}).data('footable-filter',p);}};p.filter=function(filterString){var ft=p.footable,$table=$(ft.table),minimum=$table.data('filter-minimum')||ft.options.filter.minimum,clear=!filterString;var event=ft.raise('footable_filtering',{filter:filterString,clear:clear});if(event&&event.result===false)return;if(event.filter&&event.filter.length<minimum){return;}
|
|
if(event.clear){p.clearFilter();}else{var filters=event.filter.split(' ');$table.find('> tbody > tr').hide().addClass('footable-filtered');var rows=$table.find('> tbody > tr:not(.footable-row-detail)');$.each(filters,function(i,f){if(f&&f.length>0){$table.data('current-filter',f);rows=rows.filter(ft.options.filter.filterFunction);}});rows.each(function(){p.showRow(this,ft);$(this).removeClass('footable-filtered');});$table.data('filter-string',event.filter);ft.raise('footable_filtered',{filter:event.filter,clear:false});}};p.clearFilter=function(){var ft=p.footable,$table=$(ft.table);$table.find('> tbody > tr:not(.footable-row-detail)').removeClass('footable-filtered').each(function(){p.showRow(this,ft);});$table.removeData('filter-string');ft.raise('footable_filtered',{clear:true});};p.showRow=function(row,ft){var $row=$(row),$next=$row.next(),$table=$(ft.table);if($row.is(':visible'))return;if($table.hasClass('breakpoint')&&$row.hasClass('footable-detail-show')&&$next.hasClass('footable-row-detail')){$row.add($next).show();ft.createOrUpdateDetailRow(row);}
|
|
else $row.show();};}
|
|
w.footable.plugins.register(Filter,defaults);})(jQuery,window); |