1 const rel_vert_pos_call_number_classification = 1;
2 const rel_vert_pos_call_number_prefix = 2;
3 const rel_vert_pos_call_number = 3;
4 const rel_vert_pos_call_number_suffix = 4;
10 if (typeof JSAN == 'undefined') { throw( $("commonStrings").getString('common.jsan.missing') ); }
11 JSAN.errorLevel = "die"; // none, warn, or die
12 JSAN.addRepository('/xul/server/');
13 JSAN.use('util.error'); g.error = new util.error();
14 g.error.sdump('D_TRACE','my_init() for cat/volume_editor.xul');
16 JSAN.use('OpenILS.data'); g.data = new OpenILS.data(); g.data.init({'via':'stash'});
17 JSAN.use('util.network'); g.network = new util.network();
19 JSAN.use('util.functional');
23 g.volumes = xul_param('volumes',{'stash_name':'volumes_temp','clear_xpcom':true,'modal_xulG':true}); //JSON2js( g.data.volumes_temp );
24 //g.data.volumes_temp = ''; g.data.stash('volumes_temp');
26 var rows = document.getElementById('rows');
30 for (var i = 0; i < g.volumes.length; i++) {
31 var row = document.createElement('row');
32 rows.appendChild(row);
33 var lib_label = document.createElement('label');
34 row.appendChild(lib_label);
35 var class_ml = g.render_class_menu(i);
36 class_ml.setAttribute('class','cn_class');
37 class_ml.setAttribute('rel_vert_pos', rel_vert_pos_call_number_classification);
38 row.appendChild(class_ml);
39 var prefix_ml = g.render_prefix_menu(i);
40 prefix_ml.setAttribute('class','cn_prefix');
41 prefix_ml.setAttribute('rel_vert_pos', rel_vert_pos_call_number_prefix);
42 row.appendChild(prefix_ml);
43 var label_tb = document.createElement('textbox');
44 label_tb.setAttribute('rel_vert_pos', rel_vert_pos_call_number);
45 row.appendChild(label_tb);
46 var suffix_ml = g.render_suffix_menu(i);
47 suffix_ml.setAttribute('class','cn_suffix');
48 suffix_ml.setAttribute('rel_vert_pos', rel_vert_pos_call_number_suffix);
49 row.appendChild(suffix_ml);
50 if (!first_tb) { first_tb = label_tb; }
52 var lib_id = g.volumes[i].owning_lib();
55 if (last_lib_seen != lib_id ) {
56 lib_label.setAttribute('value',g.data.hash.aou[ lib_id ].shortname() );
57 last_lib_seen = lib_id;
60 label_tb.setAttribute('value',g.volumes[i].label());
61 label_tb.setAttribute('onchange','try { var v = g.volumes['+i+']; v.ischanged("1"); v.label( this.value ); } catch(E) { alert(E); }');
64 first_tb.select(); first_tb.focus();
67 if (g.volumes.length > 0) {
69 JSAN.use('util.fm_utils');
71 // Get the default callnumber classification scheme from OU settings
72 g.label_class = g.data.hash.aous['cat.default_classification_scheme'];
74 // Assign a default value if none was returned
76 g.label_class = g.data.list.acnc[0].id();
79 // Find the pertinent orgs
82 for (var i = 0; i < g.volumes.length; i++) {
83 seen_ou[ g.volumes[i].owning_lib() ] = 1;
85 for (var i in seen_ou) {
89 for (var i = 0; i < ou_ids.length; i++) {
91 var org = g.data.hash.aou[ ou_ids[i] ];
92 if ( get_bool( g.data.hash.aout[ org.ou_type() ].can_have_vols() ) ) {
93 g.ou_ids.push( ou_ids[i] );
96 g.error.sdump('D_ERROR',E);
99 g.common_ancestor_ou_ids = util.fm_utils.find_common_aou_ancestors( g.ou_ids ).reverse();
104 cat.util.render_callnumbers_for_bib_menu('marc_cn',g.volumes[0].record(), g.label_class);
108 g.render_batch_button();
112 var err_msg = $("commonStrings").getFormattedString('common.exception', ['cat/volume_editor.xul', E]);
113 try { g.error.sdump('D_ERROR',err_msg); } catch(E) { dump(err_msg); dump(js2JSON(E)); }
118 g.stash_and_close = function() {
120 //g.data.volumes_temp = js2JSON( g.volumes );
121 //g.error.sdump('D_CAT','in modal window, g.data.volumes_temp = \n' + g.data.volumes_temp + '\n');
122 //g.data.stash('volumes_temp');
123 xulG.volumes = g.volumes;
124 xulG.update_these_volumes = 1;
125 xulG.auto_merge = document.getElementById('auto_merge').checked;
126 update_modal_xulG(xulG);
129 alert('FIXME: volume editor -> ' + E);
133 g.render_class_menu = function(vol_idx) {
134 var ml = cat.util.render_cn_class_menu(
136 typeof g.volumes[vol_idx].label_class() == 'object'
137 ? g.volumes[vol_idx].label_class().id()
138 : g.volumes[vol_idx].label_class()
143 g.volumes[vol_idx].ischanged(1);
144 g.volumes[vol_idx].label_class(ml.value);
151 g.render_prefix_menu = function(vol_idx) {
153 var org = typeof g.volumes[vol_idx].owning_lib() == 'object'
154 ? g.volumes[vol_idx].owning_lib()
155 : g.data.hash.aou[ g.volumes[vol_idx].owning_lib() ];
157 var menulist = cat.util.render_cn_prefix_menu(
160 typeof g.volumes[vol_idx].prefix() == 'object'
161 ? g.volumes[vol_idx].prefix().id()
162 : g.volumes[vol_idx].prefix()
165 menulist.addEventListener(
168 g.volumes[vol_idx].ischanged(1);
169 g.volumes[vol_idx].prefix(menulist.value);
176 g.render_suffix_menu = function(vol_idx) {
178 var org = typeof g.volumes[vol_idx].owning_lib() == 'object'
179 ? g.volumes[vol_idx].owning_lib()
180 : g.data.hash.aou[ g.volumes[vol_idx].owning_lib() ];
182 var menulist = cat.util.render_cn_suffix_menu(
185 typeof g.volumes[vol_idx].suffix() == 'object'
186 ? g.volumes[vol_idx].suffix().id()
187 : g.volumes[vol_idx].suffix()
190 menulist.addEventListener(
193 g.volumes[vol_idx].ischanged(1);
194 g.volumes[vol_idx].suffix(menulist.value);
201 g.list_classes = function() {
202 var hbox = $('batch_class');
203 var ml = cat.util.render_cn_class_menu(
205 [ '<No Change>', false ]
208 ml.setAttribute('id','batch_class_menulist');
209 hbox.appendChild(ml);
212 g.list_prefixes = function() {
213 var hbox = $('batch_prefix');
214 var ml = cat.util.render_cn_prefix_menu(
215 g.common_ancestor_ou_ids,
217 [ '<No Change>', false ]
220 ml.setAttribute('id','batch_prefix_menulist');
221 hbox.appendChild(ml);
224 g.list_suffixes = function() {
225 var hbox = $('batch_suffix');
226 var ml = cat.util.render_cn_suffix_menu(
227 g.common_ancestor_ou_ids,
229 [ '<No Change>', false ]
232 ml.setAttribute('id','batch_suffix_menulist');
233 hbox.appendChild(ml);
236 g.render_batch_button = function() {
237 var hbox = $('batch_button_box');
238 var btn = document.createElement('button');
239 btn.setAttribute('id','batch_button');
240 btn.setAttribute('label',$('catStrings').getString('staff.cat.volume_copy_creator.my_init.btn.label'));
241 btn.setAttribute('accesskey',$('catStrings').getString('staff.cat.volume_copy_creator.my_init.btn.accesskey'));
242 btn.setAttribute('image','/xul/server/skin/media/images/down_arrow.gif');
243 hbox.appendChild(btn);
244 btn.addEventListener(
247 var nl = document.getElementsByTagName('textbox');
248 for (var i = 0; i < nl.length; i++) {
250 if (nl[i].getAttribute('rel_vert_pos')==rel_vert_pos_call_number && !nl[i].disabled) {
251 var label = $('marc_cn').firstChild.value;
254 util.widgets.dispatch('change',nl[i]);
258 nl = document.getElementsByTagName('menulist');
259 for (var i = 0; i < nl.length; i++) {
261 if (nl[i].getAttribute('rel_vert_pos')==rel_vert_pos_call_number_classification && !nl[i].disabled) {
262 var value = $('batch_class_menulist').value;
263 if (!isNaN( Number(value) )) {
265 util.widgets.dispatch('command',nl[i]);
269 if (nl[i].getAttribute('rel_vert_pos')==rel_vert_pos_call_number_prefix && !nl[i].disabled) {
270 var value = $('batch_prefix_menulist').value;
271 if (!isNaN( Number(value) )) {
273 util.widgets.dispatch('command',nl[i]);
277 if (nl[i].getAttribute('rel_vert_pos')==rel_vert_pos_call_number_suffix && !nl[i].disabled) {
278 var value = $('batch_suffix_menulist').value;
279 if (!isNaN( Number(value) )) {
281 util.widgets.dispatch('command',nl[i]);