From: pines Date: Tue, 6 Feb 2007 17:41:57 +0000 (+0000) Subject: async renewals with feedback X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=aa47385a371b98df2d7ff666c2f998bba14610c4;p=Evergreen.git async renewals with feedback git-svn-id: svn://svn.open-ils.org/ILS/branches/rel_1_0@6903 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- diff --git a/Open-ILS/xul/staff_client/server/circ/util.js b/Open-ILS/xul/staff_client/server/circ/util.js index 1b0e1296db..77eced6396 100644 --- a/Open-ILS/xul/staff_client/server/circ/util.js +++ b/Open-ILS/xul/staff_client/server/circ/util.js @@ -1288,7 +1288,7 @@ circ.util.checkin_via_barcode2 = function(session,params,backdate,auto_print,che } } -circ.util.renew_via_barcode = function ( barcode, patron_id ) { +circ.util.renew_via_barcode = function ( barcode, patron_id, async ) { try { var obj = {}; JSAN.use('util.network'); obj.network = new util.network(); @@ -1297,10 +1297,44 @@ circ.util.renew_via_barcode = function ( barcode, patron_id ) { var params = { barcode: barcode }; if (patron_id) params.patron = patron_id; + function renew_callback(req) { + try { + var renew = req.getResultObject(); + if (typeof renew.ilsevent != 'undefined') renew = [ renew ]; + for (var j = 0; j < renew.length; j++) { + switch(renew[j].ilsevent) { + case 0 /* SUCCESS */ : break; + case 5000 /* PERM_FAILURE */: break; + case 1212 /* PATRON_EXCEEDS_OVERDUE_COUNT */ : break; + case 1213 /* PATRON_BARRED */ : break; + case 1215 /* CIRC_EXCEEDS_COPY_RANGE */ : break; + case 7002 /* PATRON_EXCEEDS_CHECKOUT_COUNT */ : break; + case 7003 /* COPY_CIRC_NOT_ALLOWED */ : break; + case 7004 /* COPY_NOT_AVAILABLE */ : break; + case 7006 /* COPY_IS_REFERENCE */ : break; + case 7007 /* COPY_NEEDED_FOR_HOLD */ : break; + case 7008 /* MAX_RENEWALS_REACHED */ : break; + case 7009 /* CIRC_CLAIMS_RETURNED */ : break; + case 7010 /* COPY_ALERT_MESSAGE */ : break; + case 7013 /* PATRON_EXCEEDS_FINES */ : break; + default: + throw(renew); + break; + } + } + if (typeof async == 'function') async(renew); + return renew; + } catch(E) { + JSAN.use('util.error'); var error = new util.error(); + error.standard_unexpected_error_alert('Renew Failed for ' + barcode,E); + return null; + } + } + var renew = obj.network.simple_request( 'CHECKOUT_RENEW', [ ses(), params ], - null, + async ? renew_callback : null, { 'title' : 'Override Renew Failure?', 'overridable_events' : [ @@ -1337,29 +1371,7 @@ circ.util.renew_via_barcode = function ( barcode, patron_id ) { } } ); - if (typeof renew.ilsevent != 'undefined') renew = [ renew ]; - for (var j = 0; j < renew.length; j++) { - switch(renew[j].ilsevent) { - case 0 /* SUCCESS */ : break; - case 5000 /* PERM_FAILURE */: break; - case 1212 /* PATRON_EXCEEDS_OVERDUE_COUNT */ : break; - case 1213 /* PATRON_BARRED */ : break; - case 1215 /* CIRC_EXCEEDS_COPY_RANGE */ : break; - case 7002 /* PATRON_EXCEEDS_CHECKOUT_COUNT */ : break; - case 7003 /* COPY_CIRC_NOT_ALLOWED */ : break; - case 7004 /* COPY_NOT_AVAILABLE */ : break; - case 7006 /* COPY_IS_REFERENCE */ : break; - case 7007 /* COPY_NEEDED_FOR_HOLD */ : break; - case 7008 /* MAX_RENEWALS_REACHED */ : break; - case 7009 /* CIRC_CLAIMS_RETURNED */ : break; - case 7010 /* COPY_ALERT_MESSAGE */ : break; - case 7013 /* PATRON_EXCEEDS_FINES */ : break; - default: - throw(renew); - break; - } - } - return renew; + if (! async ) return renew_callback( { 'getResultObject' : function() { return renew; } } ); } catch(E) { JSAN.use('util.error'); var error = new util.error(); diff --git a/Open-ILS/xul/staff_client/server/patron/items.js b/Open-ILS/xul/staff_client/server/patron/items.js index a55432564d..be6b769a1b 100644 --- a/Open-ILS/xul/staff_client/server/patron/items.js +++ b/Open-ILS/xul/staff_client/server/patron/items.js @@ -87,9 +87,9 @@ patron.items.prototype = { 'cmd_items_print2' : [ ['command'], function() { obj.items_print(2); } ], 'cmd_items_export' : [ ['command'], function() { obj.items_export(1); } ], 'cmd_items_export2' : [ ['command'], function() { obj.items_export(2); } ], - 'cmd_items_renew' : [ ['command'], function() { obj.items_renew(1); alert('Action complete.'); obj.retrieve(); } ], + 'cmd_items_renew' : [ ['command'], function() { obj.items_renew(1); /*alert('Action complete.'); obj.retrieve();*/ } ], 'cmd_items_renew_all' : [ ['command'], function() { obj.items_renew_all(); } ], - 'cmd_items_renew2' : [ ['command'], function() { obj.items_renew(2); alert('Action complete.'); obj.retrieve(); } ], + 'cmd_items_renew2' : [ ['command'], function() { obj.items_renew(2); /*alert('Action complete.'); obj.retrieve();*/ } ], 'cmd_items_edit' : [ ['command'], function() { obj.items_edit(1); alert('Action complete.'); obj.retrieve(); } ], 'cmd_items_edit2' : [ ['command'], function() { obj.items_edit(2); alert('Action complete.'); obj.retrieve(); } ], 'cmd_items_mark_lost' : [ ['command'], function() { obj.items_mark_lost(1); alert('Action complete.'); obj.retrieve(); } ], @@ -259,7 +259,7 @@ patron.items.prototype = { try { obj.list.select_all(); obj.items_renew(1,true); - setTimeout(function(){list.on_all_fleshed = null; alert('Action complete.'); obj.retrieve(); },0); + setTimeout(function(){list.on_all_fleshed = null; /*alert('Action complete.'); obj.retrieve();*/ },0); } catch(E) { obj.error.standard_unexpected_error_alert('2 All items were not likely renewed',E); } @@ -283,11 +283,37 @@ patron.items.prototype = { var r = window.confirm(msg); if (!r) { return; } } + + var count = 0; + + function gen_renew(bc) { + var x = document.getElementById('renew_msgs'); + if (x) { + var l = document.createElement('label'); + l.setAttribute('value','Renewing ' + bc); + x.appendChild(l); + } + var renew = circ.util.renew_via_barcode( barcode, obj.patron_id, + function(r) { + if ( instanceOf( r[0], 'circ' ) || (typeof r[0].ilsevent != 'undefined' && r[0].ilsevent == 0) ) { + l.setAttribute('value', bc + ' renewed.'); + } else { + l.setAttribute('value', bc + ' not renewed. ' + r[0].desc); + } + count--; + if (count == 0) { + if (window.confirm('Action completed. Refresh list?')) obj.retrieve(); + JSAN.use('util.widgets'); util.widgets.remove_children(x); + } + } + ); + } + for (var i = 0; i < retrieve_ids.length; i++) { try { + count++; var barcode = retrieve_ids[i].barcode; - //alert('Renew barcode = ' + barcode); - var renew = circ.util.renew_via_barcode( barcode, obj.patron_id ); + gen_renew(barcode); } catch(E) { obj.error.standard_unexpected_error_alert('Renew probably did not happen for barcode ' + barcode,E); diff --git a/Open-ILS/xul/staff_client/server/patron/items_overlay.xul b/Open-ILS/xul/staff_client/server/patron/items_overlay.xul index a1785037f1..81fa90c756 100644 --- a/Open-ILS/xul/staff_client/server/patron/items_overlay.xul +++ b/Open-ILS/xul/staff_client/server/patron/items_overlay.xul @@ -57,6 +57,7 @@ +