From b14493c9088c2e704328065d5e3cffbd664b6faf Mon Sep 17 00:00:00 2001 From: Thibaud Guillot Date: Thu, 27 Oct 2022 14:15:19 +0200 Subject: [PATCH] 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 Signed-off-by: Katrin Fischer Signed-off-by: Tomas Cohen Arazi https://bugs.koha-community.org/show_bug.cgi?id=31881 (cherry picked from commit a054207896610e02ab26a2c6447509d64685094a) Signed-off-by: Lucas Gass --- koha-tmpl/intranet-tmpl/prog/js/datatables.js | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/koha-tmpl/intranet-tmpl/prog/js/datatables.js b/koha-tmpl/intranet-tmpl/prog/js/datatables.js index 74cb2cf0ef..fec815765a 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/datatables.js +++ b/koha-tmpl/intranet-tmpl/prog/js/datatables.js @@ -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 ) { @@ -833,6 +839,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 ) { -- 2.20.1