[open-ils-commits] [GIT] Evergreen ILS branch master updated. df25d34fb5cad303a21b0f9df64b3c8e299b8222

Evergreen Git git at git.evergreen-ils.org
Thu Aug 4 14:57:12 EDT 2011


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Evergreen ILS".

The branch, master has been updated
       via  df25d34fb5cad303a21b0f9df64b3c8e299b8222 (commit)
      from  90c7088008bc0e669d4d08e2b2b030c8ea5caa6e (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit df25d34fb5cad303a21b0f9df64b3c8e299b8222
Author: Jason Etheridge <jason at esilibrary.com>
Date:   Wed Aug 3 00:44:41 2011 -0400

    Fix staff client Clear Expired Hold Shelf action
    
    Accomodate an API change.  FIXME: See if can remove some of the redundant and/or
    un-needed data being sent over the wire.
    
    Signed-off-by: Jason Etheridge <jason at esilibrary.com>
    Signed-off-by: Mike Rylander <mrylander at gmail.com>

diff --git a/Open-ILS/xul/staff_client/server/patron/holds.js b/Open-ILS/xul/staff_client/server/patron/holds.js
index cbe2ba1..a8adf2b 100644
--- a/Open-ILS/xul/staff_client/server/patron/holds.js
+++ b/Open-ILS/xul/staff_client/server/patron/holds.js
@@ -39,6 +39,8 @@ patron.holds.prototype = {
 
         var obj = this;
 
+        dojo.require("openils.Util");
+
         obj.patron_id = params['patron_id'];
         obj.patron_barcode = params['patron_barcode'];
         obj.docid = params['docid'];
@@ -1266,44 +1268,9 @@ patron.holds.prototype = {
                     'cmd_clear_expired_onshelf_holds' : [
                         ['command'],
                         function(ev) {
-                            try {
-                                // I could put this with the "retrieval" methods, but since it has side effects, seems cleaner to invoke it here
-                                var robj = obj.network.simple_request( 'CLEAR_HOLD_SHELF', [ ses(), obj.filter_lib || obj.data.list.au[0].ws_ou() ] );
-                                if (robj == null) { robj = []; }
-                                if (typeof robj.ilsevent != 'undefined') { throw(robj); }
-                                if (typeof robj.length == 'undefined') { robj = [ robj ]; }
-
-                                // Disable anything such as filters that can have us accidentally lose these non-repeatable results
-                                var x_lib_filter_checkbox = document.getElementById('lib_filter_checkbox');
-                                if (x_lib_filter_checkbox) { x_lib_filter_checkbox.checked = false; }
-                                var x_lib_type_menu = document.getElementById('lib_type_menu');
-                                if (x_lib_type_menu) { x_lib_type_menu.disabled = true; }
-                                var x_lib_menu_placeholder = document.getElementById('lib_menu_placeholder');
-                                if (x_lib_menu_placeholder) { x_lib_menu_placeholder.firstChild.disabled = true; }
-                                obj.controller.view.cmd_view_expired_onshelf_holds.setAttribute('disabled', 'true');
-                                obj.controller.view.cmd_clear_expired_onshelf_holds.setAttribute('disabled', 'true');
-
-                                // id's in xulG.holds will prevent the normal retrieval method from firing
-                                JSAN.use('util.functional');
-                                xulG.holds = util.functional.map_list(
-                                    robj.sort(function(a,b) {
-                                        if (a.action > b.action) { return 1; }
-                                        if (a.action < b.action) { return -1; }
-                                        return 0;
-                                    }),
-                                    function (element, idx) {
-                                        obj.post_clear_shelf_hold_action_map[ element.hold_id ] = element.action; // necessary side-effect
-                                        return element.hold_id;
-                                    }
-                                );
-                                obj.clear_and_retrieve();
-                            } catch(E) {
-                                if (E.ilsevent == 5000 /* PERM_FAILURE */ ) { return; /* handled by network.js */ }
-                                obj.error.standard_unexpected_error_alert('Error in holds.js, cmd_clear_expired_onshelf_holds', E);
-                            }
+                            obj.cmd_clear_expired_onshelf_holds();
                         }
                     ],
-
                     'cmd_search_opac' : [
                         ['command'],
                         function(ev) {
@@ -1655,6 +1622,86 @@ patron.holds.prototype = {
         } catch(E) {
             this.error.standard_unexpected_error_alert('rendering lib menu',E);
         }
+    },
+
+    'cmd_clear_expired_onshelf_holds' : function() {
+        var obj = this;
+        try {
+            // Disable anything such as filters that can have us accidentally
+            // lose these non-repeatable results.  Well, now that they're cached
+            // it's less of an issue.
+            if ($('lib_filter_checkbox')) {
+                $('lib_filter_checkbox').checked = false;
+            }
+            if ($('lib_type_menu')) {
+                $('lib_type_menu').disabled = true;
+            }
+            if ($('lib_menu_placeholder')) {
+                $('lib_menu_placeholder').firstChild.disabled = true;
+            }
+            obj.controller.view.cmd_view_expired_onshelf_holds.setAttribute(
+                'disabled', 'true');
+            obj.controller.view.cmd_clear_expired_onshelf_holds.setAttribute(
+                'disabled', 'true');
+
+            // I could put this with the "retrieval" methods, but since it has
+            // side effects, seems cleaner to invoke it here
+            var robj = obj.network.simple_request(
+                'CLEAR_HOLD_SHELF',
+                [
+                    ses(),
+                    obj.filter_lib || obj.data.list.au[0].ws_ou()
+                ]
+            );
+            if (typeof robj.ilsevent != 'undefined') { throw(robj); }
+            if (typeof robj.cache_key == 'undefined') { throw(robj); }
+
+            var cache_key = robj.cache_key;
+
+            // id's in xulG.holds will prevent the normal retrieval method from
+            // firing.  Let's put our affected hold.id's in here:
+            xulG.holds = [];
+
+            // Start the progress meter
+            $('progress').value = 0;
+            $('progress').hidden = false;
+
+            // Fetch the affected holds
+            fieldmapper.standardRequest(
+                [ 'open-ils.circ', 'open-ils.circ.hold.clear_shelf.get_cache' ],
+                {
+                    'async' : true,
+                    'params' : [ ses(), cache_key ],
+                    'onresponse' : function(r) {
+                        dojo.forEach(
+                            openils.Util.readResponse(r),
+                            function(resp) {
+                                if (resp.maximum) {
+                                    $('progress').value = Number(resp.progress)
+                                        * 100/resp.maximum;
+                                    return;
+                                }
+                                obj.post_clear_shelf_hold_action_map[
+                                    resp.hold_details.id
+                                ] = resp.action;
+                                xulG.holds.push( resp.hold_details.id );
+                            }
+                        )
+                    },
+                    'oncomplete' : function() {
+                        obj.clear_and_retrieve();
+                        $('progress').hidden = true;
+                    }
+                }
+            );
+
+        } catch(E) {
+            if (E.ilsevent == 5000 /* PERM_FAILURE */ ) {
+                return; /* handled by network.js */
+            }
+            obj.error.standard_unexpected_error_alert(
+                'Error in holds.js, cmd_clear_expired_onshelf_holds', E);
+        }
     }
 }
 

-----------------------------------------------------------------------

Summary of changes:
 Open-ILS/xul/staff_client/server/patron/holds.js |  119 +++++++++++++++-------
 1 files changed, 83 insertions(+), 36 deletions(-)


hooks/post-receive
-- 
Evergreen ILS


More information about the open-ils-commits mailing list