From ed94240f56b93506fe50eb2e4f21b6d60bc4fc87 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=UTF-8 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 --- .../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 22375e56123..e9ee7fee130 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.34.1