From d586deeee1724234c520dca93510139e3e0b3888 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Fri, 15 Nov 2024 15:04:40 +0100 Subject: [PATCH] Bug 38436: Store loaded_from_state in data instead of DT's settings This has been introduced by bug 33484 as we needed to know if the state was loaded (from URL or localStorage). If the state is loaded then we need to: 1. not redirect if only one patron to display (to prevent a blocking situation) 2. display the table (ie. not defer loading) Signed-off-by: Owen Leonard Signed-off-by: Paul Derscheid --- .../intranet-tmpl/prog/en/includes/patron-search.inc | 11 ++++++----- koha-tmpl/intranet-tmpl/prog/js/datatables.js | 7 +++---- 2 files changed, 9 insertions(+), 9 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 87afa1e7c9..f18ec6d2ac 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/patron-search.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/patron-search.inc @@ -423,13 +423,15 @@ [% END %] [% SET order_column_index = 0 %] [% SET embed = ['extended_attributes','library'] %] - patrons_table = $("#[% table_id | html %]").kohaTable({ + let table_node = $("#[% table_id | html %]"); + patrons_table = table_node.kohaTable({ "ajax": { "url": patron_search_url, "dataSrc": function ( json ) { [% IF redirect_if_one_result %] // redirect if there is only 1 result. // Do not redirect if state has been loaded + let loaded_from_state = table_node.data('loaded_from_state'); if ( !loaded_from_state && first_draw && json.recordsFiltered == 1 ) { let url = '[% redirect_url | url %]'.indexOf("?") != -1 ? '[% redirect_url | url %]&borrowernumber=' + json.data[0].patron_id @@ -777,8 +779,7 @@ parent_block.find(".searchpattern").parent().hide(); }); - let table_dt = patrons_table.DataTable(); - let loaded_from_state = table_dt.settings()[0].loaded_from_state; + let loaded_from_state = patrons_table.data('loaded_from_state'); if ( !defer_loading || loaded_from_state ) { patron_search_form.submit(); } @@ -882,7 +883,7 @@ $("#[% table_id | html %]_search_results").show(); let table_dt = patrons_table.DataTable(); - let loaded_from_state = table_dt.settings()[0].loaded_from_state; + let loaded_from_state = patrons_table.data('loaded_from_state'); if ( !loaded_from_state ) { table_dt.search("").columns().search(""); [% FOR c IN columns %] @@ -898,7 +899,7 @@ [% END %] [% END %] } - table_dt.settings()[0].loaded_from_state = false; + patrons_table.data('loaded_from_state', false); 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 ceaa5f44f4..bebcee9a2e 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/datatables.js +++ b/koha-tmpl/intranet-tmpl/prog/js/datatables.js @@ -907,7 +907,7 @@ function _dt_save_restore_state(table_settings, external_filter_nodes={}){ const url = new URL(window.location.href); let state_from_url = url.searchParams.get( table_key + '_state'); if ( state_from_url ) { - settings.loaded_from_state = true; + $("#" + settings.nTable.id).data('loaded_from_state', true); return JSON.parse(atob(state_from_url)); } @@ -919,7 +919,7 @@ function _dt_save_restore_state(table_settings, external_filter_nodes={}){ state = JSON.parse(state); if (default_save_state_search ) { - settings.loaded_from_state = true; + $("#" + settings.nTable.id).data('loaded_from_state', true); } else { delete state.search; state.columns.forEach(c => delete c.search ); @@ -953,7 +953,7 @@ function _dt_save_restore_state(table_settings, external_filter_nodes={}){ ); }; let stateLoadParams = function (settings, data) { - if (!settings.loaded_from_state) return; + if (!$("#" + settings.nTable.id).data('loaded_from_state')) return; if (data.external_filters) { Object.keys(external_filter_nodes).forEach((k, i) => { @@ -1036,7 +1036,6 @@ function _dt_save_restore_state(table_settings, external_filter_nodes={}){ '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