From d8731cec9bf5fcf17ac0c0b24756dff551935b6f Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Tue, 8 Oct 2024 10:40:17 +0200 Subject: [PATCH] Bug 33484: Fix patrons search Setting a DT's custom setting to know if we loaded an existing state, so that we do not pick the value of the selects from the form (on the left). Signed-off-by: Pedro Amorim Signed-off-by: Jonathan Druart Signed-off-by: Martin Renvoize Signed-off-by: Katrin Fischer --- .../prog/en/includes/patron-search.inc | 27 ++++++++++--------- koha-tmpl/intranet-tmpl/prog/js/datatables.js | 3 +++ 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/patron-search.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/patron-search.inc index 2046e69f7d..f53918f5f8 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/patron-search.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/patron-search.inc @@ -869,19 +869,22 @@ $("#[% table_id | html %]_search_results").show(); let table_dt = patrons_table.DataTable(); - [% FOR c IN columns %] - [% SWITCH c %] - [% CASE 'branch' %] - let library_id = patron_search_form.find(".branchcode_filter").val() || ""; - patrons_table.find('thead tr:eq(1) th[data-filter="libraries"] select').val(library_id); - table_dt.column([% loop.count - 1 %]).search(library_id ? '^'+library_id+'$' : ''); - [% CASE 'category' %] - let category_id = patron_search_form.find(".categorycode_filter").val() || ""; - patrons_table.find('thead tr:eq(1) th[data-filter="categories"] select').val(category_id.toLowerCase()); - table_dt.column([% loop.count - 1 %]).search(category_id ? '^'+category_id+'$' : ''); + let loaded_from_state = table_dt.settings()[0].loaded_from_state; + if ( !loaded_from_state ) { + [% FOR c IN columns %] + [% SWITCH c %] + [% CASE 'branch' %] + let library_id = patron_search_form.find(".branchcode_filter").val() || ""; + patrons_table.find('thead tr:eq(1) th[data-filter="libraries"] select').val(library_id); + table_dt.column([% loop.count - 1 %]).search(library_id ? '^'+library_id+'$' : ''); + [% CASE 'category' %] + let category_id = patron_search_form.find(".categorycode_filter").val() || ""; + patrons_table.find('thead tr:eq(1) th[data-filter="categories"] select').val(category_id.toLowerCase()); + table_dt.column([% loop.count - 1 %]).search(category_id ? '^'+category_id+'$' : ''); + [% END %] [% END %] - [% END %] - table_dt.search(""); + table_dt.search(""); + } first_draw = 1; // Only redirect if we are coming from here table_dt.draw(); [% IF display_search_description %] diff --git a/koha-tmpl/intranet-tmpl/prog/js/datatables.js b/koha-tmpl/intranet-tmpl/prog/js/datatables.js index 09a7c13989..b9f7a90973 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/datatables.js +++ b/koha-tmpl/intranet-tmpl/prog/js/datatables.js @@ -979,6 +979,7 @@ function _dt_save_restore_state(table_settings){ const url = new URL(window.location.href); let state_from_url = url.searchParams.get( settings.nTable.id + '_state'); if ( state_from_url ) { + settings.loaded_from_state = true; return JSON.parse(atob(state_from_url)); } @@ -993,6 +994,7 @@ function _dt_save_restore_state(table_settings){ delete state.search; state.columns.forEach(c => delete c.search ); } + settings.loaded_from_state = true; return state; } @@ -1040,6 +1042,7 @@ function _dt_save_restore_state(table_settings){ 'emptyTable': (options.emptyTable) ? options.emptyTable : __("No data available in table") }, 'ajax': _dt_default_ajax({default_filters, options}), + loaded_from_state: false, }, options); } -- 2.39.5