|
Lines 502-504
function filterDataTable( table, column, term ){
Link Here
|
| 502 |
table.search( term ).draw("page"); |
502 |
table.search( term ).draw("page"); |
| 503 |
} |
503 |
} |
| 504 |
} |
504 |
} |
| 505 |
- |
505 |
|
|
|
506 |
jQuery.fn.dataTable.ext.errMode = function(settings, note, message) { |
| 507 |
console.warn(message); |
| 508 |
}; |
| 509 |
|
| 510 |
(function($) { |
| 511 |
|
| 512 |
$.fn.api = function(options) { |
| 513 |
var settings = null; |
| 514 |
if(options) { |
| 515 |
settings = $.extend(true, {}, dataTablesDefaults, { |
| 516 |
'deferRender': true, |
| 517 |
"paging": true, |
| 518 |
'serverSide': true, |
| 519 |
'searching': true, |
| 520 |
'pagingType': 'full', |
| 521 |
'ajax': { |
| 522 |
'type': 'GET', |
| 523 |
'cache': true, |
| 524 |
'dataSrc': 'data', |
| 525 |
'beforeSend': function(xhr, settings) { |
| 526 |
this._xhr = xhr; |
| 527 |
if(options.embed) { |
| 528 |
xhr.setRequestHeader('x-koha-embed', Array.isArray(options.embed)?options.embed.join(','):options.embed); |
| 529 |
} |
| 530 |
if(options.header_filter && options.query_parameters) { |
| 531 |
xhr.setRequestHeader('x-koha-query', options.query_parameters); |
| 532 |
delete options.query_parameters; |
| 533 |
} |
| 534 |
}, |
| 535 |
'dataFilter': function(data, type) { |
| 536 |
var json = {data: JSON.parse(data)}; |
| 537 |
if(total = this._xhr.getResponseHeader('x-total-count')) { |
| 538 |
json.recordsTotal = total; |
| 539 |
json.recordsFiltered = total; |
| 540 |
} |
| 541 |
return JSON.stringify(json); |
| 542 |
}, |
| 543 |
'data': function( data, settings ) { |
| 544 |
var length = data.length; |
| 545 |
var start = data.start; |
| 546 |
|
| 547 |
var dataSet = { |
| 548 |
_page: Math.floor(start/length) + 1, |
| 549 |
_per_page: length |
| 550 |
}; |
| 551 |
|
| 552 |
var filter = data.search.value; |
| 553 |
if (filter != '') { |
| 554 |
var query_parameters = settings.aoColumns |
| 555 |
.filter(function(col) { |
| 556 |
return col.bSearchable && typeof col.data == 'string' |
| 557 |
}) |
| 558 |
.map(function(col) { |
| 559 |
var part = {}; |
| 560 |
part[!col.data.includes('.')?'me.'+col.data:col.data] = {like: filter+'%'}; |
| 561 |
return part; |
| 562 |
}); |
| 563 |
|
| 564 |
if(query_parameters.length) { |
| 565 |
query_parameters = JSON.stringify(query_parameters.length === 1?query_parameters[0]:query_parameters); |
| 566 |
if(options.header_filter) { |
| 567 |
options.query_parameters = query_parameters; |
| 568 |
} else { |
| 569 |
dataSet.q = query_parameters; |
| 570 |
} |
| 571 |
} |
| 572 |
|
| 573 |
dataSet._match = 'starts_with'; |
| 574 |
} else { |
| 575 |
delete options.query_parameters; |
| 576 |
} |
| 577 |
|
| 578 |
if(options.columns) { |
| 579 |
var order = data.order; |
| 580 |
order.forEach(function (e,i) { |
| 581 |
var order_col = e.column; |
| 582 |
var order_by = options.columns[order_col].data; |
| 583 |
var order_dir = e.dir == 'asc' ? '+' : '-'; |
| 584 |
dataSet._order_by = order_dir + (!order_by.includes('.')?'me.'+order_by:order_by); |
| 585 |
}); |
| 586 |
} |
| 587 |
|
| 588 |
return dataSet; |
| 589 |
} |
| 590 |
} |
| 591 |
}, options); |
| 592 |
} |
| 593 |
return $(this).dataTable(settings); |
| 594 |
}; |
| 595 |
|
| 596 |
})(jQuery); |