1 function patron_autocomplete(node, options) {
4 let on_select_callback;
6 if ( options['link-to'] ) {
7 link_to = options['link-to'];
9 if ( options['url-params'] ) {
10 url_params = options['url-params'];
12 if ( options['on-select-callback'] ) {
13 on_select_callback = options['on-select-callback'];
16 const search_fields = ['me.surname', 'me.firstname', 'me.cardnumber'];
17 return node.autocomplete({
18 source: function( request, response ) {
19 let subquery_and = [];
20 request.term.split(' ')
21 .filter(function(s){ return s.length })
22 .forEach(function(pattern,i){
25 {'me.surname': {'like': '%' + pattern + '%'}},
26 {'me.firstname': {'like': '%' + pattern + '%'}},
27 {'me.cardnumber': {'like': pattern + '%'}},
31 let q = {"-and": subquery_and};
35 'q': JSON.stringify(q),
36 '_order_by': '+me.surname,+me.firstname',
41 url: '/api/v1/patrons',
43 "x-koha-embed": "library"
45 success: function(data) {
46 return response(data);
49 alert( _("An error occurred. Check the logs") );
55 select: function( event, ui ) {
57 window.location.href = ui.item.link;
58 } else if ( on_select_callback ) {
59 return on_select_callback(event, ui);
63 .data( "ui-autocomplete" )
64 ._renderItem = function( ul, item ) {
66 item.link = link_to == 'circ'
67 ? "/cgi-bin/koha/circ/circulation.pl"
68 : link_to == 'reserve'
69 ? "/cgi-bin/koha/reserve/request.pl"
70 : "/cgi-bin/koha/members/moremember.pl";
71 item.link += ( url_params ? '?' + url_params + '&' : "?" ) + 'borrowernumber=' + item.patron_id;
77 if( item.cardnumber != "" ){
78 // Display card number in parentheses if it exists
79 cardnumber = " (" + item.cardnumber + ") ";
81 if( item.library_id == loggedInLibrary ){
82 loggedInClass = "ac-currentlibrary";
86 return $( "<li></li>" )
87 .addClass( loggedInClass )
88 .data( "ui-autocomplete-item", item )
91 + ( item.link ? "<a href=\"" + item.link + "\">" : "<a>" )
92 + ( item.surname ? item.surname.escapeHtml() : "" ) + ", "
93 + ( item.firstname ? item.firstname.escapeHtml() : "" )
94 + cardnumber.escapeHtml()
96 + ( item.date_of_birth
97 ? $date(item.date_of_birth)
98 + "<span class=\"age_years\"> ("
99 + $get_age(item.date_of_birth)
105 + ( item.address ? item.address.escapeHtml() : "" ) + " "
106 + ( item.city ? item.city.escapeHtml() : "" ) + " "
107 + ( item.zipcode ? item.zipcode.escapeHtml() : "" ) + " "
108 + ( item.country ? item.country.escapeHtml() : "" ) + " "
109 + ( !singleBranchMode
111 "<span class=\"ac-library\">"
112 + item.library.name.escapeHtml()