working batch application for class and affixes
authorJason Etheridge <jason@esilibrary.com>
Fri, 11 Mar 2011 10:51:05 +0000 (05:51 -0500)
committerJason Etheridge <jason@esilibrary.com>
Fri, 11 Mar 2011 10:51:05 +0000 (05:51 -0500)
Open-ILS/xul/staff_client/server/cat/volume_copy_creator.js

index afba813..fc2d39a 100644 (file)
@@ -25,7 +25,7 @@ function my_init() {
         g.error.sdump('D_TRACE','my_init() for cat/volume_copy_creator.xul');
 
         JSAN.use('OpenILS.data'); g.data = new OpenILS.data(); g.data.init({'via':'stash'});
-        JSAN.use('util.widgets'); JSAN.use('util.functional');
+        JSAN.use('util.widgets'); JSAN.use('util.functional'); JSAN.use('util.fm_utils');
 
         JSAN.use('util.network'); g.network = new util.network();
 
@@ -142,9 +142,7 @@ function my_init() {
         /* For the batch drop downs */
 
         g.list_classes();
-        g.list_prefixes();
         g.list_callnumbers(g.doc_id, g.label_class);
-        g.list_suffixes();
         g.render_batch_button();
 
         /***********************************************************************************************************/
@@ -152,6 +150,7 @@ function my_init() {
 
         var rows = document.getElementById('rows');
 
+        g.ou_ids = [];
         for (var i = 0; i < ou_ids.length; i++) {
             try {
                 var org = g.data.hash.aou[ ou_ids[i] ];
@@ -159,11 +158,21 @@ function my_init() {
                     var row = document.createElement('row'); rows.appendChild(row); row.setAttribute('ou_id',ou_ids[i]);
                     g.render_library_label(row,ou_ids[i]);
                     g.render_volume_count_entry( row, ou_ids[i] );
+                    g.ou_ids.push( ou_ids[i] );
                 }
             } catch(E) {
                 g.error.sdump('D_ERROR',E);
             }
         }
+        g.common_ancestor_ou_ids = util.fm_utils.find_common_aou_ancestors( g.ou_ids ).reverse();
+
+        /***********************************************************************************************************/
+        /* For the remainder batch drop downs */
+
+        g.list_prefixes();
+        g.list_suffixes();
+
+        /************/
 
         g.load_prefs();
 
@@ -1116,6 +1125,7 @@ g.render_class_menu = function(call_number_tb) {
             }
         )
     );
+    ml.setAttribute('rel_vert_pos',rel_vert_pos_call_number_classification);
     ml.addEventListener(
         'command',
         function() {
@@ -1144,6 +1154,7 @@ g.render_prefix_menu = function(call_number_tb) {
             g.render_prefix_menu_items(menupopup,org_list[i]);
         }
 
+    menulist.setAttribute('rel_vert_pos',rel_vert_pos_call_number_prefix);
     menulist.addEventListener(
         'command',
         function() {
@@ -1199,6 +1210,7 @@ g.render_suffix_menu = function(call_number_tb) {
             g.render_suffix_menu_items(menupopup,org_list[i]);
         }
 
+    menulist.setAttribute('rel_vert_pos',rel_vert_pos_call_number_suffix);
     menulist.addEventListener(
         'command',
         function() {
@@ -1287,6 +1299,9 @@ g.list_prefixes = function() {
             [ '<No Change>', false ]
         ]
     ); hbox.appendChild(ml);
+    for (var i = 0; i < g.common_ancestor_ou_ids.length; i++) {
+        g.render_prefix_menu_items(ml.firstChild,g.common_ancestor_ou_ids[i]);
+    }
 }
 
 g.list_suffixes = function() {
@@ -1296,6 +1311,9 @@ g.list_suffixes = function() {
             [ '<No Change>', false ]
         ]
     ); hbox.appendChild(ml);
+    for (var i = 0; i < g.common_ancestor_ou_ids.length; i++) {
+        g.render_suffix_menu_items(ml.firstChild,g.common_ancestor_ou_ids[i]);
+    }
 }
 
 g.render_batch_button = function() {
@@ -1310,13 +1328,47 @@ g.render_batch_button = function() {
         function() {
             var nl = document.getElementsByTagName('textbox');
             for (var i = 0; i < nl.length; i++) {
-                if (nl[i].getAttribute('rel_vert_pos')==rel_vert_pos_call_number
-                    && !nl[i].disabled)
-                {
-                    nl[i].value = $('marc_cn').firstChild.value;
-                    util.widgets.dispatch('change',nl[i]);
+                /* label */
+                if (nl[i].getAttribute('rel_vert_pos')==rel_vert_pos_call_number && !nl[i].disabled) {
+                    var label =  $('marc_cn').firstChild.value;
+                    if (label != '') {
+                        nl[i].value = label;
+                        util.widgets.dispatch('change',nl[i]);
+                    }
                 }
             }
+            nl = document.getElementsByTagName('menulist');
+            for (var i = 0; i < nl.length; i++) {
+                /* classification */
+                if (nl[i].getAttribute('rel_vert_pos')==rel_vert_pos_call_number_classification && !nl[i].disabled) {
+                    var value =  $('batch_class').firstChild.value;
+                    if (!isNaN( Number(value) )) {
+                        nl[i].value = value;
+                        util.widgets.dispatch('command',nl[i]);
+                    }
+                }
+                /* prefix */
+                if (nl[i].getAttribute('rel_vert_pos')==rel_vert_pos_call_number_prefix && !nl[i].disabled) {
+                    var value =  $('batch_prefix').firstChild.value;
+                    if (!isNaN( Number(value) )) {
+                        nl[i].value = value;
+                        util.widgets.dispatch('command',nl[i]);
+                    }
+                }
+                /* suffix */
+                if (nl[i].getAttribute('rel_vert_pos')==rel_vert_pos_call_number_suffix && !nl[i].disabled) {
+                    var value =  $('batch_suffix').firstChild.value;
+                    if (!isNaN( Number(value) )) {
+                        nl[i].value = value;
+                        util.widgets.dispatch('command',nl[i]);
+                    }
+                }
+            }
+            setTimeout(
+                function() {
+                    g.gather_copies_soon();
+                },0
+            );
             if (g.last_focus) setTimeout( function() { g.last_focus.focus(); }, 0 );
         },
         false