Skip to content

Instantly share code, notes, and snippets.

@devonwaldon
Last active October 31, 2018 22:20
Show Gist options
  • Save devonwaldon/8c1f42b8dc399b35c0164b42f8b91b0b to your computer and use it in GitHub Desktop.
Save devonwaldon/8c1f42b8dc399b35c0164b42f8b91b0b to your computer and use it in GitHub Desktop.
Extensible FooTable filtering setup
function setupFootable( footable ) {
footable.on('expand.ft.row', function(e, ft, row) {
row.$el.find('.toggle i').removeClass('ion-md-add').addClass('ion-md-remove');
});
footable.on('collapse.ft.row', function(e, ft, row) {
row.$el.find('.toggle i').removeClass('ion-md-remove').addClass('ion-md-add');
});
if ($('select.footable-filter').length > 0) {
$('select.footable-filter').each(function () {
var filter_column = $(this).attr('data-foo-filter');
$(this).on('change', function () {
var ft = FooTable.get('table.table');
if ( typeof ft != 'undefined' ) {
var filtering = ft.use(FooTable.Filtering), // get the filtering component for the table
filter = '';
$('select.footable-filter[data-foo-filter="' + filter_column + '"]').each(function () {
filter += $(this).val() + ' ';
});
filter = filter.trim();
if (filter === '') { // if the value is "none" remove the filter
filtering.removeFilter(filter_column);
} else { // otherwise add/update the filter.
// var filter_val = filter_column.replace('-', ' ');
filtering.addFilter(filter_column, '"'+filter+'"', filter_column);
}
filtering.filter();
}
});
});
}
// Filter FooTable with a custom search box
if ($('.fancy-search input[type="text"]').length > 0) {
var timeoutHandle = 0;
$('.fancy-search input[type="text"]').on('keyup', function (event) {
// reset any timeouts if they're there
window.clearTimeout(timeoutHandle);
var ft = FooTable.get('table.table');
if ( typeof ft != 'undefined' ) {
var filtering = ft.use(FooTable.Filtering),
filter = $(this).val();
if (filter === '') { // clear search filter if we're empty (otherwise it searches for an exact blank string)
filtering.removeFilter('search');
filtering.filter();
} else { // otherwise search normally!
filtering.addFilter('search', $(this).val());
timeoutHandle = window.setTimeout(function () {
filtering.filter();
}, 500);
}
}
});
}
if ( $('.search-submit').length ) {
$('.search-submit').on('click tap', function(e) {
$('.fancy-search input[type="text"]').trigger('keyup');
})
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment