changing peer type on existing linkages. need to rework oncomplete
authorJason Etheridge <jason@esilibrary.com>
Tue, 5 Apr 2011 20:28:40 +0000 (16:28 -0400)
committerJason Etheridge <jason@esilibrary.com>
Tue, 5 Apr 2011 20:28:40 +0000 (16:28 -0400)
Open-ILS/xul/staff_client/server/cat/manage_multi_home_items.js

index 0500f9d..64251d8 100644 (file)
@@ -1,5 +1,6 @@
 var data; var list; var error; var net; var pcrud; var sound;
 var rows = {};
+var bpbcm_barcode_map = {};
 
 var commonStrings;
 var catStrings;
@@ -41,6 +42,8 @@ function my_init() {
         list.set_list_actions();
         populate_list();
         $('submit').addEventListener('command', function() { handle_submit(true); }, false);
+        $('remove').addEventListener('command', function() { handle_remove(); }, false);
+        $('change').addEventListener('command', function() { handle_change(); }, false);
         $('scanbox').addEventListener('keypress', handle_keypress, false);
         default_focus();
 
@@ -79,6 +82,13 @@ function init_list() {
         list = new util.list( 'list' );
         list.init( 
             {
+                'retrieve_row' : function(params) {
+                    if (params.row.my.bpbcm) {
+                        params.row_node.setAttribute('retrieve_id',params.row.my.bpbcm.id());
+                    }
+                    params.on_retrieve(params.row);
+                    return params.row;
+                },
                 'columns' : [
                     {
                         'id' : 'result',
@@ -165,10 +175,14 @@ function handle_submit(create,my_bpbcm) {
         function handle_req(req) {
             try {
                 var robj = req.getResultObject();
+                row_params.row.my.result = 'Error';
                 if (typeof robj.ilsevent != 'undefined') {
                     row_params.row.my.result = robj.textcode;
                 } else {
                     rows[robj.copy.barcode()] = row_params;
+                    if (row_params.row.my.bpbcm) {
+                        bpbcm_barcode_map[ row_params.row.my.bpbcm.id() ] = robj.copy.barcode();
+                    }
 
                     row_params.row.my.acp = robj.copy;
                     row_params.row.my.mvr = robj.mvr;
@@ -190,6 +204,7 @@ function handle_submit(create,my_bpbcm) {
                                     if (obj) {
                                         row_params.row.my.result = 'Success';
                                         row_params.row.my.bpbcm = obj;
+                                        bpbcm_barcode_map[ obj.id() ] = robj.copy.barcode();
                                     } else {
                                         row_params.row.my.result = 'Failed';
                                         sound.bad();
@@ -264,3 +279,58 @@ function populate_list() {
         alert('Error in manage_multi_home_items.js, populate_list(): ' + E);
     }
 }
+
+function handle_change() {
+    try {
+        var node_list = list.retrieve_selection();
+        var eligibles = [];
+        for (var i = 0; i < node_list.length; i++) {
+            if (node_list[i].hasAttribute('retrieve_id')) {
+                eligibles.push( node_list[i].getAttribute('retrieve_id') );
+            }
+        }
+        if (eligibles.length > 0) {
+            if (window.confirm(
+                eligibles.length == 1
+                ? 'Change peer type on 1 selected item to ' + data.hash.bpt[ $('bpt_menu').value ].name()
+                : 'Change peer type on ' + eligibles.length + ' selected items to '+ data.hash.bpt[ $('bpt_menu').value ].name())
+            ) {
+                var bpbcm_list = [];
+                for (var i = 0; i < eligibles.length; i++) {
+                    var obj = rows[ bpbcm_barcode_map[ eligibles[i] ] ].row.my.bpbcm;
+                    obj.ischanged(1);
+                    obj.peer_type( $('bpt_menu').value );
+                    bpbcm_list.push( obj );
+                }
+                pcrud.update(
+                    bpbcm_list, {
+                        'async' : false,
+                        'onerror': function(r) {
+                            dump('onerror: ' + r + '\n');
+                        },
+                        'onresponse': function(r) {
+                            dump('onresponse: ' + r + '\n');
+                        },
+                        'oncomplete': function(r,objs) {
+                            dump('oncomplete: ' + r + '\n');
+                            for (var i = 0; i < objs.length; i++) {
+                                var obj = objs[i];
+                                alert('obj = ' + js2JSON(obj));
+                                try {
+                                    rows[ bpbcm_barcode_map[ obj.id() ] ].row.my.bpbcm = obj;
+                                    rows[ bpbcm_barcode_map[ obj.id() ] ].row.my.result = 'Peer Type Updated';
+                                    list.refresh_row( rows[ bpbcm_barcode_map[ obj.id() ] ] );
+                                } catch(E) {
+                                    alert('error in oncomplete: ' + E);
+                                }
+                            }
+                        }
+                    }
+                );
+            }
+        }
+
+    } catch(E) {
+        alert('Error in manage_multi_home_items.js, handle_change(): ' + E);
+    }
+}