From 672f3be6a6df5afce81b448f4cbada6c0439ce1a Mon Sep 17 00:00:00 2001 From: Kyle Huckins Date: Wed, 10 May 2017 13:30:36 -0700 Subject: [PATCH] CAT-131 Items Out Renew Items functionality Add a checkbox before each entry in Items Out/Renew Items interfaces. Add button for renewing items to Items Out/Renew Items interface. Add count of remaining renewals to item table. Signed-off-by: Kyle Huckins Changes to be committed: modified: KCLS/openils/var/templates_kcls/circ/selfcheck/circ_page.tt2 modified: Open-ILS/web/js/ui/kcls/circ/selfcheck/selfcheck.js --- .../templates_kcls/circ/selfcheck/circ_page.tt2 | 15 +++++- Open-ILS/web/js/dojo/openils/circ/nls/selfcheck.js | 2 +- .../web/js/ui/kcls/circ/selfcheck/selfcheck.js | 61 ++++++++++++++++++---- 3 files changed, 64 insertions(+), 14 deletions(-) diff --git a/KCLS/openils/var/templates_kcls/circ/selfcheck/circ_page.tt2 b/KCLS/openils/var/templates_kcls/circ/selfcheck/circ_page.tt2 index 13e5622d02..f104f04225 100644 --- a/KCLS/openils/var/templates_kcls/circ/selfcheck/circ_page.tt2 +++ b/KCLS/openils/var/templates_kcls/circ/selfcheck/circ_page.tt2 @@ -1,9 +1,16 @@
-
+
+
@@ -13,10 +20,14 @@ - + + + + +
BARCODE:
BARCODE:
TITLE:
AUTHOR:
DUE DATE:
REMAINING RENEWALS:
FORMAT:
diff --git a/Open-ILS/web/js/dojo/openils/circ/nls/selfcheck.js b/Open-ILS/web/js/dojo/openils/circ/nls/selfcheck.js index ea2060158a..0a9e6d485a 100644 --- a/Open-ILS/web/js/dojo/openils/circ/nls/selfcheck.js +++ b/Open-ILS/web/js/dojo/openils/circ/nls/selfcheck.js @@ -10,7 +10,7 @@ "RENEW_SUCCESS" : "Renewal of item ${0} succeeded", "ALREADY_OUT" : "Item ${0} is already checked out", "OPEN_CIRCULATION_EXISTS" : "Item ${0} is already checked out to another user", - "GENERIC_CIRC_FAILURE" : "Unable to check out item ${0}. Please see staff.", + "GENERIC_CIRC_FAILURE" : "Unable to process some items. Please see staff.", "LOGIN_FAILED" : "Login for ${0} failed", "LOGIN_BARCODE_DOUBLE" : "Your PIN is needed.", "UNKNOWN_ERROR" : "An unhandled exception occurred with error code ${0}", diff --git a/Open-ILS/web/js/ui/kcls/circ/selfcheck/selfcheck.js b/Open-ILS/web/js/ui/kcls/circ/selfcheck/selfcheck.js index dfe36e27f9..61ddf18d7d 100644 --- a/Open-ILS/web/js/ui/kcls/circ/selfcheck/selfcheck.js +++ b/Open-ILS/web/js/ui/kcls/circ/selfcheck/selfcheck.js @@ -28,6 +28,7 @@ var selfCheckMgr; var itemsOutCirc = []; var itemsOutMod = []; var itemsOutCopy = []; +var currentItemsOut = []; var readyHolds = false; const SET_BARCODE_REGEX = 'opac.barcode_regex'; @@ -601,6 +602,7 @@ SelfCheckManager.prototype.drawItemsOutPage = function() { progressDialog.show(true); var self = this; + self.itemsOutArray = []; fieldmapper.standardRequest( ['open-ils.circ', 'open-ils.circ.actor.user.checked_out.atomic'], @@ -621,29 +623,45 @@ SelfCheckManager.prototype.drawItemsOutPage = function() { dojo.forEach(circs, function(circ) { self.itemsOut.push(circ.circ.id()); - handleCheckedItems(circ); + self.itemsOutArray.push(circ); } ); progressDialog.hide(); } } ); + handleCheckedItems(self.itemsOutArray); } -function handleCheckedItems(circ) { +function handleCheckedItems(circs) { var self = selfCheckMgr; var row = self.outTemplate.cloneNode(true); - self.byName(row,'barcode').innerHTML = circ.copy.barcode(); - self.byName(row,'title').innerHTML = circ.record.title(); - self.byName(row,'author').innerHTML = circ.record.author(); - if(dojo.date.stamp.fromISOString(circ.circ.due_date())<(new Date())) self.byName(row,'due_date').style.color="red"; - self.byName(row,'due_date').innerHTML = dojo.date.locale.format(dojo.date.stamp.fromISOString(circ.circ.due_date()), { - selector: 'date', fullYear: true - }); - self.byName(row,'format').innerHTML = circ.record.types_of_resource()[0]; + if(circs.length) { + for(circ = 0; circ < circs.length; circ++) { + var row = self.outTemplate.cloneNode(true); + currentItemsOut.push(circs[circ]); + self.byName(row,'barcode').innerHTML = circs[circ].copy.barcode(); + self.byName(row, 'title').innerHTML = circs[circ].record.title(); + self.byName(row, 'author').innerHTML = circs[circ].record.author(); + self.byName(row, 'remaining_renewals').innerHTML = circs[circ].circ.renewal_remaining(); + + if(dojo.date.stamp.fromISOString(circs[circ].circ.due_date()) < (new Date())) + self.byName(row,'due_date').style.color="red"; + + self.byName(row,'due_date').innerHTML = dojo.date.locale.format( + dojo.date.stamp.fromISOString(circs[circ].circ.due_date()), + {selector: 'date', fullYear: true} + ); + if(circs[circ].circ.renewal_remaining() == 0) { + self.byName(row, 'renew_selector').checked = false; + self.byName(row, 'renew_selector').setAttribute('disabled', true); + } + self.byName(row,'format').innerHTML = circs[circ].record.types_of_resource()[0]; + self.itemsOutTbody.appendChild(row); + } + } - self.itemsOutTbody.appendChild(row); } SelfCheckManager.prototype.goToTab = function(name) { @@ -673,6 +691,27 @@ SelfCheckManager.prototype.goToTab = function(name) { } } +/* + * Renew ticked checkbox items + */ +SelfCheckManager.prototype.renewItems = function() { + + var checkboxes = document.getElementsByClassName('oils-selfck-renewal-selector'); + var itemsToRenew = []; + for(var checkbox = 0; checkbox < checkboxes.length; checkbox++) { + if(checkboxes[checkbox].checked == true) { + itemsToRenew.push(currentItemsOut[checkbox]); + } + checkboxes[checkbox].checked = false; + } + + for(var item = 0; item < itemsToRenew.length; item++) { + this.renew(itemsToRenew[item].copy.barcode()) + } + + this.drawCircPage(); +} + SelfCheckManager.prototype.printList = function(which) { // reset timeout -- 2.11.0