Koha/koha-tmpl/intranet-tmpl/prog/en/js/pages/batchMod.js
Owen Leonard 0936defa56 Bug 9882 - Use DataTables on batch modifications pages
The batch modification pages (edit and delete) use the old tablesorter
plugin. They should use DataTables instead. This patch makes the
following changes:

- Remove tablesorter plugin from batchMod.tt where it was unused.
- Replace tablesorter assets with DataTables assets on batch edit and
  batch delete pages.
- Replace tablesorter code with DataTables code in batchMod.js, which
  provides table sorting functionality for both batch templates.
- Move position of batchMod.js script inclusion so that DataTables
  assets are loaded first.
- Remove inline table sorting code from batch edit page since it is
  provided by batchMod.js

To test, load barcodes on both the batch edit and batch delete pages.
Test JavaScript-based functionality on each results page:

- Check/Uncheck all
- Hide/show columns
- Table sorting on a variety of different kinds of data columns

Batch operations should complete normally.
There should be no JavaScript error on the batch operation "landing
page" (batchMod.tt).

Signed-off-by: Melia Meggs <melia@bywatersolutions.com>
Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de>
All tests and QA script pass.
Checked both patches, no problems found.
Signed-off-by: Jared Camins-Esakov <jcamins@cpbibliography.com>
2013-03-30 20:33:52 -04:00

131 lines
4.2 KiB
JavaScript

// Set expiration date for cookies
var date = new Date();
date.setTime(date.getTime()+(365*24*60*60*1000));
var expiration = date.toGMTString();
function hideColumns(){
valCookie = $.cookie("showColumns");
if(valCookie){
valCookie = valCookie.split("/");
$("#showall").removeAttr("checked").parent().removeClass("selected");
for( i=0; i<valCookie.length; i++ ){
if(valCookie[i] !== ''){
index = valCookie[i] - 2;
$("#itemst td:nth-child("+valCookie[i]+"),#itemst th:nth-child("+valCookie[i]+")").toggle();
$("#checkheader"+index).removeAttr("checked").parent().removeClass("selected");
}
}
}
}
function hideColumn(num) {
$("#hideall,#showall").removeAttr("checked").parent().removeClass("selected");
valCookie = $.cookie("showColumns");
// set the index of the table column to hide
$("#"+num).parent().removeClass("selected");
var hide = Number(num.replace("checkheader","")) + 2;
// hide header and cells matching the index
$("#itemst td:nth-child("+hide+"),#itemst th:nth-child("+hide+")").toggle();
// set or modify cookie with the hidden column's index
if(valCookie){
valCookie = valCookie.split("/");
var found = false;
for( $i=0; $i<valCookie.length; $i++ ){
if (hide == valCookie[i]) {
found = true;
break;
}
}
if( !found ){
valCookie.push(hide);
var cookieString = valCookie.join("/");
$.cookie("showColumns", cookieString, { expires : date });
}
} else {
$.cookie("showColumns", hide, { expires : date });
}
}
// Array Remove - By John Resig (MIT Licensed)
// http://ejohn.org/blog/javascript-array-remove/
Array.prototype.remove = function(from, to) {
var rest = this.slice((to || from) + 1 || this.length);
this.length = from < 0 ? this.length + from : from;
return this.push.apply(this, rest);
};
function showColumn(num){
$("#hideall").removeAttr("checked").parent().removeClass("selected");
$("#"+num).parent().addClass("selected");
valCookie = $.cookie("showColumns");
// set the index of the table column to hide
show = Number(num.replace("checkheader","")) + 2;
// hide header and cells matching the index
$("#itemst td:nth-child("+show+"),#itemst th:nth-child("+show+")").toggle();
// set or modify cookie with the hidden column's index
if(valCookie){
valCookie = valCookie.split("/");
var found = false;
for( i=0; i<valCookie.length; i++ ){
if (show == valCookie[i]) {
valCookie.remove(i);
found = true;
}
}
if( found ){
var cookieString = valCookie.join("/");
$.cookie("showColumns", cookieString, { expires : date });
}
}
}
function showAllColumns(){
$("#selections").checkCheckboxes();
$("#selections span").addClass("selected");
$("#itemst td:nth-child(2),#itemst tr th:nth-child(2)").nextAll().show();
$.cookie("showColumns",null);
$("#hideall").removeAttr("checked").parent().removeClass("selected");
}
function hideAllColumns(){
$("#selections").unCheckCheckboxes();
$("#selections span").removeClass("selected");
$("#itemst td:nth-child(2),#itemst th:nth-child(2)").nextAll().hide();
$("#hideall").attr("checked","checked").parent().addClass("selected");
var cookieString = allColumns.join("/");
$.cookie("showColumns", cookieString, { expires : date });
}
$(document).ready(function() {
hideColumns();
$("#itemst").dataTable($.extend(true, {}, dataTablesDefaults, {
"sDom": 't',
"aoColumnDefs": [
{ "aTargets": [ 0 ], "bSortable": false, "bSearchable": false }
],
"bPaginate": false
}));
$("#selectallbutton").click(function(){
$("#itemst").checkCheckboxes();
return false;
});
$("#clearallbutton").click(function(){
$("#itemst").unCheckCheckboxes();
return false;
});
$("#selections input").change(function(e){
var num = $(this).attr("id");
if(num == 'showall'){
showAllColumns();
e.stopPropagation();
} else if(num == 'hideall'){
hideAllColumns();
e.stopPropagation();
} else {
if($(this).attr("checked")){
showColumn(num);
} else {
hideColumn(num);
}
}
});
});