From badf81e84c878e7243d7c93bc460aedb987fb035 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Thu, 31 Aug 2023 10:22:11 +0200 Subject: [PATCH] Bug 33568: Do not embed library names MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Performance for 1000 items from 30s to 22s It replaces the input in the column header filter with a dropdown list. Signed-off-by: Owen Leonard Signed-off-by: Laurence Rault Signed-off-by: Emily Lamancusa Signed-off-by: Tomás Cohen Arazi --- .../tables/items/catalogue_detail.inc | 19 ++++++++++++++++--- koha-tmpl/intranet-tmpl/prog/js/datatables.js | 4 ++-- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/html_helpers/tables/items/catalogue_detail.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/html_helpers/tables/items/catalogue_detail.inc index 02c613b5f5e..5df4be9ef0f 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/html_helpers/tables/items/catalogue_detail.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/html_helpers/tables/items/catalogue_detail.inc @@ -1,5 +1,6 @@ [% USE To %] [% USE Koha %] +[% USE Branches %] [% USE AuthorisedValues %] [% USE raw %] @@ -164,6 +165,13 @@ [% END %] + const all_libraries = [% To.json(Branches.all) | $raw %]; + const libraries_filters = all_libraries.map(e => { + e["_id"] = e["branchcode"]; + e["_str"] = e["branchname"]; + return e; + }); + const can_edit_items_from = [% To.json(can_edit_items_from || {}) | $raw %]; const item_type_image_locations = [% To.json(item_type_image_locations) | $raw %]; const av_loc = new Map([% To.json(AuthorisedValues.Get('LOC')) | $raw %].map( av => [av.authorised_value, av.lib])); @@ -185,7 +193,6 @@ [%# Do we need separate/new endpoints or do we hack the somewhere client-side? %] let item_table_url = "/api/v1/biblios/[% biblio.biblionumber | uri %]/items?"; let embed = ["+strings,checkout,checkout.patron,transfer,transfer+strings,first_hold,first_hold+strings,first_hold.patron,first_hold.desk,item_type"]; - embed.push('home_library', 'holding_library'); [% IF Koha.Preference('LocalCoverImages') %] embed.push('cover_image_ids'); [% END %] @@ -248,6 +255,11 @@ if ( !items_selection.hasOwnProperty(tab_id) ){ items_selection[tab_id] = []; } + + let filters_options = { + 3: () => all_libraries, + 4: () => all_libraries, + }; var items_table = $("#" + tab_id + '_table').kohaTable({ ajax: { url: item_table_url }, order: [[ 0, "asc" ]], @@ -320,7 +332,7 @@ }, [% END %] { - data: "me.holding_library_id:holding_library.name", + data: "me.holding_library_id", className: "location", searchable: true, orderable: true, @@ -329,7 +341,7 @@ } }, { - data: "me.home_library_id:home_library.name", + data: "me.home_library_id", className: "homebranch", searchable: true, orderable: true, @@ -768,6 +780,7 @@ items_table_settings[tab_id], add_filters, default_filters, + filters_options, ); return items_table; diff --git a/koha-tmpl/intranet-tmpl/prog/js/datatables.js b/koha-tmpl/intranet-tmpl/prog/js/datatables.js index 323b21d7e17..be3f62aa5d7 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/datatables.js +++ b/koha-tmpl/intranet-tmpl/prog/js/datatables.js @@ -947,7 +947,7 @@ function _dt_add_delay(table_dt, table_node, delay_ms) { * @param {Object} default_filters Add a set of default search filters to apply at table initialisation * @return {Object} The dataTables instance */ - $.fn.kohaTable = function(options, table_settings, add_filters, default_filters) { + $.fn.kohaTable = function(options, table_settings, add_filters, default_filters, filters_options) { var settings = null; if(options) { @@ -998,7 +998,7 @@ function _dt_add_delay(table_dt, table_node, delay_ms) { var table_dt = table.DataTable(); if ( add_filters ) { - _dt_add_filters(this, table_dt); + _dt_add_filters(this, table_dt, filters_options); } table.DataTable().on("column-visibility.dt", function(){_dt_on_visibility(add_filters, table, table_dt);}) -- 2.34.1