Bug 32016: Fix clear filter button behavior
authorThibaud Guillot <thibaud.guillot@biblibre.com>
Thu, 27 Oct 2022 12:15:19 +0000 (14:15 +0200)
committerArthur Suzuki <arthur.suzuki@biblibre.com>
Thu, 26 Jan 2023 09:36:47 +0000 (10:36 +0100)
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 a054207896610e02ab26a2c6447509d64685094a)

Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
(cherry picked from commit b14493c9088c2e704328065d5e3cffbd664b6faf)
Signed-off-by: Arthur Suzuki <arthur.suzuki@biblibre.com>
koha-tmpl/intranet-tmpl/prog/js/datatables.js

index be9b467..16cb800 100644 (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 ) {