Bug 34092: Move patron_autocomplete to staff-global.js
Remove patron-autocomplete.js file Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de> Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl> Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
This commit is contained in:
parent
b804313c20
commit
972c847bdd
3 changed files with 135 additions and 135 deletions
|
@ -29,7 +29,6 @@
|
||||||
[% INCLUDE 'js-date-format.inc' %]
|
[% INCLUDE 'js-date-format.inc' %]
|
||||||
[% INCLUDE 'js-patron-get-age.inc' %]
|
[% INCLUDE 'js-patron-get-age.inc' %]
|
||||||
[% INCLUDE 'js-patron-format-address.inc' %]
|
[% INCLUDE 'js-patron-format-address.inc' %]
|
||||||
[% Asset.js("js/patron-autocomplete.js") | $raw %]
|
|
||||||
|
|
||||||
[% INCLUDE 'validator-strings.inc' %]
|
[% INCLUDE 'validator-strings.inc' %]
|
||||||
[% IF ( IntranetUserJS ) %]
|
[% IF ( IntranetUserJS ) %]
|
||||||
|
|
|
@ -1,134 +0,0 @@
|
||||||
function patron_autocomplete(node, options) {
|
|
||||||
let link_to;
|
|
||||||
let url_params;
|
|
||||||
let on_select_callback;
|
|
||||||
let leading_wildcard = defaultPatronSearchMethod === 'contains' ? '%' : '';
|
|
||||||
if ( options ) {
|
|
||||||
if ( options['link-to'] ) {
|
|
||||||
link_to = options['link-to'];
|
|
||||||
}
|
|
||||||
if ( options['url-params'] ) {
|
|
||||||
url_params = options['url-params'];
|
|
||||||
}
|
|
||||||
if ( options['on-select-callback'] ) {
|
|
||||||
on_select_callback = options['on-select-callback'];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return node.autocomplete({
|
|
||||||
source: function( request, response ) {
|
|
||||||
let q = []
|
|
||||||
|
|
||||||
// Add each pattern in search term for each search field
|
|
||||||
let pattern_subquery_and = [];
|
|
||||||
request.term.split(/[\s,]+/)
|
|
||||||
.filter(function(s){ return s.length })
|
|
||||||
.forEach(function(pattern,i){
|
|
||||||
let pattern_subquery_or = [];
|
|
||||||
defaultPatronSearchFields.split(',').forEach(function(field,i){
|
|
||||||
pattern_subquery_or.push(
|
|
||||||
{ ["me." + field]: { 'like': leading_wildcard + pattern + '%' } }
|
|
||||||
);
|
|
||||||
});
|
|
||||||
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 = [];
|
|
||||||
defaultPatronSearchFields.split(',').forEach(function (field, i) {
|
|
||||||
term_subquery_or.push(
|
|
||||||
{ ["me." + field]: { 'like': leading_wildcard + request.term + '%' } }
|
|
||||||
);
|
|
||||||
});
|
|
||||||
q.push({ "-or": term_subquery_or });
|
|
||||||
|
|
||||||
let params = {
|
|
||||||
'_page': 1,
|
|
||||||
'_per_page': 10,
|
|
||||||
'q': JSON.stringify(q),
|
|
||||||
'_order_by': '+me.surname,+me.firstname',
|
|
||||||
};
|
|
||||||
$.ajax({
|
|
||||||
data: params,
|
|
||||||
type: 'GET',
|
|
||||||
url: '/api/v1/patrons',
|
|
||||||
headers: {
|
|
||||||
"x-koha-embed": "library"
|
|
||||||
},
|
|
||||||
success: function(data) {
|
|
||||||
return response(data);
|
|
||||||
},
|
|
||||||
error: function(e) {
|
|
||||||
if ( e.state() != 'rejected' ) {
|
|
||||||
alert( __("An error occurred. Check the logs") );
|
|
||||||
}
|
|
||||||
return response();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
minLength: 3,
|
|
||||||
select: function( event, ui ) {
|
|
||||||
if ( ui.item.link ) {
|
|
||||||
window.location.href = ui.item.link;
|
|
||||||
} else if ( on_select_callback ) {
|
|
||||||
return on_select_callback(event, ui);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
focus: function( event, ui ) {
|
|
||||||
event.preventDefault(); // Don't replace the text field
|
|
||||||
},
|
|
||||||
})
|
|
||||||
.data( "ui-autocomplete" )
|
|
||||||
._renderItem = function( ul, item ) {
|
|
||||||
if ( link_to ) {
|
|
||||||
item.link = link_to == 'circ'
|
|
||||||
? "/cgi-bin/koha/circ/circulation.pl"
|
|
||||||
: link_to == 'reserve'
|
|
||||||
? "/cgi-bin/koha/reserve/request.pl"
|
|
||||||
: "/cgi-bin/koha/members/moremember.pl";
|
|
||||||
item.link += ( url_params ? '?' + url_params + '&' : "?" ) + 'borrowernumber=' + item.patron_id;
|
|
||||||
} else {
|
|
||||||
item.link = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
var cardnumber = "";
|
|
||||||
if( item.cardnumber != "" ){
|
|
||||||
// Display card number in parentheses if it exists
|
|
||||||
cardnumber = " (" + item.cardnumber + ") ";
|
|
||||||
}
|
|
||||||
if( item.library_id == loggedInLibrary ){
|
|
||||||
loggedInClass = "ac-currentlibrary";
|
|
||||||
} else {
|
|
||||||
loggedInClass = "";
|
|
||||||
}
|
|
||||||
return $( "<li></li>" )
|
|
||||||
.addClass( loggedInClass )
|
|
||||||
.data( "ui-autocomplete-item", item )
|
|
||||||
.append(
|
|
||||||
""
|
|
||||||
+ ( item.link ? "<a href=\"" + item.link + "\">" : "<a>" )
|
|
||||||
+ ( item.surname ? item.surname.escapeHtml() : "" ) + ", "
|
|
||||||
+ ( item.firstname ? item.firstname.escapeHtml() : "" )
|
|
||||||
+ cardnumber.escapeHtml()
|
|
||||||
+ " <small>"
|
|
||||||
+ ( item.date_of_birth
|
|
||||||
? $date(item.date_of_birth)
|
|
||||||
+ "<span class=\"age_years\"> ("
|
|
||||||
+ $get_age(item.date_of_birth)
|
|
||||||
+ " "
|
|
||||||
+ __("years")
|
|
||||||
+ ")</span>,"
|
|
||||||
: ""
|
|
||||||
) + " "
|
|
||||||
+ $format_address(item, { no_line_break: true, include_li: false }) + " "
|
|
||||||
+ ( !singleBranchMode
|
|
||||||
?
|
|
||||||
"<span class=\"ac-library\">"
|
|
||||||
+ item.library.name.escapeHtml()
|
|
||||||
+ "</span>"
|
|
||||||
: "" )
|
|
||||||
+ "</small>"
|
|
||||||
+ "</a>" )
|
|
||||||
.appendTo( ul );
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -398,3 +398,138 @@ function saveOrClearSimpleSearchParams() {
|
||||||
localStorage.setItem('cat_search_pulldown_selection', pulldown_selection );
|
localStorage.setItem('cat_search_pulldown_selection', pulldown_selection );
|
||||||
localStorage.setItem('searchbox_value', searchbox_value );
|
localStorage.setItem('searchbox_value', searchbox_value );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function patron_autocomplete(node, options) {
|
||||||
|
let link_to;
|
||||||
|
let url_params;
|
||||||
|
let on_select_callback;
|
||||||
|
let leading_wildcard = defaultPatronSearchMethod === 'contains' ? '%' : '';
|
||||||
|
if (options) {
|
||||||
|
if (options['link-to']) {
|
||||||
|
link_to = options['link-to'];
|
||||||
|
}
|
||||||
|
if (options['url-params']) {
|
||||||
|
url_params = options['url-params'];
|
||||||
|
}
|
||||||
|
if (options['on-select-callback']) {
|
||||||
|
on_select_callback = options['on-select-callback'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return node.autocomplete({
|
||||||
|
source: function (request, response) {
|
||||||
|
let q = []
|
||||||
|
|
||||||
|
// Add each pattern in search term for each search field
|
||||||
|
let pattern_subquery_and = [];
|
||||||
|
request.term.split(/[\s,]+/)
|
||||||
|
.filter(function (s) { return s.length })
|
||||||
|
.forEach(function (pattern, i) {
|
||||||
|
let pattern_subquery_or = [];
|
||||||
|
defaultPatronSearchFields.split(',').forEach(function (field, i) {
|
||||||
|
pattern_subquery_or.push(
|
||||||
|
{ ["me." + field]: { 'like': leading_wildcard + pattern + '%' } }
|
||||||
|
);
|
||||||
|
});
|
||||||
|
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 = [];
|
||||||
|
defaultPatronSearchFields.split(',').forEach(function (field, i) {
|
||||||
|
term_subquery_or.push(
|
||||||
|
{ ["me." + field]: { 'like': leading_wildcard + request.term + '%' } }
|
||||||
|
);
|
||||||
|
});
|
||||||
|
q.push({ "-or": term_subquery_or });
|
||||||
|
|
||||||
|
let params = {
|
||||||
|
'_page': 1,
|
||||||
|
'_per_page': 10,
|
||||||
|
'q': JSON.stringify(q),
|
||||||
|
'_order_by': '+me.surname,+me.firstname',
|
||||||
|
};
|
||||||
|
$.ajax({
|
||||||
|
data: params,
|
||||||
|
type: 'GET',
|
||||||
|
url: '/api/v1/patrons',
|
||||||
|
headers: {
|
||||||
|
"x-koha-embed": "library"
|
||||||
|
},
|
||||||
|
success: function (data) {
|
||||||
|
return response(data);
|
||||||
|
},
|
||||||
|
error: function (e) {
|
||||||
|
if (e.state() != 'rejected') {
|
||||||
|
alert(__("An error occurred. Check the logs"));
|
||||||
|
}
|
||||||
|
return response();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
minLength: 3,
|
||||||
|
select: function (event, ui) {
|
||||||
|
if (ui.item.link) {
|
||||||
|
window.location.href = ui.item.link;
|
||||||
|
} else if (on_select_callback) {
|
||||||
|
return on_select_callback(event, ui);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
focus: function (event, ui) {
|
||||||
|
event.preventDefault(); // Don't replace the text field
|
||||||
|
},
|
||||||
|
})
|
||||||
|
.data("ui-autocomplete")
|
||||||
|
._renderItem = function (ul, item) {
|
||||||
|
if (link_to) {
|
||||||
|
item.link = link_to == 'circ'
|
||||||
|
? "/cgi-bin/koha/circ/circulation.pl"
|
||||||
|
: link_to == 'reserve'
|
||||||
|
? "/cgi-bin/koha/reserve/request.pl"
|
||||||
|
: "/cgi-bin/koha/members/moremember.pl";
|
||||||
|
item.link += (url_params ? '?' + url_params + '&' : "?") + 'borrowernumber=' + item.patron_id;
|
||||||
|
} else {
|
||||||
|
item.link = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
var cardnumber = "";
|
||||||
|
if (item.cardnumber != "") {
|
||||||
|
// Display card number in parentheses if it exists
|
||||||
|
cardnumber = " (" + item.cardnumber + ") ";
|
||||||
|
}
|
||||||
|
if (item.library_id == loggedInLibrary) {
|
||||||
|
loggedInClass = "ac-currentlibrary";
|
||||||
|
} else {
|
||||||
|
loggedInClass = "";
|
||||||
|
}
|
||||||
|
return $("<li></li>")
|
||||||
|
.addClass(loggedInClass)
|
||||||
|
.data("ui-autocomplete-item", item)
|
||||||
|
.append(
|
||||||
|
""
|
||||||
|
+ (item.link ? "<a href=\"" + item.link + "\">" : "<a>")
|
||||||
|
+ (item.surname ? item.surname.escapeHtml() : "") + ", "
|
||||||
|
+ (item.firstname ? item.firstname.escapeHtml() : "")
|
||||||
|
+ cardnumber.escapeHtml()
|
||||||
|
+ " <small>"
|
||||||
|
+ (item.date_of_birth
|
||||||
|
? $date(item.date_of_birth)
|
||||||
|
+ "<span class=\"age_years\"> ("
|
||||||
|
+ $get_age(item.date_of_birth)
|
||||||
|
+ " "
|
||||||
|
+ __("years")
|
||||||
|
+ ")</span>,"
|
||||||
|
: ""
|
||||||
|
) + " "
|
||||||
|
+ $format_address(item, { no_line_break: true, include_li: false }) + " "
|
||||||
|
+ (!singleBranchMode
|
||||||
|
?
|
||||||
|
"<span class=\"ac-library\">"
|
||||||
|
+ item.library.name.escapeHtml()
|
||||||
|
+ "</span>"
|
||||||
|
: "")
|
||||||
|
+ "</small>"
|
||||||
|
+ "</a>")
|
||||||
|
.appendTo(ul);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue