[open-ils-commits] [GIT] Evergreen ILS branch rel_2_0 updated. e48918397425be84bed05d5143efe3459ea54272

Evergreen Git git at git.evergreen-ils.org
Wed Sep 14 10:58:56 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, rel_2_0 has been updated
       via  e48918397425be84bed05d5143efe3459ea54272 (commit)
       via  572607f08126548c30075439e2983b9029fd205b (commit)
      from  46fb4caadc58467d17f60b717358ba5dcb7c84b6 (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 e48918397425be84bed05d5143efe3459ea54272
Merge: 572607f 46fb4ca
Author: Jason Etheridge <jason at esilibrary.com>
Date:   Wed Sep 14 10:58:31 2011 -0400

    Merge branch 'rel_2_0' of git.evergreen-ils.org:Evergreen into rel_2_0


commit 572607f08126548c30075439e2983b9029fd205b
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 71421d3..04c4120 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'];
@@ -1255,44 +1257,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) {
@@ -1641,6 +1608,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