Bug 32016: Fix clear filter button behavior

For example, if you filter by global search input a datatable which saves its previous state when you want to return to this datatable, the backup is recovered in a cookie but the "clear filter" button is disabled because for it the input is empty, the verification of the recovery of the cookie not being made.

When loading I therefore added the verification of the cookie and if the search value is not empty then the button can be activated.

Test plan:

1) Be sure to have some orders and baskets which can be received
2) Go to 'cgi-bin/koha/acqui/booksellers.pl' and click on 'Receive
shipments'
3) Enter something in global search
4) Go to receive and cancel or save to be back on datatable
5) See that you cannot remove your previous input by the 'clear filter'
button
6) Apply this patch
7) Repeat steps 3) and 4)
8) See that now you can remove your search

Signed-off-by: David Nind <david@davidnind.com>

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>

https://bugs.koha-community.org/show_bug.cgi?id=31881
(cherry picked from commit a054207896)

Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
(cherry picked from commit b14493c908)
Signed-off-by: Arthur Suzuki <arthur.suzuki@biblibre.com>
This commit is contained in:
Thibaud Guillot 2022-10-27 14:15:19 +02:00 committed by Arthur Suzuki
parent 81b0a77e8a
commit 3691950ea9
No known key found for this signature in database
GPG Key ID: 7558BEE2BEEEBCAA
1 changed files with 12 additions and 5 deletions

View File

@ -53,19 +53,25 @@ var dataTablesDefaults = {
"fixedHeader": true,
initComplete: function( settings) {
var tableId = settings.nTable.id
var state = $("#" + tableId ).DataTable().state();
state && toggledClearFilter(state.search.search, tableId);
// When the DataTables search function is triggered,
// enable or disable the "Clear filter" button based on
// the presence of a search string
$("#" + tableId ).on( 'search.dt', function ( e, settings ) {
if( settings.oPreviousSearch.sSearch == "" ){
$("#" + tableId + "_wrapper").find(".dt_button_clear_filter").addClass("disabled");
} else {
$("#" + tableId + "_wrapper").find(".dt_button_clear_filter").removeClass("disabled");
}
toggledClearFilter(settings.oPreviousSearch.sSearch, tableId);
});
}
};
function toggledClearFilter(searchText, tableId){
if( searchText == "" ){
$("#" + tableId + "_wrapper").find(".dt_button_clear_filter").addClass("disabled");
} else {
$("#" + tableId + "_wrapper").find(".dt_button_clear_filter").removeClass("disabled");
}
}
// Return an array of string containing the values of a particular column
$.fn.dataTableExt.oApi.fnGetColumnData = function ( oSettings, iColumn, bUnique, bFiltered, bIgnoreEmpty ) {
@ -806,6 +812,7 @@ jQuery.fn.dataTable.ext.errMode = function(settings, note, message) {
if ( add_filters ) {
var table_dt = table.DataTable();
// table_dt.on('search', console.log);
$(this).find('thead tr:eq(1) th').each( function (i) {
var is_searchable = table_dt.settings()[0].aoColumns[i].bSearchable;
if ( is_searchable ) {