faster holds, but not fast enough
authorpines <pines@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Sun, 3 Sep 2006 17:59:22 +0000 (17:59 +0000)
committerpines <pines@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Sun, 3 Sep 2006 17:59:22 +0000 (17:59 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@5893 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/xul/staff_client/server/patron/holds.js

index 7e8232b..08a2f94 100644 (file)
@@ -46,56 +46,104 @@ patron.holds.prototype = {
                                'retrieve_row' : function(params) {
                                        var row = params.row;
                                        try {
-                                               var status_robj = obj.network.simple_request('FM_AHR_STATUS',[ ses(), row.my.ahr.id() ]);
-                                               row.my.status = status_robj;
-                                               if (row.my.ahr.current_copy()) {
-                                                       row.my.acp = obj.network.simple_request( 'FM_ACP_RETRIEVE', [ row.my.ahr.current_copy() ]);
-                                               }
-                                               switch(row.my.ahr.hold_type()) {
-                                                       case 'M' :
-                                                               row.my.mvr = obj.network.request(
-                                                                       api.MODS_SLIM_METARECORD_RETRIEVE.app,
-                                                                       api.MODS_SLIM_METARECORD_RETRIEVE.method,
-                                                                       [ row.my.ahr.target() ]
-                                                               );
-                                                       break;
-                                                       case 'T' :
-                                                               row.my.mvr = obj.network.request(
-                                                                       api.MODS_SLIM_RECORD_RETRIEVE.app,
-                                                                       api.MODS_SLIM_RECORD_RETRIEVE.method,
-                                                                       [ row.my.ahr.target() ]
-                                                               );
-                                                       break;
-                                                       case 'V' :
-                                                               row.my.acn = obj.network.simple_request( 'FM_ACN_RETRIEVE', [ row.my.ahr.target() ]);
-                                                               row.my.mvr = obj.network.request(
-                                                                       api.MODS_SLIM_RECORD_RETRIEVE.app,
-                                                                       api.MODS_SLIM_RECORD_RETRIEVE.method,
-                                                                       [ row.my.acn.record() ]
-                                                               );
-                                                       break;
-                                                       case 'C' :
-                                                               if (typeof row.my.acp == 'undefined') {
-                                                                       row.my.acp = obj.network.simple_request( 'FM_ACP_RETRIEVE', [ row.my.ahr.target() ]);
-                                                               }
-                                                               if (typeof row.my.acp.call_number() == 'object') {
-                                                                       row.my.acn = my.acp.call_number();
-                                                               } else {
-                                                                       row.my.acn = obj.network.simple_request( 'FM_ACN_RETRIEVE', [ row.my.acp.call_number() ]);
+                                               obj.network.simple_request('FM_AHR_STATUS',[ ses(), row.my.ahr.id() ],
+                                                       function(status_req) {
+                                                               var status_robj = status_req.getResultObject();
+                                                               row.my.status = status_robj;
+                                                               switch(row.my.ahr.hold_type()) {
+                                                                       case 'M' :
+                                                                               obj.network.request(
+                                                                                       api.MODS_SLIM_METARECORD_RETRIEVE.app,
+                                                                                       api.MODS_SLIM_METARECORD_RETRIEVE.method,
+                                                                                       [ row.my.ahr.target() ],
+                                                                                       function(mvr_req) {
+                                                                                               row.my.mvr = mvr_req.getResultObject();
+                                                                                               if ( row.my.ahr.current_copy() && ! row.my.acp) {
+                                                                                                       obj.network.simple_request( 'FM_ACP_RETRIEVE', [ row.my.ahr.current_copy() ],
+                                                                                                               function(acp_req) {
+                                                                                                                       row.my.acp = acp_req.getResultObject();
+                                                                                                                       if (typeof params.on_retrieve == 'function') { params.on_retrieve(row); }
+                                                                                                               }
+                                                                                                       );
+                                                                                               } else {
+                                                                                                       if (typeof params.on_retrieve == 'function') { params.on_retrieve(row); }
+                                                                                               }
+                                                                                       }
+                                                                               );
+                                                                       break;
+                                                                       case 'T' :
+                                                                               obj.network.request(
+                                                                                       api.MODS_SLIM_RECORD_RETRIEVE.app,
+                                                                                       api.MODS_SLIM_RECORD_RETRIEVE.method,
+                                                                                       [ row.my.ahr.target() ],
+                                                                                       function(mvr_req) {
+                                                                                               row.my.mvr = mvr_req.getResultObject();
+                                                                                               if ( row.my.ahr.current_copy() && ! row.my.acp) {
+                                                                                                       obj.network.simple_request( 'FM_ACP_RETRIEVE', [ row.my.ahr.current_copy() ],
+                                                                                                               function(acp_req) {
+                                                                                                                       row.my.acp = acp_req.getResultObject();
+                                                                                                                       if (typeof params.on_retrieve == 'function') { params.on_retrieve(row); }
+                                                                                                               }
+                                                                                                       );
+                                                                                               } else {
+                                                                                                       if (typeof params.on_retrieve == 'function') { params.on_retrieve(row); }
+                                                                                               }
+
+                                                                                       }
+                                                                               );
+                                                                       break;
+                                                                       case 'V' :
+                                                                               row.my.acn = obj.network.simple_request( 'FM_ACN_RETRIEVE', [ row.my.ahr.target() ],
+                                                                                       function(acn_req) {
+                                                                                               row.my.acn = acn_req.getResultObject();
+                                                                                               obj.network.request(
+                                                                                                       api.MODS_SLIM_RECORD_RETRIEVE.app,
+                                                                                                       api.MODS_SLIM_RECORD_RETRIEVE.method,
+                                                                                                       [ row.my.acn.record() ],
+                                                                                                       function(mvr_req) {
+                                                                                                               try { row.my.mvr = mvr_req.getResultObject(); } catch(E) {}
+                                                                                                               if ( row.my.ahr.current_copy() && ! row.my.acp) {
+                                                                                                                       obj.network.simple_request( 'FM_ACP_RETRIEVE', [ row.my.ahr.current_copy() ],
+                                                                                                                               function(acp_req) {
+                                                                                                                                       row.my.acp = acp_req.getResultObject();
+                                                                                                                                       if (typeof params.on_retrieve == 'function') { params.on_retrieve(row); }
+                                                                                                                               }
+                                                                                                                       );
+                                                                                                               } else {
+                                                                                                                       if (typeof params.on_retrieve == 'function') { params.on_retrieve(row); }
+                                                                                                               }
+                                                                                                       }
+                                                                                               );
+                                                                                       }
+                                                                               );
+                                                                       break;
+                                                                       case 'C' :
+                                                                               obj.network.simple_request( 'FM_ACP_RETRIEVE', [ row.my.ahr.target() ],
+                                                                                       function(acp_req) {
+                                                                                               row.my.acp = acp_req.getResultObject();
+                                                                                               obj.network.simple_request( 'FM_ACN_RETRIEVE', [ typeof row.my.acp.call_number() == 'object' ? row.my.acp.call_number().id() : row.my.acp.call_number() ],
+                                                                                                       function(acn_req) {
+                                                                                                               row.my.acn = acn_req.getResultObject();
+                                                                                                               obj.network.request(
+                                                                                                                       api.MODS_SLIM_RECORD_RETRIEVE.app,
+                                                                                                                       api.MODS_SLIM_RECORD_RETRIEVE.method,
+                                                                                                                       [ row.my.acn.record() ],
+                                                                                                                       function(mvr_req) {
+                                                                                                                               try { row.my.mvr = mvr_req.getResultObject(); } catch(E) {}
+                                                                                                                               if (typeof params.on_retrieve == 'function') { params.on_retrieve(row); }
+                                                                                                                       }
+                                                                                                               );
+                                                                                                       }
+                                                                                               );
+                                                                                       }
+                                                                               );
+                                                                       break;
                                                                }
-                                                               row.my.mvr = obj.network.request(
-                                                                       api.MODS_SLIM_RECORD_RETRIEVE.app,
-                                                                       api.MODS_SLIM_RECORD_RETRIEVE.method,
-                                                                       [ row.my.acn.record() ]
-                                                               );
-                                                       break;
-                                               }
+                                                       }
+                                               );
                                        } catch(E) {
                                                obj.error.sdump('D_ERROR','retrieve_row: ' + E );
                                        }
-                                       if (typeof params.on_retrieve == 'function') {
-                                               params.on_retrieve(row);
-                                       }
                                        return row;
                                },
                                'on_select' : function(ev) {