Koha/koha-tmpl/intranet-tmpl/prog/js/pages/batchMod.js
Lucas Gass 5c2b2ac09a
Bug 31455: Make batchMod sort by order scanned
To test:
1. In batch item deletion and batch item modification add some
   barcodes.
2. Notice they are being sorted by item number, not in the order
   scanned.
3. Appply patch and restart services.
4. Try scanning items again in both batch item deletion and batch item
   modification.
5. The found barcodes should now sort by order scanned.

Signed-off-by: Owen Leonard <oleonard@myacpl.org>

Signed-off-by: Joonas Kylmälä <joonas.kylmala@iki.fi>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
2022-09-12 15:30:42 -03:00

164 lines
5.9 KiB
JavaScript

/* global dataTablesDefaults allColumns Cookies */
// Set expiration date for cookies
var date = new Date();
date.setTime(date.getTime() + (365 * 24 * 60 * 60 * 1000));
function guess_nb_cols() {
// This is a bit ugly, we are trying to know if there are checkboxes in the first column of the table
if ( $("#itemst tr:first th:first").html() == "" ) {
// First header is empty, it's a checkbox
return 3;
} else {
// First header is not empty, there are no checkboxes
return 2;
}
}
function hideColumns() {
var valCookie = Cookies.get("showColumns");
var nb_cols = guess_nb_cols();
if (valCookie) {
valCookie = valCookie.split("/");
$("#showall").prop("checked", false).parent().removeClass("selected");
for ( var i = 0; i < valCookie.length; i++ ) {
if (valCookie[i] !== '') {
var index = valCookie[i] - nb_cols;
$("#itemst td:nth-child(" + valCookie[i] + "),#itemst th:nth-child(" + valCookie[i] + ")").toggle();
$("#checkheader" + index).prop("checked", false).parent().removeClass("selected");
}
}
}
}
function hideColumn(num) {
$("#hideall,#showall").prop("checked", false).parent().removeClass("selected");
var nb_cols = guess_nb_cols();
var valCookie = Cookies.get("showColumns");
// set the index of the table column to hide
$("#" + num).parent().removeClass("selected");
var hide = Number(num.replace("checkheader", "")) + nb_cols;
// 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 ( var i = 0; i < valCookie.length; i++ ) {
if (hide == valCookie[i]) {
found = true;
break;
}
}
if (!found) {
valCookie.push(hide);
var cookieString = valCookie.join("/");
Cookies.set("showColumns", cookieString, { expires: date, path: '/', sameSite: 'Lax' });
}
} else {
Cookies.set("showColumns", hide, { expires: date, path: '/', sameSite: 'Lax' });
}
}
// 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").prop("checked", false).parent().removeClass("selected");
$("#" + num).parent().addClass("selected");
var valCookie = Cookies.get("showColumns");
// set the index of the table column to hide
var nb_cols = guess_nb_cols();
var show = Number(num.replace("checkheader", "")) + nb_cols;
// 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 ( var i = 0; i < valCookie.length; i++ ) {
if (show == valCookie[i]) {
valCookie.remove(i);
found = true;
}
}
if (found) {
var cookieString = valCookie.join("/");
Cookies.set("showColumns", cookieString, { expires: date, path: '/', sameSite: 'Lax' });
}
}
}
function showAllColumns() {
var nb_cols = guess_nb_cols();
$("#selections input:checkbox").each(function () {
$(this).prop("checked", true);
});
$("#selections span").addClass("selected");
$("#itemst td:nth-child("+nb_cols+"),#itemst tr th:nth-child("+nb_cols+")").nextAll().show();
Cookies.remove("showColumns", { path: '/' });
$("#hideall").prop("checked", false).parent().removeClass("selected");
}
function hideAllColumns() {
var nb_cols = guess_nb_cols();
$("#selections input:checkbox").each(function () {
$(this).prop("checked", false);
});
$("#selections span").removeClass("selected");
$("#itemst td:nth-child("+nb_cols+"),#itemst tr th:nth-child("+nb_cols+")").nextAll().hide();
$("#hideall").prop("checked", true).parent().addClass("selected");
var cookieString = allColumns.join("/");
Cookies.set("showColumns", cookieString, { expires: date, path: '/', sameSite: 'Lax' });
}
$(document).ready(function () {
hideColumns();
$("#itemst").dataTable($.extend(true, {}, dataTablesDefaults, {
"sDom": 't',
"aoColumnDefs": [
{ "aTargets": [0, 1], "bSortable": false, "bSearchable": false },
{ "aTargets": [0], "bVisible": false },
{ "sType": "anti-the", "aTargets": ["anti-the"] }
],
"bPaginate": false,
}));
$("#selectallbutton").click(function (e) {
e.preventDefault();
$("#itemst input:checkbox").each(function () {
$(this).prop("checked", true);
});
});
$("#clearallbutton").click(function (e) {
e.preventDefault();
$("#itemst input:checkbox").each(function () {
$(this).prop("checked", false);
});
});
$("#clearonloanbutton").click(function () {
$("#itemst input[name='itemnumber'][data-is-onloan='1']").each(function () {
$(this).prop('checked', false);
});
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).prop("checked")) {
showColumn(num);
} else {
hideColumn(num);
}
}
});
});