From ac855afb10ae25d505c307dce401c5b3da1eb0af Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Thu, 21 Mar 2024 12:42:24 +0100 Subject: [PATCH] Bug 35138: UI changes to add/remove a facet Sponsored-by: The Research University in the Helmholtz Association (KIT) --- .../searchengine/elasticsearch/mappings.tt | 18 +++++++++++ .../prog/js/elasticsearch-mappings.js | 30 +++++++++++++++++++ 2 files changed, 48 insertions(+) diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/searchengine/elasticsearch/mappings.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/searchengine/elasticsearch/mappings.tt index a3513d0d2a9..00bc1ae4f4a 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/searchengine/elasticsearch/mappings.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/searchengine/elasticsearch/mappings.tt @@ -493,6 +493,7 @@ a.add, a.delete { Order Search field Label +   @@ -518,9 +519,26 @@ a.add, a.delete { [% END %] + + Delete + [% END %] + + + + + + + + Add + + [% END %] diff --git a/koha-tmpl/intranet-tmpl/prog/js/elasticsearch-mappings.js b/koha-tmpl/intranet-tmpl/prog/js/elasticsearch-mappings.js index d0f27a46d28..d4806d16e0b 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/elasticsearch-mappings.js +++ b/koha-tmpl/intranet-tmpl/prog/js/elasticsearch-mappings.js @@ -156,4 +156,34 @@ $(document).ready(function () { clean_line(line); } }); + + $('.add-facet').click(function() { + var table = $(this).closest('table'); + let table_id = table.attr('id'); + let dt = $('#' + table_id).DataTable(); + var line = $(this).closest('tr'); + let selected_option = $(line).find('select[data-id="facet-search-field"] option:selected'); + var search_field_name = selected_option.val(); + let dt_data = dt.data(); + let already_exists = dt_data.filter((row, idx) => row[1] === search_field_name); + if ( already_exists.length ) { + alert(__("Facet '%s' already exist".format(search_field_name))); + return; + } + if (search_field_name.length > 0) { + const next_id = Math.max.apply(null, dt_data.map(row => row[0])) + 1; + const label = selected_option.data('label'); + new_line = [next_id, search_field_name, '%s'.format(label.escapeHtml(), search_field_name.escapeHtml()), ' %s'.format(__("Delete"))]; + dt.row.add(new_line).draw(); + + $(table).on( 'click', '.delete', function () { + var table = $(this).closest('table'); + let dt = $(table).DataTable(); + dt.row( $(this).closest('tr') ).remove().draw(); + } ); + + clean_line(line); + } + }); + }); -- 2.34.1