Last active
October 31, 2018 22:20
-
-
Save devonwaldon/8c1f42b8dc399b35c0164b42f8b91b0b to your computer and use it in GitHub Desktop.
Extensible FooTable filtering setup
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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