@@ -, +, @@ search forms - Go to the staff interface. - Test each keyboard shortcut to confirm that the header search tabs activate correctly: - Check in: Alt-r - Renew: Alt-w - Search: Alt-q - Check out: Alt-u - Test that the keyboard shortcut takes you to the correct page if the header search form doesn't exist on the page, e.g. the Authorities home page. --- .../intranet-tmpl/prog/js/staff-global.js | 703 ++++++++++-------- 1 file changed, 399 insertions(+), 304 deletions(-) --- a/koha-tmpl/intranet-tmpl/prog/js/staff-global.js +++ a/koha-tmpl/intranet-tmpl/prog/js/staff-global.js @@ -1,108 +1,127 @@ /* global shortcut delBasket Sticky AUDIO_ALERT_PATH Cookies */ /* exported addBibToContext delBibToContext escape_str escape_price openWindow _ removeFocus toUC confirmDelete confirmClone playSound */ -if ( KOHA === undefined ) var KOHA = {}; +if (KOHA === undefined) var KOHA = {}; -function _(s) { return s; } // dummy function for gettext +function _(s) { + return s; +} // dummy function for gettext // http://stackoverflow.com/questions/1038746/equivalent-of-string-format-in-jquery/5341855#5341855 -String.prototype.format = function() { return formatstr(this, arguments); }; +String.prototype.format = function () { + return formatstr(this, arguments); +}; function formatstr(str, col) { - col = typeof col === 'object' ? col : Array.prototype.slice.call(arguments, 1); + col = + typeof col === "object" + ? col + : Array.prototype.slice.call(arguments, 1); var idx = 0; return str.replace(/%%|%s|%(\d+)\$s/g, function (m, n) { - if (m == "%%") { return "%"; } - if (m == "%s") { return col[idx++]; } + if (m == "%%") { + return "%"; + } + if (m == "%s") { + return col[idx++]; + } return col[n]; }); } var HtmlCharsToEscape = { - '&': '&', - '<': '<', - '>': '>' + "&": "&", + "<": "<", + ">": ">", }; -String.prototype.escapeHtml = function() { - return this.replace(/[&<>]/g, function(c) { +String.prototype.escapeHtml = function () { + return this.replace(/[&<>]/g, function (c) { return HtmlCharsToEscape[c] || c; }); }; -function escape_str(s){ +function escape_str(s) { return s != null ? s.escapeHtml() : ""; } /* * Void method for numbers, for consistency */ -Number.prototype.escapeHtml = function() { +Number.prototype.escapeHtml = function () { return this; }; -function escape_price(p){ +function escape_price(p) { return p != null ? p.escapeHtml().format_price() : ""; } // http://stackoverflow.com/questions/14859281/select-tab-by-name-in-jquery-ui-1-10-0/16550804#16550804 $.fn.tabIndex = function () { - return $(this).parent().children('div').index(this); + return $(this).parent().children("div").index(this); }; $.fn.selectTabByID = function (tabID) { - $("a[href='" + tabID + "']", $(this) ).tab("show"); + $("a[href='" + tabID + "']", $(this)).tab("show"); }; -$(document).ready(function() { - +$(document).ready(function () { //check for a hash before setting focus let hash = window.location.hash; - if ( ! hash ) { + if (!hash) { $(".tab-pane.active input:text:first").focus(); } $("#header_search a[data-toggle='tab']").on("shown.bs.tab", function (e) { - $( e.target.hash ).find("input:text:first").focus(); + $(e.target.hash).find("input:text:first").focus(); }); - $(".close, .close_window").on("click", function(e){ + $(".close, .close_window").on("click", function (e) { e.preventDefault(); window.close(); }); - $("#checkin_search form").preventDoubleFormSubmit(); + $("#checkin_search_panel form").preventDoubleFormSubmit(); - if($("#header_search #checkin_search").length > 0){ - shortcut.add('Alt+r',function (){ - $("#header_search").selectTabByID("#checkin_search"); + if ($("#header_search #checkin_search_panel").length > 0) { + shortcut.add("Alt+r", function () { + $("#header_search").selectTabByID("#checkin_search_panel"); $("#ret_barcode").focus(); }); } else { - shortcut.add('Alt+r',function (){ - location.href="/cgi-bin/koha/circ/returns.pl"; }); + shortcut.add("Alt+r", function () { + location.href = "/cgi-bin/koha/circ/returns.pl"; + }); } - if($("#header_search #circ_search").length > 0){ - shortcut.add('Alt+u',function (){ - $("#header_search").selectTabByID("#circ_search"); + if ($("#header_search #circ_search_panel").length > 0) { + shortcut.add("Alt+u", function () { + $("#header_search").selectTabByID("#circ_search_panel"); $("#findborrower").focus(); }); } else { - shortcut.add('Alt+u',function(){ location.href="/cgi-bin/koha/circ/circulation.pl"; }); + shortcut.add("Alt+u", function () { + location.href = "/cgi-bin/koha/circ/circulation.pl"; + }); } - if($("#header_search #catalog_search").length > 0){ - shortcut.add('Alt+q',function (){ - $("#header_search").selectTabByID("#catalog_search"); + if ($("#header_search #catalog_search_panel").length > 0) { + shortcut.add("Alt+q", function () { + $("#header_search").selectTabByID("#catalog_search_panel"); $("#search-form").focus(); }); } else { - shortcut.add('Alt+q',function(){ location.href="/cgi-bin/koha/catalogue/search.pl"; }); + shortcut.add("Alt+q", function () { + location.href = "/cgi-bin/koha/catalogue/search.pl"; + }); } - if($("#header_search #renew_search").length > 0){ - shortcut.add('Alt+w',function (){ - $("#header_search").selectTabByID("#renew_search"); + if ($("#header_search #renew_search_panel").length > 0) { + shortcut.add("Alt+w", function () { + $("#header_search").selectTabByID("#renew_search_panel"); $("#ren_barcode").focus(); }); } else { - shortcut.add('Alt+w',function(){ location.href="/cgi-bin/koha/circ/renew.pl"; }); + shortcut.add("Alt+w", function () { + location.href = "/cgi-bin/koha/circ/renew.pl"; + }); } - $('#header_search .form-extra-content-toggle').on('click', function () { - const extraContent = $(this).closest('form').find('.form-extra-content'); - if (extraContent.is(':visible')) { + $("#header_search .form-extra-content-toggle").on("click", function () { + const extraContent = $(this) + .closest("form") + .find(".form-extra-content"); + if (extraContent.is(":visible")) { extraContent.hide(); $(this).removeClass("extra-content-open"); } else { @@ -112,90 +131,106 @@ $(document).ready(function() { }); $(".focus").focus(); - $(".validated").each(function() { + $(".validated").each(function () { $(this).validate(); }); jQuery.validator.addClassRules("decimal", { - number: true + number: true, }); - $("#logout").on("click",function(){ + $("#logout").on("click", function () { logOut(); }); - $("#helper").on("click",function(){ + $("#helper").on("click", function () { openHelp(); return false; }); - $("body").on("keypress", ".noEnterSubmit", function(e){ + $("body").on("keypress", ".noEnterSubmit", function (e) { return checkEnter(e); }); - $("#header_search .nav-tabs a").on("click",function(){ + $("#header_search .nav-tabs a").on("click", function () { var field_index = $(this).parent().index(); - keep_text( field_index ); + keep_text(field_index); }); - $(".toggle_element").on("click",function(e){ + $(".toggle_element").on("click", function (e) { e.preventDefault(); - $( $(this).data("element") ).toggle(); + $($(this).data("element")).toggle(); if (typeof Sticky !== "undefined" && typeof hcSticky === "function") { - Sticky.hcSticky('update'); + Sticky.hcSticky("update"); } }); var navmenulist = $("#navmenulist"); - if( navmenulist.length > 0 ){ + if (navmenulist.length > 0) { var path = location.pathname.substring(1); var url = window.location.toString(); - var params = ''; - if ( url.match(/\?(.+)$/) ) { + var params = ""; + if (url.match(/\?(.+)$/)) { params = "?" + RegExp.$1; } - if ($("a[href$=\"/" + path + params + "\"]", navmenulist).length == 0){ - $("a[href$=\"/" + path + "\"]", navmenulist).addClass("current"); + if ($('a[href$="/' + path + params + '"]', navmenulist).length == 0) { + $('a[href$="/' + path + '"]', navmenulist).addClass("current"); } else { - $("a[href$=\"/" + path + params + "\"]", navmenulist).addClass("current"); + $('a[href$="/' + path + params + '"]', navmenulist).addClass( + "current" + ); } } - $("#catalog-search-link a").on("mouseenter mouseleave", function(){ - $("#catalog-search-dropdown a").toggleClass("catalog-search-dropdown-hover"); + $("#catalog-search-link a").on("mouseenter mouseleave", function () { + $("#catalog-search-dropdown a").toggleClass( + "catalog-search-dropdown-hover" + ); }); - if ( localStorage.getItem("previousPatrons") || $("#hiddenborrowernumber").val() ){ + if ( + localStorage.getItem("previousPatrons") || + $("#hiddenborrowernumber").val() + ) { var previous_patrons = []; - if ( localStorage.getItem("previousPatrons") ) { - previous_patrons = JSON.parse(localStorage.getItem("previousPatrons")); + if (localStorage.getItem("previousPatrons")) { + previous_patrons = JSON.parse( + localStorage.getItem("previousPatrons") + ); } - if ( $("#hiddenborrowernumber").val() ) { + if ($("#hiddenborrowernumber").val()) { // Remove this patron from the list if they are already there previous_patrons = previous_patrons.filter(function (p) { return p["borrowernumber"] != $("#hiddenborrowernumber").val(); }); const previous_patron = { - "borrowernumber": $("#hiddenborrowernumber").val(), - "name": $("#hiddenborrowername").val(), - "card": $("#hiddenborrowercard").val() + borrowernumber: $("#hiddenborrowernumber").val(), + name: $("#hiddenborrowername").val(), + card: $("#hiddenborrowercard").val(), }; - previous_patrons.unshift( previous_patron ); + previous_patrons.unshift(previous_patron); // Limit to number of patrons specified in showLastPatronCount - if ( previous_patrons.length > showLastPatronCount ) previous_patrons.pop(); - localStorage.setItem("previousPatrons", JSON.stringify(previous_patrons)); + if (previous_patrons.length > showLastPatronCount) + previous_patrons.pop(); + localStorage.setItem( + "previousPatrons", + JSON.stringify(previous_patrons) + ); } - if ( previous_patrons.length ) { + if (previous_patrons.length) { let p = previous_patrons[0]; $("#lastborrowerlink").show(); $("#lastborrowerlink").prop("title", `${p["name"]} (${p["card"]})`); - $("#lastborrowerlink").prop("href", `/cgi-bin/koha/circ/circulation.pl?borrowernumber=${p["borrowernumber"]}`); + $("#lastborrowerlink").prop( + "href", + `/cgi-bin/koha/circ/circulation.pl?borrowernumber=${p["borrowernumber"]}` + ); $("#lastborrower-window").css("display", "inline-flex"); previous_patrons.reverse(); - for ( i in previous_patrons ) { + for (i in previous_patrons) { p = previous_patrons[i]; const el = `
  • ${p["name"]} (${p["card"]})
  • `; $("#lastBorrowerList").prepend(el); @@ -203,32 +238,35 @@ $(document).ready(function() { } } - if( $("#hiddenborrowernumber").val() ){ - localStorage.setItem("currentborrowernumber", $("#hiddenborrowernumber").val() ); + if ($("#hiddenborrowernumber").val()) { + localStorage.setItem( + "currentborrowernumber", + $("#hiddenborrowernumber").val() + ); } - $("#lastborrower-remove").click(function() { + $("#lastborrower-remove").click(function () { removeLastBorrower(); $("#lastborrower-window").hide(); }); /* Search results browsing */ /* forms with action leading to search */ - $("form[action*='search.pl']").submit(function(){ - $('[name^="limit"]').each(function(){ - if( $(this).val() == '' ){ - $(this).prop("disabled","disabled"); + $("form[action*='search.pl']").submit(function () { + $('[name^="limit"]').each(function () { + if ($(this).val() == "") { + $(this).prop("disabled", "disabled"); } }); var disabledPrior = false; - $(".search-term-row").each(function(){ - if( disabledPrior ){ - $(this).find('select[name="op"]').prop("disabled","disabled"); + $(".search-term-row").each(function () { + if (disabledPrior) { + $(this).find('select[name="op"]').prop("disabled", "disabled"); disabledPrior = false; } - if( $(this).find('input[name="q"]').val() == "" ){ - $(this).find('input').prop("disabled","disabled"); - $(this).find('select').prop("disabled","disabled"); + if ($(this).find('input[name="q"]').val() == "") { + $(this).find("input").prop("disabled", "disabled"); + $(this).find("select").prop("disabled", "disabled"); disabledPrior = true; } }); @@ -236,45 +274,50 @@ $(document).ready(function() { saveOrClearSimpleSearchParams(); }); /* any link to launch a search except navigation links */ - $("[href*='search.pl?']").not(".nav").not('.searchwithcontext').click(function(){ - resetSearchContext(); - }); + $("[href*='search.pl?']") + .not(".nav") + .not(".searchwithcontext") + .click(function () { + resetSearchContext(); + }); /* any link to a detail page from the results page. */ - $("#bookbag_form a[href*='detail.pl?']").click(function(){ + $("#bookbag_form a[href*='detail.pl?']").click(function () { resetSearchContext(); }); - }); -function removeLastBorrower(){ +function removeLastBorrower() { localStorage.removeItem("previousPatrons"); } // http://jennifermadden.com/javascript/stringEnterKeyDetector.html -function checkEnter(e){ //e is event object passed from function invocation +function checkEnter(e) { + //e is event object passed from function invocation var characterCode; // literal character code will be stored in this variable - if(e && e.which){ //if which property of event object is supported (NN4) + if (e && e.which) { + //if which property of event object is supported (NN4) characterCode = e.which; //character code is contained in NN4's which property } else { characterCode = e.keyCode; //character code is contained in IE's keyCode property } - if( characterCode == 13 //if generated character code is equal to ascii 13 (if enter key) - && e.target.nodeName == "INPUT" - && e.target.type != "submit" // Allow enter to submit using the submit button - ){ + if ( + characterCode == 13 && //if generated character code is equal to ascii 13 (if enter key) + e.target.nodeName == "INPUT" && + e.target.type != "submit" // Allow enter to submit using the submit button + ) { return false; } else { return true; } } -function clearHoldFor(){ - Cookies.remove("holdfor", { path: '/', SameSite: 'Lax' }); +function clearHoldFor() { + Cookies.remove("holdfor", { path: "/", SameSite: "Lax" }); } -function logOut(){ - if( typeof delBasket == 'function' ){ - delBasket('main', true); +function logOut() { + if (typeof delBasket == "function") { + delBasket("main", true); } clearHoldFor(); removeLastBorrower(); @@ -285,29 +328,45 @@ function logOut(){ localStorage.removeItem("item_search_selections"); } -function openHelp(){ - window.open( "/cgi-bin/koha/help.pl", "_blank"); +function openHelp() { + window.open("/cgi-bin/koha/help.pl", "_blank"); } -jQuery.fn.preventDoubleFormSubmit = function() { - jQuery(this).submit(function() { - $("body, form input[type='submit'], form button[type='submit'], form a").addClass('waiting'); - if (this.beenSubmitted) - return false; - else - this.beenSubmitted = true; +jQuery.fn.preventDoubleFormSubmit = function () { + jQuery(this).submit(function () { + $( + "body, form input[type='submit'], form button[type='submit'], form a" + ).addClass("waiting"); + if (this.beenSubmitted) return false; + else this.beenSubmitted = true; }); }; -function openWindow(link,name,width,height) { - name = (typeof name == "undefined")?'popup':name; - width = (typeof width == "undefined")?'600':width; - height = (typeof height == "undefined")?'400':height; +function openWindow(link, name, width, height) { + name = typeof name == "undefined" ? "popup" : name; + width = typeof width == "undefined" ? "600" : width; + height = typeof height == "undefined" ? "400" : height; //IE <= 9 can't handle a "name" with whitespace try { - window.open(link,name,'width='+width+',height='+height+',resizable=yes,toolbar=false,scrollbars=yes,top'); - } catch(e) { - window.open(link,null,'width='+width+',height='+height+',resizable=yes,toolbar=false,scrollbars=yes,top'); + window.open( + link, + name, + "width=" + + width + + ",height=" + + height + + ",resizable=yes,toolbar=false,scrollbars=yes,top" + ); + } catch (e) { + window.open( + link, + null, + "width=" + + width + + ",height=" + + height + + ",resizable=yes,toolbar=false,scrollbars=yes,top" + ); } } @@ -315,28 +374,31 @@ function openWindow(link,name,width,height) { // repeated scanning actions on errors so the librarian doesn't // continue scanning and miss the error. function removeFocus() { - $(':focus').blur(); + $(":focus").blur(); } function toUC(f) { - var x=f.value.toUpperCase(); - f.value=x; + var x = f.value.toUpperCase(); + f.value = x; return true; } function confirmDelete(message) { - return (confirm(message) ? true : false); + return confirm(message) ? true : false; } function confirmClone(message) { - return (confirm(message) ? true : false); + return confirm(message) ? true : false; } -function playSound( sound ) { - if ( ! ( sound.indexOf('http://') === 0 || sound.indexOf('https://') === 0 ) ) { +function playSound(sound) { + if (!(sound.indexOf("http://") === 0 || sound.indexOf("https://") === 0)) { sound = AUDIO_ALERT_PATH + sound; } - document.getElementById("audio-alert").innerHTML = ''; + document.getElementById("audio-alert").innerHTML = + ''; } // For keeping the text when navigating the search tabs @@ -345,8 +407,8 @@ function keep_text(clicked_index) { var persist = searchboxes[0].value; for (var i = 0; i < searchboxes.length - 1; i++) { - if (searchboxes[i].value != searchboxes[i+1].value) { - if (i === searchboxes.length-2) { + if (searchboxes[i].value != searchboxes[i + 1].value) { + if (i === searchboxes.length - 2) { if (searchboxes[i].value != searchboxes[0].value) { persist = searchboxes[i].value; } else if (searchboxes.length === 2) { @@ -354,10 +416,10 @@ function keep_text(clicked_index) { persist = searchboxes[1].value; } } else { - persist = searchboxes[i+1].value; + persist = searchboxes[i + 1].value; } - } else if (searchboxes[i+1].value != searchboxes[i+2].value) { - persist = searchboxes[i+1].value; + } else if (searchboxes[i + 1].value != searchboxes[i + 2].value) { + persist = searchboxes[i + 1].value; } } } @@ -368,42 +430,44 @@ function keep_text(clicked_index) { } // Extends jQuery API -jQuery.extend({uniqueArray:function(array){ - return $.grep(array, function(el, index) { - return index === $.inArray(el, array); - }); -}}); +jQuery.extend({ + uniqueArray: function (array) { + return $.grep(array, function (el, index) { + return index === $.inArray(el, array); + }); + }, +}); function removeByValue(arr, val) { - for(var i=0; i' : "") + + (item.surname ? item.surname.escapeHtml() : "") + + ", " + + (item.firstname ? item.firstname.escapeHtml() : "") + + " " + + (item.middle_name ? item.middle_name.escapeHtml() : "") + + cardnumber.escapeHtml() + + " " + + (item.date_of_birth + ? $date(item.date_of_birth) + + ' (' + + $get_age(item.date_of_birth) + + " " + + __("years") + + ")," + : "") + + " " + + $format_address(item, { + no_line_break: true, + include_li: false, + }) + + " " + + (!singleBranchMode + ? '' + + item.library.name.escapeHtml() + + "" + : "") + + "" + + "" + ) + .appendTo(ul); + }); } function expandPatronSearchFields(search_fields) { - switch(search_fields) { - case 'standard': + switch (search_fields) { + case "standard": return defaultPatronSearchFields; break; - case 'full_address': - return 'streetnumber|streettype|address|address2|city|state|zipcode|country'; + case "full_address": + return "streetnumber|streettype|address|address2|city|state|zipcode|country"; break; - case 'all_emails': - return 'email|emailpro|B_email'; + case "all_emails": + return "email|emailpro|B_email"; break; - case 'all_phones': - return 'phone|phonepro|B_phone|altcontactphone|mobile'; + case "all_phones": + return "phone|phonepro|B_phone|altcontactphone|mobile"; break; default: return search_fields; @@ -573,12 +651,13 @@ function expandPatronSearchFields(search_fields) { * - table_prefix: (String) table name to prefix the fields with, defaults to 'me' */ function buildPatronSearchQuery(term, options) { - let q = []; let table_prefix; let leading_wildcard; let search_fields = []; - let patterns = term.split(/[\s,]+/).filter(function (s) { return s.length }); + let patterns = term.split(/[\s,]+/).filter(function (s) { + return s.length; + }); // Bail if no patterns if (patterns.length == 0) { @@ -586,78 +665,94 @@ function buildPatronSearchQuery(term, options) { } // Table prefix: If table_prefix options exists, use that - if (typeof options !== 'undefined' && options.table_prefix) { + if (typeof options !== "undefined" && options.table_prefix) { table_prefix = options.table_prefix; - // If not, default to 'me' + // If not, default to 'me' } else { - table_prefix = 'me'; + table_prefix = "me"; } // Leading wildcard: If search_type option exists, use that - if (typeof options !== 'undefined' && options.search_type) { - leading_wildcard = options.search_type === "contains" ? '%' : ''; - // If not, use DefaultPatronSearchMethod system preference instead + if (typeof options !== "undefined" && options.search_type) { + leading_wildcard = options.search_type === "contains" ? "%" : ""; + // If not, use DefaultPatronSearchMethod system preference instead } else { - leading_wildcard = defaultPatronSearchMethod === 'contains' ? '%' : ''; + leading_wildcard = defaultPatronSearchMethod === "contains" ? "%" : ""; } let searched_attribute_fields = []; // Search fields: If search_fields option exists, we use that - if (typeof options !== 'undefined' && options.search_fields) { + if (typeof options !== "undefined" && options.search_fields) { expand_fields = expandPatronSearchFields(options.search_fields); - expand_fields.split('\|').forEach(function (field, i) { - if( field.startsWith('_ATTR_') ){ - let attr_field = field.replace("_ATTR_",""); - searched_attribute_fields.push( attr_field ); + expand_fields.split("|").forEach(function (field, i) { + if (field.startsWith("_ATTR_")) { + let attr_field = field.replace("_ATTR_", ""); + searched_attribute_fields.push(attr_field); } else { - search_fields.push( field ); + search_fields.push(field); } }); - // If not, we use DefaultPatronSearchFields system preference instead + // If not, we use DefaultPatronSearchFields system preference instead } else { - search_fields = defaultPatronSearchFields.split('\|'); + search_fields = defaultPatronSearchFields.split("|"); } // Add each pattern for each search field let pattern_subquery_and = []; patterns.forEach(function (pattern, i) { - let pattern_subquery_or = []; - search_fields.forEach(function (field, i) { - pattern_subquery_or.push( - { [table_prefix + "." + field]: { 'like': leading_wildcard + pattern + '%' } } - ); - if (field == 'dateofbirth') { - try { - let d = $date_to_rfc3339(pattern); - pattern_subquery_or.push({ [table_prefix + "." + field]: d }); - } catch { - // Hide the warning if the date is not correct - } - } + let pattern_subquery_or = []; + search_fields.forEach(function (field, i) { + pattern_subquery_or.push({ + [table_prefix + "." + field]: { + like: leading_wildcard + pattern + "%", + }, }); - pattern_subquery_and.push(pattern_subquery_or); + if (field == "dateofbirth") { + try { + let d = $date_to_rfc3339(pattern); + pattern_subquery_or.push({ + [table_prefix + "." + field]: d, + }); + } catch { + // Hide the warning if the date is not correct + } + } }); + pattern_subquery_and.push(pattern_subquery_or); + }); q.push({ "-and": pattern_subquery_and }); - // Add full search term for each search field let term_subquery_or = []; search_fields.forEach(function (field, i) { - term_subquery_or.push( - { [table_prefix + "." + field]: { 'like': leading_wildcard + term + '%' } } - ); + term_subquery_or.push({ + [table_prefix + "." + field]: { + like: leading_wildcard + term + "%", + }, + }); }); q.push({ "-or": term_subquery_or }); // Add each pattern for each extended patron attributes - if ( typeof options !== 'undefined' && ( (options.search_fields == 'standard' && options.extended_attribute_types) || ( searched_attribute_fields.length > 0 ) ) && extendedPatronAttributes) { - extended_attribute_codes_to_search = (searched_attribute_fields.length > 0) ? searched_attribute_fields : options.extended_attribute_types; + if ( + typeof options !== "undefined" && + ((options.search_fields == "standard" && + options.extended_attribute_types) || + searched_attribute_fields.length > 0) && + extendedPatronAttributes + ) { + extended_attribute_codes_to_search = + searched_attribute_fields.length > 0 + ? searched_attribute_fields + : options.extended_attribute_types; extended_attribute_subquery_and = []; patterns.forEach(function (pattern, i) { let extended_attribute_sub_or = []; extended_attribute_sub_or.push({ - "extended_attributes.value": { "like": leading_wildcard + pattern + '%' }, - "extended_attributes.code": extended_attribute_codes_to_search + "extended_attributes.value": { + like: leading_wildcard + pattern + "%", + }, + "extended_attributes.code": extended_attribute_codes_to_search, }); extended_attribute_subquery_and.push(extended_attribute_sub_or); }); @@ -666,13 +761,13 @@ function buildPatronSearchQuery(term, options) { return q; } -function selectBsTabByHash( tabs_container_id ){ +function selectBsTabByHash(tabs_container_id) { /* Check for location.hash in the page URL */ /* If present the location hash will be used to activate the correct tab */ var hash = document.location.hash; - if( hash !== "" ){ - $('#' + tabs_container_id + ' a[href="' + hash + '"]').tab('show'); + if (hash !== "") { + $("#" + tabs_container_id + ' a[href="' + hash + '"]').tab("show"); } else { - $('#' + tabs_container_id + ' a:first').tab('show'); + $("#" + tabs_container_id + " a:first").tab("show"); } } --