From: Jason Etheridge Date: Thu, 26 May 2011 07:55:26 +0000 (-0400) Subject: Don't rely on call number column being rendered before prefix/suffix/class columns... X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=623aeb0f51c9ae4bed3eaf9f34574132c8e73206;p=evergreen%2Ftadl.git Don't rely on call number column being rendered before prefix/suffix/class columns. Also, remove prefix/suffix/class from the check-in interface, since those column definitions can make extra network calls and we want that interface to be as fast as possible. Signed-off-by: Jason Etheridge --- diff --git a/Open-ILS/xul/staff_client/server/circ/checkin.js b/Open-ILS/xul/staff_client/server/circ/checkin.js index 75c1edbfc3..24276ac53f 100644 --- a/Open-ILS/xul/staff_client/server/circ/checkin.js +++ b/Open-ILS/xul/staff_client/server/circ/checkin.js @@ -32,7 +32,7 @@ circ.checkin.prototype = { 'checkin_time' : { 'hidden' : false } }, { - 'except_these' : [ 'uses', 'checkin_time_full', 'call_number' ] + 'except_these' : [ 'uses', 'checkin_time_full', 'call_number', 'prefix', 'suffix', 'label_class' ] } ).concat( patron.util.columns( { 'family_name' : { 'hidden' : 'false' } } ) diff --git a/Open-ILS/xul/staff_client/server/circ/util.js b/Open-ILS/xul/staff_client/server/circ/util.js index f3c1e04da4..062665c1fc 100644 --- a/Open-ILS/xul/staff_client/server/circ/util.js +++ b/Open-ILS/xul/staff_client/server/circ/util.js @@ -637,8 +637,47 @@ circ.util.columns = function(modify,params) { 'flex' : 1, 'primary' : false, 'hidden' : true, - 'editable' : false, 'render' : function(my) { - if (typeof my.acn == 'undefined') return ''; + 'editable' : false, 'render' : function(my,scratch_data) { + var acn_id; + if (my.acn) { + if (typeof my.acn == 'object') { + acn_id = my.acn.id(); + } else { + acn_id = my.acn; + } + } else if (my.acp) { + if (typeof my.acp.call_number() == 'object') { + acn_id = my.acp.call_number().id(); + } else { + acn_id = my.acp.call_number(); + } + } + if (!acn_id && acn_id != 0) { + return ''; + } else if (acn_id == -1) { + return ''; + } else if (acn_id == -2) { + return document.getElementById('circStrings').getString('staff.circ.utils.retrieving'); + } else { + if (!my.acn) { + if (typeof scratch_data['acn_map'] == 'undefined') { + scratch_data['acn_map'] = {}; + } + if (typeof scratch_data['acn_map'][ acn_id ] == 'undefined') { + var x = network.simple_request("FM_ACN_RETRIEVE.authoritative",[ acn_id ]); + if (x.ilsevent) { + return document.getElementById('circStrings').getString('staff.circ.utils.not_cataloged'); + } else { + my.acn = x; + scratch_data['acn_map'][ acn_id ] = my.acn; + } + } else { + my.acn = scratch_data['acn_map'][ acn_id ]; + } + } + } + + if (typeof my.acn != 'object') return ''; return (typeof my.acn.prefix() == 'object') ? my.acn.prefix().label() : data.lookup("acnp", my.acn.prefix() ).label(); @@ -652,8 +691,47 @@ circ.util.columns = function(modify,params) { 'flex' : 1, 'primary' : false, 'hidden' : true, - 'editable' : false, 'render' : function(my) { - if (typeof my.acn == 'undefined') return ''; + 'editable' : false, 'render' : function(my,scratch_data) { + var acn_id; + if (my.acn) { + if (typeof my.acn == 'object') { + acn_id = my.acn.id(); + } else { + acn_id = my.acn; + } + } else if (my.acp) { + if (typeof my.acp.call_number() == 'object') { + acn_id = my.acp.call_number().id(); + } else { + acn_id = my.acp.call_number(); + } + } + if (!acn_id && acn_id != 0) { + return ''; + } else if (acn_id == -1) { + return ''; + } else if (acn_id == -2) { + return document.getElementById('circStrings').getString('staff.circ.utils.retrieving'); + } else { + if (!my.acn) { + if (typeof scratch_data['acn_map'] == 'undefined') { + scratch_data['acn_map'] = {}; + } + if (typeof scratch_data['acn_map'][ acn_id ] == 'undefined') { + var x = network.simple_request("FM_ACN_RETRIEVE.authoritative",[ acn_id ]); + if (x.ilsevent) { + return document.getElementById('circStrings').getString('staff.circ.utils.not_cataloged'); + } else { + my.acn = x; + scratch_data['acn_map'][ acn_id ] = my.acn; + } + } else { + my.acn = scratch_data['acn_map'][ acn_id ]; + } + } + } + + if (typeof my.acn != 'object') return ''; return (typeof my.acn.suffix() == 'object') ? my.acn.suffix().label() : data.lookup("acns", my.acn.suffix() ).label(); @@ -667,8 +745,47 @@ circ.util.columns = function(modify,params) { 'flex' : 1, 'primary' : false, 'hidden' : true, - 'editable' : false, 'render' : function(my) { - if (typeof my.acn == 'undefined') return ''; + 'editable' : false, 'render' : function(my,scratch_data) { + var acn_id; + if (my.acn) { + if (typeof my.acn == 'object') { + acn_id = my.acn.id(); + } else { + acn_id = my.acn; + } + } else if (my.acp) { + if (typeof my.acp.call_number() == 'object') { + acn_id = my.acp.call_number().id(); + } else { + acn_id = my.acp.call_number(); + } + } + if (!acn_id && acn_id != 0) { + return ''; + } else if (acn_id == -1) { + return ''; + } else if (acn_id == -2) { + return document.getElementById('circStrings').getString('staff.circ.utils.retrieving'); + } else { + if (!my.acn) { + if (typeof scratch_data['acn_map'] == 'undefined') { + scratch_data['acn_map'] = {}; + } + if (typeof scratch_data['acn_map'][ acn_id ] == 'undefined') { + var x = network.simple_request("FM_ACN_RETRIEVE.authoritative",[ acn_id ]); + if (x.ilsevent) { + return document.getElementById('circStrings').getString('staff.circ.utils.not_cataloged'); + } else { + my.acn = x; + scratch_data['acn_map'][ acn_id ] = my.acn; + } + } else { + my.acn = scratch_data['acn_map'][ acn_id ]; + } + } + } + + if (typeof my.acn != 'object') return ''; return (typeof my.acn.label_class() == 'object') ? my.acn.label_class().name() : my.acn.label_class(); }, 'persist' : 'hidden width ordinal'