From ec96f51becd2586cd32424390a4b52ffccee2e7b Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Thu, 20 Apr 2023 07:59:47 +0200 Subject: [PATCH] Bug 33568: Restore filters MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit FIXME - If we click 'show filters' the 'columns' list does not contain all the columns. We are destroying the DT and the hidden columns are removed from the dom. I think there are 2 possible solutions here: 1. don't destroy but adjust the 'dom' parameter of DT (I didn't manage to make this work correctly, because of the th filters) 2. Move the th definition in the JS init of DT Signed-off-by: Owen Leonard Signed-off-by: Laurence Rault Signed-off-by: Emily Lamancusa Signed-off-by: Tomás Cohen Arazi Signed-off-by: Katrin Fischer --- .../prog/en/modules/catalogue/detail.tt | 75 +++++++++++++------ 1 file changed, 52 insertions(+), 23 deletions(-) diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt index 22375e5612..e9ee7fee13 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt @@ -318,8 +318,12 @@ [% items_table_block_iter = items_table_block_iter + 1 %]
[% IF (StaffDetailItemSelection) %] - | Select all | - Clear all + + Show filters + + + | Select all + | Clear all | Actions: [% IF CAN_user_tools_items_batchdel %] @@ -1397,6 +1401,24 @@ $("input[name='itemnumber'][type='checkbox']", $("#"+tab)).prop('checked', false); itemSelectionBuildActionLinks(tab); }); + + $(".show_filters").on("click",function(e){ + e.preventDefault(); + let tab = $(this).data("tab"); + $("#"+tab).find(".show_filters").hide(); + $("#"+tab).find(".hide_filters").show(); + $("#"+tab+"_table thead tr:eq(1)").remove(); + build_items_table(tab+"_table", true, { dom: dataTablesDefaults.dom, destroy: true } ); + }); + + $(".hide_filters").on("click",function(e){ + e.preventDefault(); + let tab = $(this).data("tab"); + $("#"+tab).find(".hide_filters").hide(); + $("#"+tab).find(".show_filters").show(); + $("#"+tab+"_table thead tr:eq(1)").remove(); + build_items_table(tab+"_table", false, { dom: 'C<"top pager"ilpfB><"#filter_c">tr<"bottom pager"ip>', destroy: true } ); + }); }); [% END %] @@ -1532,6 +1554,7 @@ var bundle_settings = [% TablesSettings.GetTableSettings('catalogue', 'detail','bundle_tables','json') | $raw %]; var bundle_lost_value = [% Koha.Preference('BundleLostValue') | html %]; [% END %] + $(document).ready(function() { [% IF bundlesEnabled %] // Bundle handling @@ -1839,21 +1862,9 @@ // End bundle handling [% END %] - var table_ids = [ 'holdings_table', 'otherholdings_table' ]; - var table_settings = [ [% TablesSettings.GetTableSettings('catalogue', 'detail','holdings_table','json') | $raw %], [% TablesSettings.GetTableSettings('catalogue', 'detail','otherholdings_table','json') | $raw %] ]; - table_ids.forEach( function( table_id, index ) { - let filters = {}; - [% IF Koha.Preference('SeparateHoldings') %] - [% SET SeparateHoldingsBranch = Koha.Preference('SeparateHoldingsBranch') || 'homebranch' %]; - let branch = '[% IF SeparateHoldingsBranch == 'homebranch' %]home_library_id[% ELSE %]holding_library_id[% END %]'; - if ( table_id == 'holdings_table' ) { - filters[branch] = '[% Branches.GetLoggedInBranchcode() | html %]'; - } else { - filters[branch] = { '!=': '[% Branches.GetLoggedInBranchcode() | html %]' }; - } - [% END %] - - var table = build_table(table_id, table_settings[index], filters); + let items_table_ids = [ 'holdings_table', 'otherholdings_table' ]; + items_table_ids.forEach( function( table_id, index ) { + build_items_table(table_id, false, { dom: 'C<"top pager"ilpfB><"#filter_c">tr<"bottom pager"ip>' }); [% IF bundlesEnabled %] // Add event listener for opening and closing bundle details @@ -2191,16 +2202,33 @@ embed.push('course_item.course_reserves.course'); [% END %] - function build_table (table_id, table_settings, filters) { + let items_table_settings = { + holdings_table: [% TablesSettings.GetTableSettings('catalogue', 'detail','holdings_table','json') | $raw %], + otherholdings_table: [% TablesSettings.GetTableSettings('catalogue', 'detail','otherholdings_table','json') | $raw %], + }; + + function build_items_table (table_id, add_filters, dt_options) { + + let default_filters = {}; + [% IF Koha.Preference('SeparateHoldings') %] + [% SET SeparateHoldingsBranch = Koha.Preference('SeparateHoldingsBranch') || 'homebranch' %]; + let branch = '[% IF SeparateHoldingsBranch == 'homebranch' %]me.home_library_id[% ELSE %]me.holding_library_id[% END %]'; + if ( table_id == 'holdings_table' ) { + default_filters[branch] = '[% Branches.GetLoggedInBranchcode() | html %]'; + } else { + default_filters[branch] = { '!=': '[% Branches.GetLoggedInBranchcode() | html %]' }; + } + [% END %] + [% IF hidden_count %] - filters.lost_status = "0"; + default_filters.lost_status = "0"; [% END %] var items_table = $("#" + table_id).kohaTable({ ajax: { url: item_table_url }, order: [[ 0, "asc" ]], embed, autoWidth: false, - bKohaColumnsUseNames: true, // FIXME We should not need that now, do we? + bKohaColumnsUseNames: true, columns: [ [% IF (StaffDetailItemSelection) %] { @@ -2660,10 +2688,11 @@ } }); }, + ...dt_options, }, - table_settings, - true, - filters, + items_table_settings[table_id], + add_filters, + default_filters, ); return items_table; } -- 2.39.5