Bug 35284: Add DT delay to kohaTable
To test:
* When a specific initComplete exists (general patron search)
* When no specific initComplete exists (cities)
=> KO
* ERM tables display twice the "show X entries" dropdown list
* Column filters are not affected
Signed-off-by: David Cook <dcook@prosentient.com.au>
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
(cherry picked from commit 3819f4a57c
)
Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
This commit is contained in:
parent
34672f0ca4
commit
857637ddb4
1 changed files with 38 additions and 1 deletions
|
@ -51,7 +51,7 @@ var dataTablesDefaults = {
|
||||||
"lengthMenu": [[10, 20, 50, 100, -1], [10, 20, 50, 100, __('All')]],
|
"lengthMenu": [[10, 20, 50, 100, -1], [10, 20, 50, 100, __('All')]],
|
||||||
"pageLength": 20,
|
"pageLength": 20,
|
||||||
"fixedHeader": true,
|
"fixedHeader": true,
|
||||||
initComplete: function( settings) {
|
initComplete: function( settings ) {
|
||||||
var tableId = settings.nTable.id
|
var tableId = settings.nTable.id
|
||||||
var state = settings.oLoadedState;
|
var state = settings.oLoadedState;
|
||||||
state && toggledClearFilter(state.search.search, tableId);
|
state && toggledClearFilter(state.search.search, tableId);
|
||||||
|
@ -61,6 +61,10 @@ var dataTablesDefaults = {
|
||||||
$(this).on( 'search.dt', function ( e, settings ) {
|
$(this).on( 'search.dt', function ( e, settings ) {
|
||||||
toggledClearFilter(settings.oPreviousSearch.sSearch, tableId);
|
toggledClearFilter(settings.oPreviousSearch.sSearch, tableId);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (settings.ajax) {
|
||||||
|
_dt_add_delay($("#"+tableId));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -917,6 +921,39 @@ function _dt_add_filters(table_node, table_dt, filters_options = {}) {
|
||||||
} );
|
} );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// List of unbind keys (Ctrl, Alt, Direction keys, etc.)
|
||||||
|
// These keys must not launch filtering
|
||||||
|
var blacklist_keys = new Array(0, 16, 17, 18, 37, 38, 39, 40);
|
||||||
|
|
||||||
|
function _dt_add_delay(table_node, delay_ms) {
|
||||||
|
|
||||||
|
let dt = table_node.DataTable();
|
||||||
|
delay = (typeof delay == 'undefined') ? 500 : delay;
|
||||||
|
|
||||||
|
var previousSearch = null;
|
||||||
|
var timerId = null;
|
||||||
|
$("#"+table_node.attr('id')+"_wrapper").find(".dataTables_filter input")
|
||||||
|
.unbind()
|
||||||
|
.bind("keyup", function(event) {
|
||||||
|
var input = $(this);
|
||||||
|
if (blacklist_keys.indexOf(event.keyCode) != -1) {
|
||||||
|
return;
|
||||||
|
} else if ( event.keyCode == '13' ) {
|
||||||
|
dt.search($(input).val()).draw();
|
||||||
|
} else {
|
||||||
|
let val = $(input).val();
|
||||||
|
if (previousSearch === null || previousSearch != val){
|
||||||
|
window.clearTimeout(timerId);
|
||||||
|
previousSearch = val;
|
||||||
|
timerId = window.setTimeout(function(){
|
||||||
|
dt.search($(input).val()).draw();
|
||||||
|
}, delay);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
(function($) {
|
(function($) {
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue