@@ -, +, @@
embedded columns
This option adds x-koha-embed header to request.
This option if true sets x-koha-query header with stringyfied json of filters
+$('.table_selector').api({
+ columns: [
+ {
+ data: function(row, type, val, meta) {
+ return ''+row.holds.patron.firstname+'';
+ },
+ orderable: true,
+ searchable: true
+ }
+ ]
+});
+$('.table_selector').api({
+ columns: [
+ {
+ data: 'holds.patron.firstname',
+ render: function(row, type, val, meta) {
+ return ''+row.holds.patron.firstname+'';
+ },
+ orderable: true,
+ searchable: true
+ }
+ ]
+});
---
koha-tmpl/intranet-tmpl/prog/js/datatables.js | 28 +++++++++++++++++--
1 file changed, 26 insertions(+), 2 deletions(-)
--- a/koha-tmpl/intranet-tmpl/prog/js/datatables.js
+++ a/koha-tmpl/intranet-tmpl/prog/js/datatables.js
@@ -527,6 +527,10 @@ jQuery.fn.dataTable.ext.errMode = function(settings, note, message) {
if(options.embed) {
xhr.setRequestHeader('x-koha-embed', Array.isArray(options.embed)?options.embed.join(','):options.embed);
}
+ if(options.header_filter && options.query_parameters) {
+ xhr.setRequestHeader('x-koha-query', options.query_parameters);
+ delete options.query_parameters;
+ }
},
'dataFilter': function(data, type) {
var json = {data: JSON.parse(data)};
@@ -547,8 +551,28 @@ jQuery.fn.dataTable.ext.errMode = function(settings, note, message) {
var filter = data.search.value;
if (filter != '') {
- dataSet.name = filter;
+ var query_parameters = settings.aoColumns
+ .filter(function(col) {
+ return col.bSearchable && typeof col.data == 'string'
+ })
+ .map(function(col) {
+ var part = {};
+ part[!col.data.includes('.')?'me.'+col.data:col.data] = {like: filter+'%'};
+ return part;
+ });
+
+ if(query_parameters.length) {
+ query_parameters = JSON.stringify(query_parameters.length === 1?query_parameters[0]:query_parameters);
+ if(options.header_filter) {
+ options.query_parameters = query_parameters;
+ } else {
+ dataSet.q = query_parameters;
+ }
+ }
+
dataSet._match = 'starts_with';
+ } else {
+ delete options.query_parameters;
}
if(options.columns) {
@@ -557,7 +581,7 @@ jQuery.fn.dataTable.ext.errMode = function(settings, note, message) {
var order_col = e.column;
var order_by = options.columns[order_col].data;
var order_dir = e.dir == 'asc' ? '+' : '-';
- dataSet._order_by = order_dir + order_by;
+ dataSet._order_by = order_dir + (!order_by.includes('.')?'me.'+order_by:order_by);
});
}
--