populate with existing peer biblio copy map entries
authorJason Etheridge <jason@esilibrary.com>
Tue, 5 Apr 2011 18:06:14 +0000 (14:06 -0400)
committerJason Etheridge <jason@esilibrary.com>
Tue, 5 Apr 2011 18:06:14 +0000 (14:06 -0400)
Open-ILS/xul/staff_client/server/cat/manage_multi_home_items.js
Open-ILS/xul/staff_client/server/cat/manage_multi_home_items.xul

index b3ba0bc..6d0f58c 100644 (file)
@@ -38,7 +38,8 @@ function my_init() {
         init_list();
         $('list_actions').appendChild( list.render_list_actions() );
         list.set_list_actions();
-        $('submit').addEventListener('command', function() { handle_submit(); }, false);
+        populate_list();
+        $('submit').addEventListener('command', function() { handle_submit(true); }, false);
         $('scanbox').addEventListener('keypress', handle_keypress, false);
         default_focus();
 
@@ -47,7 +48,7 @@ function my_init() {
         }
 
     } catch(E) {
-        alert('Error in add_multi_home_items.js, my_init(): ' + E);
+        alert('Error in manage_multi_home_items.js, my_init(): ' + E);
     }
 }
 
@@ -68,7 +69,7 @@ function init_menu() {
         ml.setAttribute('id','bpt_menu');
         $('menu_placeholder').appendChild(ml);
     } catch(E) {
-        alert('Error in add_multi_home_items.js, init_menu(): ' + E);
+        alert('Error in manage_multi_home_items.js, init_menu(): ' + E);
     }
 }
 
@@ -110,90 +111,140 @@ function init_list() {
             }
         );
     } catch(E) {
-        alert('Error in add_multi_home_items.js, init_list(): ' + E);
+        alert('Error in manage_multi_home_items.js, init_list(): ' + E);
     }
 }
 
 function handle_keypress(ev) {
     try {
         if (ev.keyCode && ev.keyCode == 13) {
-            handle_submit();
+            handle_submit(true);
         }
     } catch(E) {
-        alert('Error in add_multi_home_items.js, handle_keypress(): ' + E);
+        alert('Error in manage_multi_home_items.js, handle_keypress(): ' + E);
     }
 }
 
-function handle_submit() {
+function handle_submit(create,my_bpbcm) {
     try {
-        var barcode = $('scanbox').value;
-        $('scanbox').value = '';
-        default_focus();
+        var barcode;
+        if (create) {
+            barcode = $('scanbox').value;
+            $('scanbox').value = '';
+            default_focus();
+        }
 
         var placeholder_acp = new acp();
         placeholder_acp.barcode(barcode);
         var row_params = {
             'row' : {
                 'my' : {
-                    'acp' : placeholder_acp
+                    'acp' : placeholder_acp,
+                    'bpbcm' : bpbcm
                 }
             }
         };
 
         var row_params = list.append(row_params);
 
-        net.simple_request(
-            'FM_ACP_DETAILS_VIA_BARCODE.authoritative',
-            [ ses(), barcode ],
-            function(req) {
-                try {
-                    var robj = req.getResultObject();
-                    if (typeof robj.ilsevent != 'undefined') {
-                        row_params.row.my.result = robj.textcode;
-                    } else {
-                        row_params.row.my.acp = robj.copy;
-                        row_params.row.my.mvr = robj.mvr;
-
-                        if (robj.mvr.doc_id() != xul_param('docid')) {
-                            var new_bpbcm = new bpbcm();
-                                new_bpbcm.isnew(1);
-                                new_bpbcm.peer_type($('bpt_menu').value);
-                                new_bpbcm.peer_record(xul_param('docid'));
-                                new_bpbcm.target_copy(robj.copy.id());
-                            pcrud.create(new_bpbcm, {
-                                "onerror" : function(r) {
-                                    alert('here');
-                                    alert(js2JSON(r));
-                                },
-                                "oncomplete": function (r, objs) {
-                                    try {
-                                        var obj = objs[0];
-                                        if (obj) {
-                                            row_params.row.my.result = 'Success';
-                                            row_params.row.my.bpbcm = obj;
-                                        } else {
-                                            row_params.row.my.result = 'Failed';
-                                            sound.bad();
-                                        }
-                                        list.refresh_row( row_params );
-                                    } catch(E) {
-                                        alert('Error in add_multi_home_items.js, handle_submit, pcrud create oncomplete callback: ' + E);
+        function handle_req(req) {
+            try {
+                var robj = req.getResultObject();
+                if (typeof robj.ilsevent != 'undefined') {
+                    row_params.row.my.result = robj.textcode;
+                } else {
+                    row_params.row.my.acp = robj.copy;
+                    row_params.row.my.mvr = robj.mvr;
+
+                    if (create && robj.mvr.doc_id() != xul_param('docid')) {
+                        var new_bpbcm = new bpbcm();
+                            new_bpbcm.isnew(1);
+                            new_bpbcm.peer_type($('bpt_menu').value);
+                            new_bpbcm.peer_record(xul_param('docid'));
+                            new_bpbcm.target_copy(robj.copy.id());
+                        pcrud.create(new_bpbcm, {
+                            "onerror" : function(r) {
+                                alert('here');
+                                alert(js2JSON(r));
+                            },
+                            "oncomplete": function (r, objs) {
+                                try {
+                                    var obj = objs[0];
+                                    if (obj) {
+                                        row_params.row.my.result = 'Success';
+                                        row_params.row.my.bpbcm = obj;
+                                    } else {
+                                        row_params.row.my.result = 'Failed';
+                                        sound.bad();
                                     }
+                                    list.refresh_row( row_params );
+                                } catch(E) {
+                                    alert('Error in manage_multi_home_items.js, handle_submit, pcrud create oncomplete callback: ' + E);
                                 }
-                            });
+                            }
+                        });
+                    } else {
+                        if (robj.mvr.doc_id() != xul_param('docid')) {
+                            row_params.row.my.result = 'Item linked to Bib';
                         } else {
                             row_params.row.my.result = 'Item native to Bib';
                         }
                     }
-                    list.refresh_row( row_params );
-                } catch(E) {
-                    alert('Error in add_multi_home_items.js, handle_submit, acp details callback: ' + E);
                 }
+                list.refresh_row( row_params );
+            } catch(E) {
+                alert('Error in manage_multi_home_items.js, handle_submit, acp details callback: ' + E);
             }
-        );
+        }
+
+        if (my_bpbcm) {
+            net.simple_request(
+                'FM_ACP_DETAILS', // FIXME: want this to be authoritative
+                [ ses(), my_bpbcm.target_copy() ],
+                handle_req
+            );
+        } else {
+            net.simple_request(
+                'FM_ACP_DETAILS_VIA_BARCODE.authoritative',
+                [ ses(), barcode ],
+                handle_req
+            );
+        }
+
 
     } catch(E) {
-        alert('Error in add_multi_home_items.js, handle_submit(): ' + E);
+        alert('Error in manage_multi_home_items.js, handle_submit(): ' + E);
     }
 }
 
+function populate_list() {
+    try {
+        pcrud.search(
+            'bpbcm',
+            {
+                peer_record : xul_param('docid')
+            },
+            {
+                async : true,
+                streaming : true,
+                onerror : function(r) {
+                        alert('Error in manage_multi_home_items.js, populate_list(), pcrud.search onerror: ' + r);
+                },
+                oncomplete : function() {
+                },
+                onresponse : function(r) {
+                    try {
+                        var my_bpbcm = openils.Util.readResponse(r);
+                        if (typeof my_bpbcm.ils_event != 'undefined') { throw(my_bpbcm); }
+                        handle_submit(false,my_bpbcm);
+                    } catch(E) {
+                        alert('Error in manage_multi_home_items.js, populate_list(), pcrud.search onresponse: ' + E);
+                    }
+                }
+            }
+        );
+
+    } catch(E) {
+        alert('Error in manage_multi_home_items.js, populate_list(): ' + E);
+    }
+}
index b4d578d..5bb0c3d 100644 (file)
@@ -29,7 +29,7 @@
     <scripts id="openils_util_scripts"/>
 
     <script type="text/javascript" src="/xul/server/main/JSAN.js"/>
-    <script type="text/javascript" src="add_multi_home_items.js"/>
+    <script type="text/javascript" src="manage_multi_home_items.js"/>
 
     <vbox flex="1" class="my_overflow">
         <hbox>