Lines 492-506
jQuery.fn.dataTable.ext.errMode = function(settings, note, message) {
Link Here
|
492 |
|
492 |
|
493 |
/** |
493 |
/** |
494 |
* Create a new dataTables instance that uses the Koha RESTful API's as a data source |
494 |
* Create a new dataTables instance that uses the Koha RESTful API's as a data source |
495 |
* @param {Object} options Please see the dataTables documentation for further details |
495 |
* @param {Object} options Please see the dataTables settings documentation for further |
496 |
* We extend the options set with the `criteria` key which allows |
496 |
* details |
497 |
* the developer to select the match type to be applied during searches |
497 |
* @param {string} [options.criteria=contains] A koha specific extension to the dataTables settings block that |
498 |
* Valid keys are: `contains`, `starts_with`, `ends_with` and `exact` |
498 |
* allows setting the 'comparison operator' used in searches |
499 |
* @param {Object} table_settings The arrayref as returned by TableSettings.GetTableSettings function available |
499 |
* Supports `contains`, `starts_with`, `ends_with` and `exact` match |
500 |
* from the columns_settings template toolkit include |
500 |
* @param {string} [options.columns.*.criteria] As above, but at the column definition level |
501 |
* @param {Boolean} add_filters Add a filters row as the top row of the table |
501 |
* @param {Object} table_settings The arrayref as returned by TableSettings.GetTableSettings function |
502 |
* @param {Object} default_filters Add a set of default search filters to apply at table initialisation |
502 |
* available from the columns_settings template toolkit include |
503 |
* @return {Object} The dataTables instance |
503 |
* @param {Boolean} add_filters Add a filters row as the top row of the table |
|
|
504 |
* @param {Object} default_filters Add a set of default search filters to apply at table initialisation |
505 |
* @return {Object} The dataTables instance |
504 |
*/ |
506 |
*/ |
505 |
$.fn.kohaTable = function(options, table_settings, add_filters, default_filters) { |
507 |
$.fn.kohaTable = function(options, table_settings, add_filters, default_filters) { |
506 |
var settings = null; |
508 |
var settings = null; |
Lines 570-576
jQuery.fn.dataTable.ext.errMode = function(settings, note, message) {
Link Here
|
570 |
_per_page: length |
572 |
_per_page: length |
571 |
}; |
573 |
}; |
572 |
|
574 |
|
573 |
function build_query(col, value){ |
575 |
function build_query(col, value, is_column){ |
574 |
|
576 |
|
575 |
// escape SQL special characters |
577 |
// escape SQL special characters |
576 |
value = value.replace(/(\%|\_|\\)/g, "\\$1" ); |
578 |
value = value.replace(/(\%|\_|\\)/g, "\\$1" ); |
Lines 580-586
jQuery.fn.dataTable.ext.errMode = function(settings, note, message) {
Link Here
|
580 |
for (var i=0;i<attributes.length;i++){ |
582 |
for (var i=0;i<attributes.length;i++){ |
581 |
var part = {}; |
583 |
var part = {}; |
582 |
var attr = attributes[i]; |
584 |
var attr = attributes[i]; |
583 |
let criteria = options.criteria; |
585 |
let criteria = is_column ? col.criteria || options.criteria : options.criteria; |
584 |
if ( value.match(/^\^(.*)\$$/) ) { |
586 |
if ( value.match(/^\^(.*)\$$/) ) { |
585 |
value = value.replace(/^\^/, '').replace(/\$$/, ''); |
587 |
value = value.replace(/^\^/, '').replace(/\$$/, ''); |
586 |
criteria = "exact"; |
588 |
criteria = "exact"; |
Lines 601-607
jQuery.fn.dataTable.ext.errMode = function(settings, note, message) {
Link Here
|
601 |
}) |
603 |
}) |
602 |
.map(function(col) { |
604 |
.map(function(col) { |
603 |
var value = data.columns[col.idx].search.value; |
605 |
var value = data.columns[col.idx].search.value; |
604 |
return build_query(col, value) |
606 |
return build_query(col, value, 1) |
605 |
}) |
607 |
}) |
606 |
.map(function r(e){ |
608 |
.map(function r(e){ |
607 |
return ($.isArray(e) ? $.map(e, r) : e); |
609 |
return ($.isArray(e) ? $.map(e, r) : e); |
Lines 614-620
jQuery.fn.dataTable.ext.errMode = function(settings, note, message) {
Link Here
|
614 |
}) |
616 |
}) |
615 |
.map(function(col) { |
617 |
.map(function(col) { |
616 |
var value = filter; |
618 |
var value = filter; |
617 |
return build_query(col, value) |
619 |
return build_query(col, value, 0) |
618 |
}) |
620 |
}) |
619 |
.map(function r(e){ |
621 |
.map(function r(e){ |
620 |
return ($.isArray(e) ? $.map(e, r) : e); |
622 |
return ($.isArray(e) ? $.map(e, r) : e); |
621 |
- |
|
|