add label for Barcodes & Parts, retrieve monographic parts for a bib, and supply...
authorJason Etheridge <jason@esilibrary.com>
Fri, 4 Mar 2011 01:23:18 +0000 (20:23 -0500)
committerJason Etheridge <jason@esilibrary.com>
Fri, 4 Mar 2011 17:23:04 +0000 (12:23 -0500)
Open-ILS/xul/staff_client/server/cat/volume_copy_creator.js
Open-ILS/xul/staff_client/server/locale/en-US/cat.properties

index 3b8805e..14c9def 100644 (file)
@@ -114,6 +114,13 @@ function my_init() {
         get_contentWindow(summary).xulG = { 'docid' : g.doc_id };
 
         /***********************************************************************************************************/
+        /* Fetch the monographic parts for this bib */
+
+        dojo.require('openils.PermaCrud');
+        var pcrud = new openils.PermaCrud({'authtoken':ses()});
+        g.parts = pcrud.search('bmp',{'record':g.doc_id},{'order_by': { 'bmp' : 'label_sortkey' } });
+
+        /***********************************************************************************************************/
         /* For the call number drop down */
 
         if (g.existing_copies.length > 0 || !g.copy_shortcut) {
@@ -212,7 +219,8 @@ g.render_callnumber_copy_count_entry = function(row,ou_id,count) {
     x.setAttribute('value', $("catStrings").getString('staff.cat.volume_copy_creator.render_callnumber_copy_count_entry.call_nums')); x.setAttribute('style','font-weight: bold');
     x = document.createElement('label'); r.appendChild(x);
     x.setAttribute('value',$("catStrings").getString('staff.cat.volume_copy_creator.render_callnumber_copy_count_entry.num_of_copies')); x.setAttribute('style','font-weight: bold');
-    x.setAttribute('size','3'); x.setAttribute('cols','3');
+    x = document.createElement('label'); r.appendChild(x);
+    x.setAttribute('value',$("catStrings").getString('staff.cat.volume_copy_creator.render_callnumber_copy_count_entry.barcodes_and_parts')); x.setAttribute('style','font-weight: bold');
 
     function handle_change(call_number_column_textbox,number_of_copies_column_textbox,barcode_column_box) {
         if (call_number_column_textbox.value == '') return;
@@ -323,6 +331,19 @@ g.render_callnumber_copy_count_entry = function(row,ou_id,count) {
     return grid;
 }
 
+g.render_part_menu = function() {
+    var menulist = document.createElement('menulist');
+    menulist.setAttribute('editable','true');
+    var menupopup = document.createElement('menupopup');
+    menulist.appendChild(menupopup);
+    for (var i = 0; i < g.parts.length; i++) {
+        var menuitem = document.createElement('menuitem');
+        menuitem.setAttribute('label',g.parts[i].label());
+        menupopup.appendChild(menuitem);
+    }
+    return menulist;
+}
+
 g.render_barcode_entry = function(node,callnumber,count,ou_id) {
     try {
         function ready_to_create(ev) {
@@ -337,16 +358,27 @@ g.render_barcode_entry = function(node,callnumber,count,ou_id) {
         JSAN.use('util.barcode'); 
 
         for (var i = 0; i < count; i++) {
-            var tb; var set_handlers = false;
+            var tb_part_box;
+            var tb;
+            var part_menu;
+            var set_handlers = false;
             if (typeof node.childNodes[i] == 'undefined') {
-                tb = document.createElement('textbox'); node.appendChild(tb);
+                tb_part_box = document.createElement('hbox');
+                node.appendChild(tb_part_box);
+                tb = document.createElement('textbox');
+                tb_part_box.appendChild(tb);
+                part_menu = g.render_part_menu();
+                tb_part_box.appendChild(part_menu);
                 set_handlers = true;
             } else {
-                tb = node.childNodes[i];
+                tb_part_box = node.childNodes[i];
+                tb = tb_part_box.firstChild;
+                part_menu = tb_part_box.lastChild;
             }
             tb.setAttribute('ou_id',ou_id);
             tb.setAttribute('callnumber',callnumber);
             tb.setAttribute('rel_vert_pos','4');
+            part_menu.setAttribute('rel_vert_pos','5');
             if (!tb.value && g.org_label_existing_copy_map[ ou_id ]) {
                 tb.value = g.org_label_existing_copy_map[ ou_id ][ callnumber ][i].barcode();
                 tb.setAttribute('acp_id', g.org_label_existing_copy_map[ ou_id ][ callnumber ][i].id());
@@ -358,6 +390,10 @@ g.render_barcode_entry = function(node,callnumber,count,ou_id) {
                     tb, 
                     function() { ready_to_create({'target':tb}); setTimeout(function(){util.widgets.vertical_tab(tb);},0); }
                 );
+                util.widgets.apply_vertical_tab_on_enter_handler(
+                    part_menu,
+                    function() { setTimeout(function(){util.widgets.vertical_tab(part_menu);},0); }
+                );
                 tb.addEventListener('change', function(ev) {
                     var barcode = String( ev.target.value ).replace(/\s/g,'');
                     if (barcode != ev.target.value) ev.target.value = barcode;
index 8ac1b3f..1195262 100644 (file)
@@ -407,6 +407,7 @@ staff.cat.volume_copy_creator.render_volume_count_entry.title=Maximum items exce
 staff.cat.volume_copy_creator.render_volume_count_entry.ok_label=Ok
 staff.cat.volume_copy_creator.render_callnumber_copy_count_entry.call_nums=Call Numbers
 staff.cat.volume_copy_creator.render_callnumber_copy_count_entry.num_of_copies=# of Copies
+staff.cat.volume_copy_creator.render_callnumber_copy_count_entry.barcodes_and_parts=Barcodes / Part Designation
 staff.cat.volume_copy_creator.render_barcode_entry.alert_message="%1$s" is an invalid barcode.
 staff.cat.volume_copy_creator.render_barcode_entry.alert_title=Invalid Barcode
 staff.cat.volume_copy_creator.render_barcode_entry.alert_ok_button=OK