From 3691950ea939dbe7c5cb8b9c33cbb0857451a754 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 (cherry picked from commit b14493c9088c2e704328065d5e3cffbd664b6faf) Signed-off-by: Arthur Suzuki --- 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 be9b467ff7..16cb8007d4 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 ) { @@ -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 ) { -- 2.39.5