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;
8 if (typeof JSAN == 'undefined') { throw( $("commonStrings").getString('common.jsan.missing') ); }
9 JSAN.errorLevel = "die"; // none, warn, or die
10 JSAN.addRepository('/xul/server/');
11 JSAN.use('util.error'); g.error = new util.error();
12 g.error.sdump('D_TRACE','my_init() for cat/volume_editor.xul');
14 JSAN.use('OpenILS.data'); g.data = new OpenILS.data(); g.data.init({'via':'stash'});
15 JSAN.use('util.network'); g.network = new util.network();
17 JSAN.use('util.functional');
21 g.volumes = xul_param('volumes',{'stash_name':'volumes_temp','clear_xpcom':true}); //JSON2js( g.data.volumes_temp );
22 //g.data.volumes_temp = ''; g.data.stash('volumes_temp');
24 var rows = document.getElementById('rows');
28 for (var i = 0; i < g.volumes.length; i++) {
29 var row = document.createElement('row');
30 rows.appendChild(row);
31 var lib_label = document.createElement('label');
32 row.appendChild(lib_label);
33 var class_ml = g.render_class_menu(i);
34 class_ml.setAttribute('class','cn_class');
35 class_ml.setAttribute('rel_vert_pos', rel_vert_pos_call_number_classification);
36 row.appendChild(class_ml);
37 var prefix_ml = g.render_prefix_menu(i);
38 prefix_ml.setAttribute('class','cn_prefix');
39 prefix_ml.setAttribute('rel_vert_pos', rel_vert_pos_call_number_prefix);
40 row.appendChild(prefix_ml);
41 var label_tb = document.createElement('textbox');
42 label_tb.setAttribute('rel_vert_pos', rel_vert_pos_call_number);
43 row.appendChild(label_tb);
44 var suffix_ml = g.render_suffix_menu(i);
45 suffix_ml.setAttribute('class','cn_suffix');
46 suffix_ml.setAttribute('rel_vert_pos', rel_vert_pos_call_number_suffix);
47 row.appendChild(suffix_ml);
48 if (!first_tb) { first_tb = label_tb; }
50 var lib_id = g.volumes[i].owning_lib();
53 if (last_lib_seen != lib_id ) {
54 lib_label.setAttribute('value',g.data.hash.aou[ lib_id ].shortname() );
55 last_lib_seen = lib_id;
58 label_tb.setAttribute('value',g.volumes[i].label());
59 label_tb.setAttribute('onchange','try { var v = g.volumes['+i+']; v.ischanged("1"); v.label( this.value ); } catch(E) { alert(E); }');
62 first_tb.select(); first_tb.focus();
65 if (g.volumes.length > 0) {
67 JSAN.use('util.fm_utils');
69 // Get the default callnumber classification scheme from OU settings
70 g.label_class = g.data.hash.aous['cat.default_classification_scheme'];
72 // Assign a default value if none was returned
74 g.label_class = g.data.list.acnc[0].id();
77 // Find the pertinent orgs
80 for (var i = 0; i < g.volumes.length; i++) {
81 seen_ou[ g.volumes[i].owning_lib() ] = 1;
83 for (var i in seen_ou) {
87 for (var i = 0; i < ou_ids.length; i++) {
89 var org = g.data.hash.aou[ ou_ids[i] ];
90 if ( get_bool( g.data.hash.aout[ org.ou_type() ].can_have_vols() ) ) {
91 g.ou_ids.push( ou_ids[i] );
94 g.error.sdump('D_ERROR',E);
97 g.common_ancestor_ou_ids = util.fm_utils.find_common_aou_ancestors( g.ou_ids ).reverse();
102 cat.util.render_callnumbers_for_bib_menu('marc_cn',g.volumes[0].record(), g.label_class);
106 g.render_batch_button();
110 var err_msg = $("commonStrings").getFormattedString('common.exception', ['cat/volume_editor.xul', E]);
111 try { g.error.sdump('D_ERROR',err_msg); } catch(E) { dump(err_msg); dump(js2JSON(E)); }
116 g.stash_and_close = function() {
118 //g.data.volumes_temp = js2JSON( g.volumes );
119 //g.error.sdump('D_CAT','in modal window, g.data.volumes_temp = \n' + g.data.volumes_temp + '\n');
120 //g.data.stash('volumes_temp');
121 xulG.volumes = g.volumes;
122 xulG.update_these_volumes = 1;
123 xulG.auto_merge = document.getElementById('auto_merge').checked;
126 alert('FIXME: volume editor -> ' + E);
130 g.render_class_menu = function(vol_idx) {
131 var ml = cat.util.render_cn_class_menu(
133 typeof g.volumes[vol_idx].label_class() == 'object'
134 ? g.volumes[vol_idx].label_class().id()
135 : g.volumes[vol_idx].label_class()
140 g.volumes[vol_idx].ischanged(1);
141 g.volumes[vol_idx].label_class(ml.value);
148 g.render_prefix_menu = function(vol_idx) {
150 var org = typeof g.volumes[vol_idx].owning_lib() == 'object'
151 ? g.volumes[vol_idx].owning_lib()
152 : g.data.hash.aou[ g.volumes[vol_idx].owning_lib() ];
154 var menulist = cat.util.render_cn_prefix_menu(
157 typeof g.volumes[vol_idx].prefix() == 'object'
158 ? g.volumes[vol_idx].prefix().id()
159 : g.volumes[vol_idx].prefix()
162 menulist.addEventListener(
165 g.volumes[vol_idx].ischanged(1);
166 g.volumes[vol_idx].prefix(menulist.value);
173 g.render_suffix_menu = function(vol_idx) {
175 var org = typeof g.volumes[vol_idx].owning_lib() == 'object'
176 ? g.volumes[vol_idx].owning_lib()
177 : g.data.hash.aou[ g.volumes[vol_idx].owning_lib() ];
179 var menulist = cat.util.render_cn_suffix_menu(
182 typeof g.volumes[vol_idx].suffix() == 'object'
183 ? g.volumes[vol_idx].suffix().id()
184 : g.volumes[vol_idx].suffix()
187 menulist.addEventListener(
190 g.volumes[vol_idx].ischanged(1);
191 g.volumes[vol_idx].suffix(menulist.value);
198 g.list_classes = function() {
199 var hbox = $('batch_class');
200 var ml = cat.util.render_cn_class_menu(
202 [ '<No Change>', false ]
205 ml.setAttribute('id','batch_class_menulist');
206 hbox.appendChild(ml);
209 g.list_prefixes = function() {
210 var hbox = $('batch_prefix');
211 var ml = cat.util.render_cn_prefix_menu(
212 g.common_ancestor_ou_ids,
214 [ '<No Change>', false ]
217 ml.setAttribute('id','batch_prefix_menulist');
218 hbox.appendChild(ml);
221 g.list_suffixes = function() {
222 var hbox = $('batch_suffix');
223 var ml = cat.util.render_cn_suffix_menu(
224 g.common_ancestor_ou_ids,
226 [ '<No Change>', false ]
229 ml.setAttribute('id','batch_suffix_menulist');
230 hbox.appendChild(ml);
233 g.render_batch_button = function() {
234 var hbox = $('batch_button_box');
235 var btn = document.createElement('button');
236 btn.setAttribute('id','batch_button');
237 btn.setAttribute('label',$('catStrings').getString('staff.cat.volume_copy_creator.my_init.btn.label'));
238 btn.setAttribute('accesskey',$('catStrings').getString('staff.cat.volume_copy_creator.my_init.btn.accesskey'));
239 btn.setAttribute('image','/xul/server/skin/media/images/down_arrow.gif');
240 hbox.appendChild(btn);
241 btn.addEventListener(
244 var nl = document.getElementsByTagName('textbox');
245 for (var i = 0; i < nl.length; i++) {
247 if (nl[i].getAttribute('rel_vert_pos')==rel_vert_pos_call_number && !nl[i].disabled) {
248 var label = $('marc_cn').firstChild.value;
251 util.widgets.dispatch('change',nl[i]);
255 nl = document.getElementsByTagName('menulist');
256 for (var i = 0; i < nl.length; i++) {
258 if (nl[i].getAttribute('rel_vert_pos')==rel_vert_pos_call_number_classification && !nl[i].disabled) {
259 var value = $('batch_class_menulist').value;
260 if (!isNaN( Number(value) )) {
262 util.widgets.dispatch('command',nl[i]);
266 if (nl[i].getAttribute('rel_vert_pos')==rel_vert_pos_call_number_prefix && !nl[i].disabled) {
267 var value = $('batch_prefix_menulist').value;
268 if (!isNaN( Number(value) )) {
270 util.widgets.dispatch('command',nl[i]);
274 if (nl[i].getAttribute('rel_vert_pos')==rel_vert_pos_call_number_suffix && !nl[i].disabled) {
275 var value = $('batch_suffix_menulist').value;
276 if (!isNaN( Number(value) )) {
278 util.widgets.dispatch('command',nl[i]);