Bug 29397: Add .kohaSelect select2 wrapper function
This patch adds a kohaSelect wrapper function to simplify paging/infinite scrolling with select2 using the Koha RESTful api's. Invoke select2 select boxes as you normally would from JS, but instead of calling .select2(config) use .kohaSelect(config). If an 'ajax' property is defined in your config object, we wrap the transport such that responses include a pagination key as expected by select2. Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io> Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com> Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
This commit is contained in:
parent
f9bb92fb80
commit
c5a4c193f4
1 changed files with 30 additions and 0 deletions
|
@ -57,3 +57,33 @@ function kohaSelect2Transport(params, success, failure) {
|
|||
$request.then(read_headers).then(success);
|
||||
$request.fail(failure);
|
||||
}
|
||||
|
||||
/* wrapper that nests paging information into the results object for use with koha REST apis */
|
||||
(function($) {
|
||||
$.fn.kohaSelect = function(config) {
|
||||
if (config.hasOwnProperty('ajax')) {
|
||||
config.ajax.transport = function(params, success, failure) {
|
||||
var read_headers = function(data, textStatus, jqXHR) {
|
||||
var more = false;
|
||||
var link = jqXHR.getResponseHeader('Link') || '';
|
||||
if (link.search(/<([^>]+)>;\s*rel\s*=\s*['"]?next['"]?\s*(,|$)/i) > -1) {
|
||||
more = true;
|
||||
}
|
||||
|
||||
return {
|
||||
results: data,
|
||||
pagination: {
|
||||
more: more
|
||||
}
|
||||
};
|
||||
};
|
||||
var $request = $.ajax(params);
|
||||
$request.then(read_headers).then(success);
|
||||
$request.fail(failure);
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
$(this).select2(config);
|
||||
};
|
||||
})(jQuery);
|
||||
|
|
Loading…
Reference in a new issue