51 lines
1.4 KiB
JavaScript
51 lines
1.4 KiB
JavaScript
|
// for use with listjs 0.2.0
|
||
|
// https://github.com/javve/list.js
|
||
|
|
||
|
(function(window, undefined) {
|
||
|
|
||
|
window.List.prototype.plugins.delay = function(locals, options) {
|
||
|
var list = this;
|
||
|
|
||
|
this.searchTimeout = undefined;
|
||
|
|
||
|
var init = {
|
||
|
start: function(options) {
|
||
|
this.defaults(options);
|
||
|
this.callbacks(options);
|
||
|
this.onload(options);
|
||
|
},
|
||
|
defaults: function(options) {
|
||
|
options.delayedSearchClass = options.delayedSearchClass || 'delayed-search';
|
||
|
options.delayedSearchTime = options.delayedSearchTime || 500;
|
||
|
},
|
||
|
callbacks: function(options) {
|
||
|
$('.' + options.delayedSearchClass, list.listContainer).keyup(list.searchDelayStart);
|
||
|
},
|
||
|
onload: function(options) {
|
||
|
var initialSearchTerm = $('.' + options.delayedSearchClass, list.listContainer).val();
|
||
|
if('' != initialSearchTerm) {
|
||
|
list.search(initialSearchTerm);
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
this.searchDelayStart = function(searchString, columns) {
|
||
|
// TODO: if keycode corresponds to 'ENTER' ? skip delay
|
||
|
clearTimeout(list.searchTimeout);
|
||
|
list.searchTimeout = window.setTimeout(
|
||
|
function() {list.searchDelayEnd(searchString, columns)},
|
||
|
options.delayedSearchTime
|
||
|
);
|
||
|
|
||
|
$(list.listContainer).trigger('updateComing');
|
||
|
};
|
||
|
|
||
|
this.searchDelayEnd = function(searchString, columns) {
|
||
|
list.search(searchString, columns);
|
||
|
};
|
||
|
|
||
|
init.start(options);
|
||
|
}
|
||
|
|
||
|
})(window);
|