From e08ebc51f40768fcb342c18f41789fc56c1f17ec Mon Sep 17 00:00:00 2001 From: phasefx Date: Tue, 19 Jul 2005 04:38:12 +0000 Subject: [PATCH] user_request is now optionally async'able. Aggressive async of patron select in patron search. Probably faster to get a fleshed object from middle layer. Holds interface, cancel hold throwing errors git-svn-id: svn://svn.open-ils.org/ILS/trunk@1275 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- .../content/evergreen/circ/circ_utils.js | 102 +++++++----- .../evergreen/patron/patron_display.js | 49 ++++-- .../content/evergreen/patron/patron_holds.js | 59 ++++--- .../content/evergreen/patron/patron_search.js | 31 +++- .../content/evergreen/patron/patron_utils.js | 145 ++++++++++-------- .../chrome/content/evergreen/util/ses.js | 27 ++-- .../locale/en-US/evergreen/OpenILS.properties | 9 +- 7 files changed, 274 insertions(+), 148 deletions(-) diff --git a/Evergreen/staff_client/chrome/content/evergreen/circ/circ_utils.js b/Evergreen/staff_client/chrome/content/evergreen/circ/circ_utils.js index 83fd0503f8..e5b9c99acc 100644 --- a/Evergreen/staff_client/chrome/content/evergreen/circ/circ_utils.js +++ b/Evergreen/staff_client/chrome/content/evergreen/circ/circ_utils.js @@ -7,15 +7,27 @@ function is_barcode_valid( barcode ) { return check_checkdigit( barcode ); } -function checkout_permit(barcode, patron_id, num_of_open_async_checkout_requests) { +function cancel_hold( hold ) { + sdump('D_CIRC_UTILS',arg_dump(arguments,{0:true})); + var result = user_request( + 'open-ils.circ', + 'open-ils.circ.hold.cancel', + [ mw.G.auth_ses[0], hold.id() ] + )[0]; + sdump('D_CIRC_UTILS','result = ' + result + '\n'); + return result; +} + +function checkout_permit(barcode, patron_id, num_of_open_async_checkout_requests, f) { sdump('D_CIRC_UTILS',arg_dump(arguments,{0:true,1:true,2:true})); try { var check = user_request( 'open-ils.circ', 'open-ils.circ.permit_checkout', - [ mw.G.auth_ses[0], barcode, patron_id, num_of_open_async_checkout_requests ] + [ mw.G.auth_ses[0], barcode, patron_id, num_of_open_async_checkout_requests ], + f )[0]; - sdump('D_CIRC_UTILS','check = ' + js2JSON(check) + '\n'); + if (!f) sdump('D_CIRC_UTILS','check = ' + js2JSON(check) + '\n'); return check; } catch(E) { handle_error(E); @@ -23,15 +35,16 @@ function checkout_permit(barcode, patron_id, num_of_open_async_checkout_requests } } -function checkout_by_copy_barcode(barcode, patron_id) { +function checkout_by_copy_barcode(barcode, patron_id, f) { sdump('D_CIRC_UTILS',arg_dump(arguments,{0:true,1:true})); try { var check = user_request( 'open-ils.circ', 'open-ils.circ.checkout.barcode', - [ mw.G.auth_ses[0], barcode, patron_id ] + [ mw.G.auth_ses[0], barcode, patron_id ], + f )[0]; - sdump('D_CIRC_UTILS','check = ' + js2JSON(check) + '\n'); + if (!f) sdump('D_CIRC_UTILS','check = ' + js2JSON(check) + '\n'); return check; } catch(E) { sdump('D_ERROR',E); @@ -39,15 +52,16 @@ function checkout_by_copy_barcode(barcode, patron_id) { } } -function checkin_by_copy_barcode(barcode) { +function checkin_by_copy_barcode(barcode, f) { sdump('D_CIRC_UTILS',arg_dump(arguments,{0:true})); try { var check = user_request( 'open-ils.circ', 'open-ils.circ.checkin.barcode', - [ mw.G.auth_ses[0], barcode ] + [ mw.G.auth_ses[0], barcode ], + f )[0]; - sdump('D_CIRC_UTILS','check = ' + js2JSON(check) + '\n'); + if (!f) sdump('D_CIRC_UTILS','check = ' + js2JSON(check) + '\n'); return check; } catch(E) { sdump('D_ERROR',E); @@ -55,15 +69,16 @@ function checkin_by_copy_barcode(barcode) { } } -function renew_by_circ_id(id) { +function renew_by_circ_id(id, f) { sdump('D_CIRC_UTILS',arg_dump(arguments,{0:true})); try { var check = user_request( 'open-ils.circ', 'open-ils.circ.renew', - [ mw.G.auth_ses[0], id ] + [ mw.G.auth_ses[0], id ], + f )[0]; - sdump('D_CIRC_UTILS','check = ' + js2JSON(check) + '\n'); + if (!f) sdump('D_CIRC_UTILS','check = ' + js2JSON(check) + '\n'); return check; } catch(E) { sdump('D_ERROR',E); @@ -73,9 +88,40 @@ function renew_by_circ_id(id) { function hold_cols() { var cols = [ +{ + 'id' : 'request_time', 'label' : getString('ahr_request_time_label'), 'flex' : 0, + 'primary' : false, 'hidden' : false, 'fm_class' : 'ahr', + 'fm_field_render' : '.request_time().toString().substr(0,10)' +}, +{ + 'id' : 'status', 'label' : getString('ahr_status_label'), 'flex' : 1, + 'primary' : false, 'hidden' : false, 'fm_class' : 'ahr', 'fm_field_render' : '.status()' +}, +{ + 'id' : 'hold_type', 'label' : getString('ahr_hold_type_label'), 'flex' : 0, + 'primary' : false, 'hidden' : false, 'fm_class' : 'ahr', 'fm_field_render' : '.hold_type()' +}, +{ + 'id' : 'pickup_lib', 'label' : getString('ahr_pickup_lib_label'), 'flex' : 1, + 'primary' : false, 'hidden' : true, 'fm_class' : 'ahr', + 'fm_field_render' : 'mw.G.org_tree_hash[ $$.pickup_lib() ].name()' +}, +{ + 'id' : 'pickup_lib_shortname', 'label' : getString('ahr_pickup_lib_label'), 'flex' : 0, + 'primary' : false, 'hidden' : false, 'fm_class' : 'ahr', + 'fm_field_render' : 'mw.G.org_tree_hash[ $$.pickup_lib() ].shortname()' +}, + { + 'id' : 'title', 'label' : getString('mvr_label_title'), 'flex' : 1, + 'primary' : false, 'hidden' : false, 'fm_class' : 'mvr', 'fm_field_render' : '.title()' + }, + { + 'id' : 'author', 'label' : getString('mvr_label_author'), 'flex' : 1, + 'primary' : false, 'hidden' : false, 'fm_class' : 'mvr', 'fm_field_render' : '.author()' + }, { 'id' : 'capture_time', 'label' : getString('ahr_capture_time_label'), 'flex' : 1, - 'primary' : false, 'hidden' : false, 'fm_class' : 'ahr', 'fm_field_render' : '.capture_time()' + 'primary' : false, 'hidden' : true, 'fm_class' : 'ahr', 'fm_field_render' : '.capture_time()' }, { 'id' : 'current_copy', 'label' : getString('ahr_current_copy_label'), 'flex' : 1, @@ -83,19 +129,15 @@ function hold_cols() { }, { 'id' : 'email_notify', 'label' : getString('ahr_email_notify_label'), 'flex' : 1, - 'primary' : false, 'hidden' : false, 'fm_class' : 'ahr', 'fm_field_render' : '.email_notify()' + 'primary' : false, 'hidden' : true, 'fm_class' : 'ahr', 'fm_field_render' : '.email_notify()' }, { 'id' : 'expire_time', 'label' : getString('ahr_expire_time_label'), 'flex' : 1, - 'primary' : false, 'hidden' : false, 'fm_class' : 'ahr', 'fm_field_render' : '.expire_time()' + 'primary' : false, 'hidden' : true, 'fm_class' : 'ahr', 'fm_field_render' : '.expire_time()' }, { 'id' : 'fulfillment_time', 'label' : getString('ahr_fulfillment_time_label'), 'flex' : 1, - 'primary' : false, 'hidden' : false, 'fm_class' : 'ahr', 'fm_field_render' : '.fulfillment_time()' -}, -{ - 'id' : 'hold_type', 'label' : getString('ahr_hold_type_label'), 'flex' : 1, - 'primary' : false, 'hidden' : false, 'fm_class' : 'ahr', 'fm_field_render' : '.hold_type()' + 'primary' : false, 'hidden' : true, 'fm_class' : 'ahr', 'fm_field_render' : '.fulfillment_time()' }, { 'id' : 'holdable_formats', 'label' : getString('ahr_holdable_formats_label'), 'flex' : 1, @@ -105,34 +147,14 @@ function hold_cols() { 'id' : 'id', 'label' : getString('ahr_id_label'), 'flex' : 1, 'primary' : false, 'hidden' : true, 'fm_class' : 'ahr', 'fm_field_render' : '.id()' }, -{ - 'id' : 'ischanged', 'label' : getString('ahr_ischanged_label'), 'flex' : 1, - 'primary' : false, 'hidden' : true, 'fm_class' : 'ahr', 'fm_field_render' : '.ischanged()' -}, -{ - 'id' : 'isdeleted', 'label' : getString('ahr_isdeleted_label'), 'flex' : 1, - 'primary' : false, 'hidden' : true, 'fm_class' : 'ahr', 'fm_field_render' : '.isdeleted()' -}, -{ - 'id' : 'isnew', 'label' : getString('ahr_isnew_label'), 'flex' : 1, - 'primary' : false, 'hidden' : true, 'fm_class' : 'ahr', 'fm_field_render' : '.isnew()' -}, { 'id' : 'phone_notify', 'label' : getString('ahr_phone_notify_label'), 'flex' : 1, 'primary' : false, 'hidden' : true, 'fm_class' : 'ahr', 'fm_field_render' : '.phone_notify()' }, -{ - 'id' : 'pickup_lib', 'label' : getString('ahr_pickup_lib_label'), 'flex' : 1, - 'primary' : false, 'hidden' : true, 'fm_class' : 'ahr', 'fm_field_render' : '.pickup_lib()' -}, { 'id' : 'prev_check_time', 'label' : getString('ahr_prev_check_time_label'), 'flex' : 1, 'primary' : false, 'hidden' : true, 'fm_class' : 'ahr', 'fm_field_render' : '.prev_check_time()' }, -{ - 'id' : 'request_time', 'label' : getString('ahr_request_time_label'), 'flex' : 1, - 'primary' : false, 'hidden' : true, 'fm_class' : 'ahr', 'fm_field_render' : '.request_time()' -}, { 'id' : 'requestor', 'label' : getString('ahr_requestor_label'), 'flex' : 1, 'primary' : false, 'hidden' : true, 'fm_class' : 'ahr', 'fm_field_render' : '.requestor()' diff --git a/Evergreen/staff_client/chrome/content/evergreen/patron/patron_display.js b/Evergreen/staff_client/chrome/content/evergreen/patron/patron_display.js index 9af6df9780..760918f614 100755 --- a/Evergreen/staff_client/chrome/content/evergreen/patron/patron_display.js +++ b/Evergreen/staff_client/chrome/content/evergreen/patron/patron_display.js @@ -396,7 +396,15 @@ function patron_display_patron_holds_init(p) { function (treeitem) { sdump('D_PATRON_DISPLAY','Firing flesh_patron_holds_function\n'); var record_id = treeitem.getAttribute('record_id'); - p.patron_holds.map_patron_holds_to_cols( p._patron.hold_requests()[ record_id ], treeitem ); + var hold = p._patron.hold_requests()[ record_id ]; + patron_get_hold_status( + hold, + function (request) { + var result = request.getResultObject(); + hold.status( hold_status_as_text( result ) ); + p.patron_holds.map_patron_holds_to_cols( hold, treeitem ); + } + ); } ); p.patron_holds.register_item_context_builder( @@ -407,11 +415,34 @@ function patron_display_patron_holds_init(p) { var patron_holds = get_list_from_tree_selection( p.patron_holds.paged_tree.tree ); sdump('D_PATRON_DISPLAY','patron_holds.length = ' + patron_holds.length + '\n'); + /*** CANCEL HOLD ***/ + var menuitem_ph_ce = p.patron_holds.paged_tree.w.document.createElement('menuitem'); + p.patron_holds.paged_tree.popup.appendChild( menuitem_ph_ce ); + menuitem_ph_ce.setAttribute('label',getString('circ.context_cancel_hold')); + menuitem_ph_ce.addEventListener( + 'command', + function (ev) { + sdump('D_PATRON_DISPLAY','Firing cancel hold context for patron_holds\n'); + for (var i = 0; i < patron_holds.length; i++) { + sdump('D_PATRON_DISPLAY','Firing cancel edit context\n'); + var record_id = patron_holds[i].getAttribute('record_id'); + var hold = p._patron.hold_requests()[ record_id ]; + cancel_hold( hold ); + } + p.refresh(); + }, + false + ); + + /* separator */ + var menuitem_ph_s = p.patron_holds.paged_tree.w.document.createElement('menuseparator'); + p.patron_holds.paged_tree.popup.appendChild( menuitem_ph_s ); + /*** COPY EDITOR ***/ - var menuitem_pi_ce = p.patron_holds.paged_tree.w.document.createElement('menuitem'); - p.patron_holds.paged_tree.popup.appendChild( menuitem_pi_ce ); - menuitem_pi_ce.setAttribute('label',getString('circ.context_edit')); - menuitem_pi_ce.addEventListener( + var menuitem_ph_ce = p.patron_holds.paged_tree.w.document.createElement('menuitem'); + p.patron_holds.paged_tree.popup.appendChild( menuitem_ph_ce ); + menuitem_ph_ce.setAttribute('label',getString('circ.context_edit')); + menuitem_ph_ce.addEventListener( 'command', function (ev) { sdump('D_PATRON_DISPLAY','Firing copy editor context for patron_holds\n'); @@ -423,10 +454,10 @@ function patron_display_patron_holds_init(p) { ); /*** OPAC ***/ - var menuitem_pi_o = p.patron_holds.paged_tree.w.document.createElement('menuitem'); - p.patron_holds.paged_tree.popup.appendChild( menuitem_pi_o ); - menuitem_pi_o.setAttribute('label',getString('circ.context_opac')); - menuitem_pi_o.addEventListener( + var menuitem_ph_o = p.patron_holds.paged_tree.w.document.createElement('menuitem'); + p.patron_holds.paged_tree.popup.appendChild( menuitem_ph_o ); + menuitem_ph_o.setAttribute('label',getString('circ.context_opac')); + menuitem_ph_o.addEventListener( 'command', function (ev) { sdump('D_PATRON_DISPLAY','Firing opac context for patron_holds\n'); diff --git a/Evergreen/staff_client/chrome/content/evergreen/patron/patron_holds.js b/Evergreen/staff_client/chrome/content/evergreen/patron/patron_holds.js index 880087c652..c6b84ee386 100644 --- a/Evergreen/staff_client/chrome/content/evergreen/patron/patron_holds.js +++ b/Evergreen/staff_client/chrome/content/evergreen/patron/patron_holds.js @@ -34,31 +34,44 @@ function patron_holds_init(p) { return p; } -function patron_holds_tree_map_patron_holds_to_cols(p, patron_holds, treeitem) { +function patron_holds_tree_map_patron_holds_to_cols(p, patron_hold, treeitem) { sdump('D_PATRON_HOLDS',arg_dump(arguments,{1:true})); sdump('D_TRACE_ENTER',arg_dump(arguments)); - var cols = new Array(); - for (var i = 0; i < p.patron_holds_cols.length; i++) { - var hash = p.patron_holds_cols[i]; - sdump('D_PATRON_HOLDS','Considering ' + js2JSON(hash) + '\n'); - var obj_string = 'patron_holds'; - switch( hash.fm_class ) { - case 'acp' : obj_string = 'patron_holds.copy'; break; - case 'circ' : obj_string = 'patron_holds.circ'; break; - case 'mvr' : obj_string = 'patron_holds.record'; break; - } - var cmd = parse_render_string( obj_string, hash.fm_field_render ); - sdump('D_PATRON_HOLDS','cmd = ' + cmd + '\n'); - var col = ''; - try { - col = eval( cmd ); - sdump('D_PATRON_HOLDS','eval = ' + col + '\n'); - } catch(E) { - sdump('D_ERROR',js2JSON(E) + '\n'); - } - cols.push( col ); + + var app; var method; + switch(patron_hold.hold_type()) { + case 'M': app = 'open-ils.search'; method = 'open-ils.search.biblio.metarecord.mods_slim.retrieve'; break; + default : app = 'open-ils.search'; method = 'open-ils.search.biblio.record.mods_slim.retrieve'; break; } - sdump('D_PATRON_HOLDS','cols = ' + js2JSON(cols) + '\n'); - p.paged_tree.map_cols_to_treeitem( cols, treeitem ); + + user_request( + app, + method, + [ patron_hold.target() ], + function (request) { + var mvr = request.getResultObject(); + var cols = new Array(); + for (var i = 0; i < p.patron_holds_cols.length; i++) { + var hash = p.patron_holds_cols[i]; + sdump('D_PATRON_HOLDS','Considering ' + js2JSON(hash) + '\n'); + var obj_string = 'patron_hold'; + switch( hash.fm_class ) { + case 'mvr' : obj_string = 'mvr'; break; + } + var cmd = parse_render_string( obj_string, hash.fm_field_render ); + sdump('D_PATRON_HOLDS','cmd = ' + cmd + '\n'); + var col = ''; + try { + col = eval( cmd ); + sdump('D_PATRON_HOLDS','eval = ' + col + '\n'); + } catch(E) { + sdump('D_ERROR',js2JSON(E) + '\n'); + } + cols.push( col ); + } + sdump('D_PATRON_HOLDS','cols = ' + js2JSON(cols) + '\n'); + p.paged_tree.map_cols_to_treeitem( cols, treeitem ); + } + ); sdump('D_TRACE_EXIT',arg_dump(arguments)); } diff --git a/Evergreen/staff_client/chrome/content/evergreen/patron/patron_search.js b/Evergreen/staff_client/chrome/content/evergreen/patron/patron_search.js index 1146ee5463..362ebd0af7 100644 --- a/Evergreen/staff_client/chrome/content/evergreen/patron/patron_search.js +++ b/Evergreen/staff_client/chrome/content/evergreen/patron/patron_search.js @@ -79,11 +79,36 @@ function patron_search_patron_search_results_init(p) { return function (request) { /* Set new patron */ if (count == patron_select_async_count) { + p._patron = request.getResultObject(); - render_fm( p.w.document, { 'au' : p._patron } ); - p.retrieve_button.disabled = false; + + patron_get_checkouts( p._patron, function(req) { + + if (count == patron_select_async_count) { + + p._patron.checkouts( req.getResultObject() ); + + patron_get_holds( p._patron, function(req) { + + if (count == patron_select_async_count) { + + p._patron.hold_requests( req.getResultObject() ); + + patron_get_bills( p._patron, function(req) { + + if (count == patron_select_async_count) { + + p._patron.bills = req.getResultObject(); + render_fm(p.w.document,{'au':p._patron}); + p.retrieve_button.disabled = false; + } + }); + } + }); + } + }); }; - } + }; } p.search_results.register_patron_select_callback( diff --git a/Evergreen/staff_client/chrome/content/evergreen/patron/patron_utils.js b/Evergreen/staff_client/chrome/content/evergreen/patron/patron_utils.js index ffa4cb63d3..cb9bcd79b8 100755 --- a/Evergreen/staff_client/chrome/content/evergreen/patron/patron_utils.js +++ b/Evergreen/staff_client/chrome/content/evergreen/patron/patron_utils.js @@ -1,6 +1,7 @@ sdump('D_TRACE','Loading patron_utils.js\n'); function fake_patron() { + sdump('D_PATRON_UTILS',arg_dump(arguments)); var p = new au(); p.family_name( 'Retrieving' ); p.checkouts( [] ); @@ -10,6 +11,20 @@ function fake_patron() { return p; } +function hold_status_as_text( status ) { + sdump('D_PATRON_UTILS',arg_dump(arguments)); + if (typeof(status) == 'object') status = status.status(); + var text; + switch(status) { + case "1" : text = getString('holds_status_waiting_for_copy'); break; + case "2" : text = getString('holds_status_waiting_for_capture'); break; + case "3" : text = getString('holds_status_in_transit'); break; + case "4" : text = getString('holds_status_available'); break; + default : text = "Eh?"; break; + } + return text; +} + function patron_get_full_name( au ) { sdump('D_PATRON_UTILS',arg_dump(arguments)); var name = ''; @@ -37,16 +52,21 @@ function patron_get_barcode( au ) { return '???'; } -function patron_get_bills( au ) { +function patron_get_bills( au, f ) { sdump('D_PATRON_UTILS',arg_dump(arguments)); try { - au.bills = ( user_request( // FIXME: make bills a virtual field of au + var bills = user_request( 'open-ils.actor', 'open-ils.actor.user.transactions', - [ mw.G.auth_ses[0], au.id() ] - )[0] ); - sdump('D_PATRON_UTILS','bills = ' + js2JSON(au.bills) + '\n'); - return au.bills + [ mw.G.auth_ses[0], au.id() ], + f + )[0]; + + if (!f) { + sdump('D_PATRON_UTILS','bills = ' + js2JSON(bills) + '\n'); + au.bills = bills; // FIXME: make bills a virtual field of au + return bills; + } } catch(E) { sdump('D_ERROR',js2JSON(E) + '\n'); return null; @@ -56,8 +76,7 @@ function patron_get_bills( au ) { function patron_get_bills_total( au ) { sdump('D_PATRON_UTILS',arg_dump(arguments)); - if (! au.bills ) patron_get_bills( au ); - if (au.bills == null) + if (au.bills == null || au.bills == undefined) return '???'; else { var total = 0; @@ -76,16 +95,21 @@ function patron_get_credit_total( au ) { return '$' + au.credit_forward_balance(); } -function patron_get_checkouts( au ) { +function patron_get_checkouts( au, f ) { sdump('D_PATRON_UTILS',arg_dump(arguments)); try { - au.checkouts( user_request( + var checkouts = user_request( 'open-ils.circ', 'open-ils.circ.actor.user.checked_out', - [ mw.G.auth_ses[0], au.id() ] - )[0] ); - sdump('D_PATRON_UTILS','checkouts = ' + js2JSON(au.checkouts()) + '\n'); - return au.checkouts(); + [ mw.G.auth_ses[0], au.id() ], + f + )[0]; + + if (!f) { + sdump('D_PATRON_UTILS','checkouts = ' + js2JSON(au.checkouts()) + '\n'); + au.checkouts( checkouts ); + return checkouts; + } } catch(E) { sdump('D_ERROR',js2JSON(E) + '\n'); return null; @@ -94,13 +118,13 @@ function patron_get_checkouts( au ) { function patron_get_checkouts_total( au ) { sdump('D_PATRON_UTILS',arg_dump(arguments)); - if (! au.checkouts()) patron_get_checkouts( au ); if (au.checkouts() == null) return '???'; else return au.checkouts().length; } +// Need an API call or virtual field to determine this function patron_get_checkouts_overdue_total( au ) { sdump('D_PATRON_UTILS',arg_dump(arguments)); if (! au.checkouts()) patron_get_checkouts( au ); @@ -118,16 +142,21 @@ function patron_get_checkouts_overdue_total( au ) { return total; } -function patron_get_holds( au ) { +function patron_get_holds( au, f ) { sdump('D_PATRON_UTILS',arg_dump(arguments)); try { - au.hold_requests( user_request( + var hold_requests = user_request( 'open-ils.circ', 'open-ils.circ.holds.retrieve', - [ mw.G.auth_ses[0], au.id() ] - )[0] ); - sdump('D_PATRON_UTILS','holds = ' + js2JSON(au.hold_requests()) + '\n'); - return au.hold_requests(); + [ mw.G.auth_ses[0], au.id() ], + f + )[0]; + + if (!f) { + sdump('D_PATRON_UTILS','holds = ' + js2JSON(au.hold_requests()) + '\n'); + au.hold_requests( hold_requests ); + return hold_requests; + } } catch(E) { sdump('D_ERROR',js2JSON(E) + '\n'); return null; @@ -136,16 +165,35 @@ function patron_get_holds( au ) { function patron_get_holds_total( au ) { sdump('D_PATRON_UTILS',arg_dump(arguments)); - if (! au.hold_requests()) patron_get_holds( au ); if (au.hold_requests() == null) return '???'; else return au.hold_requests().length; } +function patron_get_hold_status( hold, f ) { + sdump('D_PATRON_UTILS',arg_dump(arguments)); + try { + var status = user_request( + 'open-ils.circ', + 'open-ils.circ.hold.status.retrieve', + [ mw.G.auth_ses[0], hold.id() ], + f + )[0]; + + if (!f) { + sdump('D_PATRON_UTILS','status = ' + status + '\n'); + hold.status( status ); + return status; + } + } catch(E) { + sdump('D_ERROR',js2JSON(E) + '\n'); + return null; + } +} + function patron_get_holds_available_total( au ) { sdump('D_PATRON_UTILS',arg_dump(arguments)); - if (! au.hold_requests()) patron_get_holds( au ); var total = 0; if ( (au.hold_requests() != null) && (typeof(au.hold_requests()) == 'object') ) { for (var i = 0; i < au.hold_requests().length; i++) { @@ -180,10 +228,10 @@ function patron_get_ident1_type_as_text( au ) { au.ident_type() && mw.G.cit_hash && mw.G.cit_hash[ au.ident_type() ] && - mw.G.cit_hash[ au.ident_type() ].value && - mw.G.cit_hash[ au.ident_type() ].value() + mw.G.cit_hash[ au.ident_type() ].name && + mw.G.cit_hash[ au.ident_type() ].name() ) { - return mw.G.cit_hash[ au.ident_type() ].value(); + return mw.G.cit_hash[ au.ident_type() ].name(); } else { return null; } @@ -196,10 +244,10 @@ function patron_get_ident2_type_as_text( au ) { au.ident_type2() && mw.G.cit_hash && mw.G.cit_hash[ au.ident_type2() ] && - mw.G.cit_hash[ au.ident_type2() ].value && - mw.G.cit_hash[ au.ident_type2() ].value() + mw.G.cit_hash[ au.ident_type2() ].name && + mw.G.cit_hash[ au.ident_type2() ].name() ) { - return mw.G.cit_hash[ au.ident_type2() ].value(); + return mw.G.cit_hash[ au.ident_type2() ].name(); } else { return null; } @@ -250,52 +298,25 @@ function patron_get_standing_css_style( value ) { function retrieve_patron_by_barcode( barcode, f ) { sdump('D_PATRON_UTILS',arg_dump(arguments)); if (!barcode) return null; - return retrieve_patron_by_method( barcode, 'open-ils.actor', 'open-ils.actor.user.fleshed.retrieve_by_barcode', f ); + return user_request( 'open-ils.actor', 'open-ils.actor.user.fleshed.retrieve_by_barcode', [ mw.G.auth_ses[0], barcode ], f )[0]; } function retrieve_patron_by_id( id, f ) { sdump('D_PATRON_UTILS',arg_dump(arguments)); if (!id) return null; - return retrieve_patron_by_method( id, 'open-ils.actor', 'open-ils.actor.user.fleshed.retrieve', f ); -} - -function retrieve_patron_by_method( id, app, method, f ) { - sdump('D_PATRON_UTILS',arg_dump(arguments)); - if (!id) return null; - if (f) { - try { - user_async_request( - app, - method, - [ mw.G.auth_ses[0], id ], - f - ); - } catch(E) { - sdump('D_ERROR',E); - } - } else { - try { - var au = user_request( - app, - method, - [ mw.G.auth_ses[0], id ] - )[0]; - return au; - } catch(E) { - sdump('D_ERROR',E); - return null; - } - } + return user_request( 'open-ils.actor', 'open-ils.actor.user.fleshed.retrieve', [ mw.G.auth_ses[0], id ], f )[0]; } -function save_patron( au ) { +function save_patron( au, f ) { sdump('D_PATRON_UTILS',arg_dump(arguments)); try { var result = user_request( 'open-ils.actor', 'open-ils.actor.patron.update', - [ mw.G.auth_ses[0], au ] + [ mw.G.auth_ses[0], au ], + f )[0]; + if (!f) sdump('D_PATRON_UTILS','result = ' + js2JSON(result) + '\n'); return result; } catch(E) { handle_error(E); diff --git a/Evergreen/staff_client/chrome/content/evergreen/util/ses.js b/Evergreen/staff_client/chrome/content/evergreen/util/ses.js index 300cd8f4da..e03bededfc 100644 --- a/Evergreen/staff_client/chrome/content/evergreen/util/ses.js +++ b/Evergreen/staff_client/chrome/content/evergreen/util/ses.js @@ -5,17 +5,24 @@ sdump('D_TRACE','Loading ses.js\n'); // These wrap Bill's RemoteRequest.js -function user_request(app,name,params) { - sdump('D_SES','=-=-=-=-= user_request("'+app+'","'+name+'",'+js2JSON(params)+')\n'); - var request = new RemoteRequest( app, name ); - for(var index in params) { - request.addParam(params[index]); +function user_request(app,name,params,f) { + if (f) { + + user_async_request(app,name,params,f); + return []; + + } else { + sdump('D_SES','=-=-=-=-= user_request("'+app+'","'+name+'",'+js2JSON(params)+')\n'); + var request = new RemoteRequest( app, name ); + for(var index in params) { + request.addParam(params[index]); + } + request.send(true); + var result = []; + result.push( request.getResultObject() ); + sdump('D_SES_RESULT','=-=-= result = ' + js2JSON(result[0]) + '\n'); + return result; } - request.send(true); - var result = []; - result.push( request.getResultObject() ); - //sdump('D_SES','=-=-= result = ' + js2JSON(result[0]) + '\n'); - return result; } function user_async_request(app,name,params,func) { diff --git a/Evergreen/staff_client/chrome/locale/en-US/evergreen/OpenILS.properties b/Evergreen/staff_client/chrome/locale/en-US/evergreen/OpenILS.properties index 2fc3ed8afb..cf51ab21ce 100644 --- a/Evergreen/staff_client/chrome/locale/en-US/evergreen/OpenILS.properties +++ b/Evergreen/staff_client/chrome/locale/en-US/evergreen/OpenILS.properties @@ -23,6 +23,7 @@ filter_console_label=FCONSOLE fieldmapper_label=FIELDMAPPER retrieving.record=Retrieving... +circ.context_cancel_hold=Cancel Hold circ.context_checkin=Check In circ.context_renew=Renew circ.context_opac=Show Title in OPAC @@ -60,12 +61,18 @@ circ_label_due_date=Due Date mvr_label_title=Title mvr_label_author=Author +holds_status_waiting_for_copy=Waiting for available copy +holds_status_waiting_for_capture=Copy found, waiting for capture +holds_status_in_transit=In Transit +holds_status_available=Available + +ahr_status_label=Status ahr_capture_time_label=Capture Time ahr_current_copy_label=Current Copy ahr_email_notify_label=Email Notify ahr_expire_time_label=Expire Time ahr_fulfillment_time_label=Fulfillment Time -ahr_hold_type_label=Hold Type +ahr_hold_type_label=Type ahr_holdable_formats_label=Holdable Formats ahr_id_label=Id ahr_ischanged_label=Ischanged -- 2.43.2