1 var data = {}; var data_backup; var cn_list = [];
5 mw.sdump('D_CAT','entering my_init for volume.js\n');
6 mw.sdump('D_CAT','TESTING: volume.js: ' + mw.G['main_test_variable'] + '\n');
7 mw.sdump('D_CAT','record_id = ' + record_id + '\n');
8 mw.sdump('D_CAT','tree_items: ' + tree_items + '\n');
9 if (params.shortcut == 'volume_add') {
11 } else if (params.shortcut == 'copy_add') {
14 mw.sdump('D_CAT','broken\n');
16 listen_for_enter('volume_add');
17 mw.sdump('D_CAT','exiting my_init for volume.js\n');
20 function listen_for_enter(w) {
21 if (typeof(w) != 'object') {
22 w = document.getElementById(w);
24 w.addEventListener('keypress',
26 mw.sdump('D_CAT','wizard: ev.target.tagName = ' + ev.target.tagName + '\n');
27 mw.sdump('D_CAT','\tev.keyCode = ' + ev.keyCode + '\n');
28 mw.sdump('D_CAT','\tev.charCode = ' + ev.charCode + '\n');
29 if ((ev.target.tagName == 'textbox') && (ev.keyCode == 13)) {
31 ev.stopPropagation(); // XBL bindings? bleh
32 fake_tab_for_textboxes(w,ev.target);
40 function page1_add_volume_row(ou) {
41 var row = document.createElement('row');
42 row.setAttribute('id','p1_' + ou.id());
43 document.getElementById('page1_rows').appendChild(row);
44 var label = document.createElement('label');
45 label.setAttribute('value',ou.name());
46 row.appendChild(label);
47 var textbox = document.createElement('textbox');
48 textbox.setAttribute('size','1');
49 textbox.setAttribute('value','0');
50 row.appendChild(textbox);
53 function page2_add_volume_row(ou,ti) {
54 mw.sdump('D_CAT','page2_add_volume_row...\n');
56 document.getElementById('p1_' + ou.id()).lastChild.value;
57 mw.sdump('D_CAT','ou = ' + ou.name() + ' desired = ' + desired_volumes + '\n');
58 if (desired_volumes > 0) { } else { return; }
59 var rows = document.getElementById('page2_rows');
60 var row = document.createElement('row');
61 rows.appendChild(row);
62 var label = document.createElement('label');
63 label.setAttribute('value',ou.name());
64 row.appendChild(label);
65 for (var i = 0; i < desired_volumes; i++) {
66 var cn_row = document.createElement('row');
67 //cn_row.setAttribute('id','p2_'+ou.id());
68 cn_row.setAttribute('ou_name',ou.name());
69 cn_row.setAttribute('ou_id',ou.id());
70 cn_row.setAttribute('spine_row','1');
71 rows.appendChild(cn_row);
72 cn_row.appendChild( document.createElement('label') );
73 var cn_text1 = document.createElement('textbox');
74 cn_text1.setAttribute('size','20');
75 cn_text1.setAttribute('value','A Call Number');
76 cn_text1.setAttribute('spine_cn','1');
77 cn_row.appendChild( cn_text1 );
78 var cn_text2 = document.createElement('textbox');
79 cn_text2.setAttribute('size','4');
80 cn_text2.setAttribute('value','0');
81 cn_row.appendChild( cn_text2 );
82 var cn_text3 = document.createElement('textbox');
83 cn_text3.setAttribute('size','4');
84 cn_text3.setAttribute('value','0');
85 cn_text3.setAttribute('spine_label_count','1');
86 cn_row.appendChild( cn_text3 );
90 function copy_add_page2_add_volume_row(ou,ti) {
91 mw.sdump('D_CAT','copy_add_page2_add_volume_row...\n');
92 var rows = document.getElementById('page2_rows');
93 var row = document.getElementById('page2_row_cn_' + ou.id() );
95 row = document.createElement('row');
96 row.setAttribute('id','page2_row_cn' + ou.id() );
97 rows.appendChild(row);
99 var label = document.createElement('label');
100 label.setAttribute('value',ou.name());
101 row.appendChild(label);
102 var cn_row = document.createElement('row');
103 //cn_row.setAttribute('id','p2_'+ou.id());
104 cn_row.setAttribute('ou_name',ou.name());
105 cn_row.setAttribute('ou_id',ou.id());
106 cn_row.setAttribute('volume_id',ti.getAttribute('volume_id'));
107 cn_row.setAttribute('spine_row','1');
108 rows.appendChild(cn_row);
109 cn_row.appendChild( document.createElement('label') );
110 var cn_text1 = document.createElement('textbox');
111 cn_text1.setAttribute('size','20');
112 cn_text1.setAttribute('volume_id',ti.getAttribute('volume_id'));
113 cn_text1.setAttribute('value',ti.getAttribute('callnumber'));
114 cn_text1.setAttribute('spine_cn','1');
115 cn_row.appendChild( cn_text1 );
116 cn_text1.disabled = true;
117 var cn_text2 = document.createElement('textbox');
118 cn_text2.setAttribute('size','4');
119 cn_text2.setAttribute('value','0');
120 cn_row.appendChild( cn_text2 );
121 var cn_text3 = document.createElement('textbox');
122 cn_text3.setAttribute('size','4');
123 cn_text3.setAttribute('value','0');
124 cn_text3.setAttribute('spine_label_count','1');
125 cn_row.appendChild( cn_text3 );
128 function page3_add_volume_row(id,data) {
129 if (data.length>0) { } else { return; }
130 var rows = document.getElementById('page3_rows');
131 var org_row = document.createElement('row');
132 rows.appendChild(org_row);
133 var org_label = document.createElement('label');
134 org_label.setAttribute('value',data[0].name);
135 org_row.appendChild(org_label);
136 for (var i in data) {
137 var callnumber = data[i].callnumber;
138 var desired_copies = data[i].copies;
139 var cn_row = document.createElement('row');
140 rows.appendChild(cn_row);
141 var cn_box = document.createElement('hbox');
142 cn_row.appendChild(cn_box);
143 cn_box.appendChild( document.createElement('spacer') );
144 var cn_label = document.createElement('label');
145 cn_label.setAttribute('value',callnumber);
146 cn_box.appendChild(cn_label);
147 for (var c = 0; c < desired_copies; c++) {
148 var bc_row = document.createElement('row');
149 rows.appendChild(bc_row);
150 bc_row.appendChild( document.createElement('label') );
151 var bc_text = document.createElement('textbox');
152 bc_text.setAttribute('size','15');
153 bc_text.setAttribute('ou_name',data[i].name);
154 bc_text.setAttribute('ou_id',id);
155 bc_text.setAttribute('volume_id',data[i].volume_id);
156 bc_text.setAttribute('callnumber',callnumber);
157 bc_row.appendChild(bc_text);
162 function page_four_add_volume_row(name,callnumber,barcode) {
163 mw.sdump('D_CAT','xul: name = ' + name + ' cn = ' + callnumber + ' bc = ' + barcode + '\n');
164 var listbox = document.getElementById('ephemeral_listbox');
165 var listitem = document.createElement('listitem');
166 listbox.appendChild(listitem);
167 var listcell1 = document.createElement('listcell');
168 listcell1.setAttribute('label',name);
169 listitem.appendChild(listcell1);
170 var listcell2 = document.createElement('listcell');
171 listcell2.setAttribute('label',callnumber);
172 listitem.appendChild(listcell2);
173 var listcell3 = document.createElement('listcell');
174 listcell3.setAttribute('label',barcode);
175 listitem.appendChild(listcell3);
179 function build_page_one() {
180 mw.sdump('D_CAT','build_page_one\n');
181 for (var i in tree_items) {
182 var ti = tree_items[i];
183 switch( ti.getAttribute('object_type') ) {
185 if (params.shortcut == 'volume_add') {
186 var id = ti.getAttribute('id').split('_')[2];
187 var ou = mw.G.org_tree_hash[id];
188 var check_ou = check_volume_ou_perm( id );
190 page1_add_volume_row( check_ou );
198 function build_page_two() {
199 mw.sdump('D_CAT','build_page_two\n');
200 for (var i in tree_items) {
201 var ti = tree_items[i];
202 mw.sdump('D_CAT','Considering item with object_type = ' + ti.getAttribute('object_type') + '\n');
203 switch( ti.getAttribute('object_type') ) {
205 var id = ti.getAttribute('id').split('_')[2];
206 var ou = mw.G.org_tree_hash[id];
207 var check_ou = check_volume_ou_perm( id );
209 page2_add_volume_row( check_ou, ti );
213 if (params.shortcut == 'copy_add') {
214 var check_ou = find_ou( mw.G.user_ou , ti.getAttribute('ou_id') );
216 copy_add_page2_add_volume_row( check_ou, ti );
224 function build_page_three() {
225 mw.sdump('D_CAT','build_page_three\n');
226 var rows = document.getElementById('page2_rows');
227 for (var i = 0; i < rows.childNodes.length; i++) {
228 var row = rows.childNodes[i];
229 mw.sdump('D_CAT',row + '\n');
230 var ou_id = row.getAttribute('ou_id');
231 var ou_name = row.getAttribute('ou_name');
232 var volume_id = row.getAttribute('volume_id');
234 var call_number = row.childNodes[1].value;
235 if (!call_number) { continue; }
236 var desired_copies = row.childNodes[2].value;
237 if (!data[ou_id]) { data[ou_id] = []; }
240 'callnumber' : call_number,
241 'copies' : desired_copies,
243 'volume_id' : volume_id
248 for (var i in data) {
249 mw.sdump('D_CAT','i: ' + i + ' data[i]: ' + js2JSON(data[i]) + '\n');
250 page3_add_volume_row( i, data[i]);
254 function build_page_four() {
255 mw.sdump('D_CAT','build page four\n');
256 document.getElementById('volume_add').canAdvance = false;
258 var rows = document.getElementById('page3_rows');
259 var nl = rows.getElementsByTagName('textbox');
261 if (typeof(nl[i])=='object') {
263 var ou_id = t.getAttribute('ou_id');
264 var ou_name = t.getAttribute('ou_name');
265 var callnumber = t.getAttribute('callnumber');
266 var volume_id = t.getAttribute('volume_id');
267 var barcode = t.value;
268 //page_four_add_volume_row(ou_name,callnumber,barcode);
269 mw.sdump('D_CAT','t.tagName = ' + t.tagName + ' ou_id = ' + ou_id + ' cn = ' + callnumber + ' volume_id = ' + volume_id + ' bc = ' + barcode + '\n');
270 if (! new_data[ou_id] ) { new_data[ou_id] = {}; }
271 if (! new_data[ou_id][callnumber] ) {
272 new_data[ou_id][callnumber] = [];
274 if (! new_data[ou_id][callnumber]['barcode'] ) {
275 new_data[ou_id][callnumber]['barcode'] = [];
277 new_data[ou_id][callnumber].barcode.push(barcode);
278 if (params.shortcut == 'copy_add') {
279 new_data[ou_id][callnumber].volume_id = volume_id;
284 for (var ou_id in new_data) {
285 for (var cnum in new_data[ou_id]) {
286 //var ou_shortname = find_ou(mw.G['org_tree'],ou_id).shortname();
287 //var ou_shortname = mw.G.org_tree_hash[ou_id].shortname();
290 cn.owning_lib(ou_id);
291 cn.record(record_id);
292 if (params.shortcut == 'volume_add') {
295 } else if (params.shortcut == 'copy_add') {
296 cn.id( new_data[ou_id][cnum].volume_id );
300 for (var c in new_data[ou_id][cnum].barcode) {
304 cp.barcode(new_data[ou_id][cnum].barcode[c]);
305 cp.circ_lib( mw.G.org_tree_hash[ ou_id ]);
306 cn.copies().push(cp);
307 cp.stat_cat_entries( [] );
313 mw.sdump('D_CAT','Final data object: ' + js2JSON(cn_list) + '\n');
314 mw.sdump('D_CAT','Final data object: ' + cn_list + '\n');
315 spawn_local_legacy_copy_editor();
318 function send_to_bill() {
320 var result = user_request(
322 'open-ils.cat.asset.volume_tree.fleshed.batch.update',
323 [ mw.G['auth_ses'][0], cn_list]
325 mw.sdump('D_CAT','volume_tree.fleshed.batch.update result: ' + js2JSON(result) + '\n');
329 refresh_spawning_browse_list();
332 function refresh_spawning_browse_list() {
334 params.refresh_func();
336 mw.sdump('D_CAT','refresh_spawning_browse_list error: ' + js2JSON(E) + '\n');
340 function spawn_local_legacy_copy_editor(tab) {
341 mw.sdump('D_CAT','trying to spawn_copy_editor()\n');
342 var params = { 'select_all' : true };
343 var chrome = 'chrome://evergreen/content/cat/copy.xul';
344 var frame = document.getElementById('page4_iframe');
345 frame.setAttribute('src',chrome);
346 frame.setAttribute('flex','1');
347 frame.contentWindow.cn_list = cn_list;
348 frame.contentWindow.mw = mw;
349 frame.contentWindow.real_parentWindow = this;
350 frame.contentWindow.parentWindow = window.app_shell;
351 frame.contentWindow.params = params;
354 function backup_data() {
358 function restore_data() {
362 function check_volume_ou_perm(id) {
363 var top_ou = mw.G.org_tree_hash[ mw.G.user_ou.id() ];
364 var check_ou = find_ou(top_ou, id);
368 // ***************************************************** Batch Volume Edit
370 function volume_edit_init() {
371 mw.sdump('D_CAT','TESTING: volume.js: ' + mw.G['main_test_variable'] + '\n');
372 build_batch_edit_page1();
373 listen_for_enter('volume_edit');
376 function build_batch_edit_page1() {
377 var rows = document.getElementById('page1_rows');
381 for (var i = 0; i < tree_items.length; i++) {
382 var volume = tree_items[i];
383 if (! org[ volume.getAttribute('ou_id') ] ) {
384 org[ volume.getAttribute('ou_id') ] = new Array();
386 org[ volume.getAttribute('ou_id') ].push( volume );
390 var row = document.createElement('row');
391 rows.appendChild(row);
392 var lib = document.createElement('label');
393 row.appendChild(lib);
394 lib.setAttribute( 'value', mw.G.org_tree_hash[i].shortname() );
396 for (var j = 0; j < org[i].length; j++) {
397 var volume = org[i][j];
399 var vrow = document.createElement('row');
400 rows.appendChild(vrow);
401 vrow.appendChild( document.createElement('label') );
403 var t = document.createElement('textbox');
404 vrow.appendChild( t );
405 t.value = volume.getAttribute('callnumber');
406 t.setAttribute( 'original', volume.getAttribute('callnumber') );
407 t.setAttribute( 'volume_id', volume.getAttribute('volume_id') );
412 function submit_edited_volumes() {
413 var nl = document.getElementsByTagName('textbox');
414 for (var i = 0; i < nl.length; i++) {
416 if (t.getAttribute('original') == t.value) continue;
418 cn.id( t.getAttribute('volume_id') );
426 function spine_labels() {
427 var nl = document.getElementsByTagName('row');
428 var spine_labels = [];
429 for (var i = 0; i < nl.length; i++) {
430 var r = nl[i]; var cn = ''; var count = 0;
431 if (! r.getAttribute('spine_row')) continue;
432 for (var j = 0; j < r.childNodes.length; j++) {
433 var c = r.childNodes[j];
434 if (c.getAttribute('spine_cn')) cn = c.value;
435 if (c.getAttribute('spine_label_count')) count = c.value;
437 spine_labels.push( [ cn, count ] );
439 mw.spawn_spine_label_wizard(document,'new_window','',{ 'spine_labels' : spine_labels });