@@ -, +, @@ --- .../searchengine/elasticsearch/mappings.tt | 18 +++++++++++ .../prog/js/elasticsearch-mappings.js | 30 +++++++++++++++++++ 2 files changed, 48 insertions(+) --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/searchengine/elasticsearch/mappings.tt +++ a/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 %] --- a/koha-tmpl/intranet-tmpl/prog/js/elasticsearch-mappings.js +++ a/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); + } + }); + }); --