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 rows.appendChild(cn_row);
71 cn_row.appendChild( document.createElement('label') );
72 var cn_text1 = document.createElement('textbox');
73 cn_text1.setAttribute('size','20');
74 cn_text1.setAttribute('value','A Call Number');
75 cn_row.appendChild( cn_text1 );
76 var cn_text2 = document.createElement('textbox');
77 cn_text2.setAttribute('size','4');
78 cn_text2.setAttribute('value','0');
79 cn_row.appendChild( cn_text2 );
83 function copy_add_page2_add_volume_row(ou,ti) {
84 mw.sdump('D_CAT','copy_add_page2_add_volume_row...\n');
85 var rows = document.getElementById('page2_rows');
86 var row = document.getElementById('page2_row_cn_' + ou.id() );
88 row = document.createElement('row');
89 row.setAttribute('id','page2_row_cn' + ou.id() );
90 rows.appendChild(row);
92 var label = document.createElement('label');
93 label.setAttribute('value',ou.name());
94 row.appendChild(label);
95 var cn_row = document.createElement('row');
96 //cn_row.setAttribute('id','p2_'+ou.id());
97 cn_row.setAttribute('ou_name',ou.name());
98 cn_row.setAttribute('ou_id',ou.id());
99 cn_row.setAttribute('volume_id',ti.getAttribute('volume_id'));
100 rows.appendChild(cn_row);
101 cn_row.appendChild( document.createElement('label') );
102 var cn_text1 = document.createElement('textbox');
103 cn_text1.setAttribute('size','20');
104 cn_text1.setAttribute('volume_id',ti.getAttribute('volume_id'));
105 cn_text1.setAttribute('value',ti.getAttribute('callnumber'));
106 cn_row.appendChild( cn_text1 );
107 cn_text1.disabled = true;
108 var cn_text2 = document.createElement('textbox');
109 cn_text2.setAttribute('size','4');
110 cn_text2.setAttribute('value','0');
111 cn_row.appendChild( cn_text2 );
114 function page3_add_volume_row(id,data) {
115 if (data.length>0) { } else { return; }
116 var rows = document.getElementById('page3_rows');
117 var org_row = document.createElement('row');
118 rows.appendChild(org_row);
119 var org_label = document.createElement('label');
120 org_label.setAttribute('value',data[0].name);
121 org_row.appendChild(org_label);
122 for (var i in data) {
123 var callnumber = data[i].callnumber;
124 var desired_copies = data[i].copies;
125 var cn_row = document.createElement('row');
126 rows.appendChild(cn_row);
127 var cn_box = document.createElement('hbox');
128 cn_row.appendChild(cn_box);
129 cn_box.appendChild( document.createElement('spacer') );
130 var cn_label = document.createElement('label');
131 cn_label.setAttribute('value',callnumber);
132 cn_box.appendChild(cn_label);
133 for (var c = 0; c < desired_copies; c++) {
134 var bc_row = document.createElement('row');
135 rows.appendChild(bc_row);
136 bc_row.appendChild( document.createElement('label') );
137 var bc_text = document.createElement('textbox');
138 bc_text.setAttribute('size','15');
139 bc_text.setAttribute('ou_name',data[i].name);
140 bc_text.setAttribute('ou_id',id);
141 bc_text.setAttribute('volume_id',data[i].volume_id);
142 bc_text.setAttribute('callnumber',callnumber);
143 bc_row.appendChild(bc_text);
148 function page_four_add_volume_row(name,callnumber,barcode) {
149 mw.sdump('D_CAT','xul: name = ' + name + ' cn = ' + callnumber + ' bc = ' + barcode + '\n');
150 var listbox = document.getElementById('ephemeral_listbox');
151 var listitem = document.createElement('listitem');
152 listbox.appendChild(listitem);
153 var listcell1 = document.createElement('listcell');
154 listcell1.setAttribute('label',name);
155 listitem.appendChild(listcell1);
156 var listcell2 = document.createElement('listcell');
157 listcell2.setAttribute('label',callnumber);
158 listitem.appendChild(listcell2);
159 var listcell3 = document.createElement('listcell');
160 listcell3.setAttribute('label',barcode);
161 listitem.appendChild(listcell3);
165 function build_page_one() {
166 mw.sdump('D_CAT','build_page_one\n');
167 for (var i in tree_items) {
168 var ti = tree_items[i];
169 switch( ti.getAttribute('object_type') ) {
171 if (params.shortcut == 'volume_add') {
172 var id = ti.getAttribute('id').split('_')[2];
173 var ou = mw.G.org_tree_hash[id];
174 var check_ou = check_volume_ou_perm( id );
176 page1_add_volume_row( check_ou );
184 function build_page_two() {
185 mw.sdump('D_CAT','build_page_two\n');
186 for (var i in tree_items) {
187 var ti = tree_items[i];
188 mw.sdump('D_CAT','Considering item with object_type = ' + ti.getAttribute('object_type') + '\n');
189 switch( ti.getAttribute('object_type') ) {
191 var id = ti.getAttribute('id').split('_')[2];
192 var ou = mw.G.org_tree_hash[id];
193 var check_ou = check_volume_ou_perm( id );
195 page2_add_volume_row( check_ou, ti );
199 if (params.shortcut == 'copy_add') {
200 var check_ou = find_ou( mw.G.user_ou , ti.getAttribute('ou_id') );
202 copy_add_page2_add_volume_row( check_ou, ti );
210 function build_page_three() {
211 mw.sdump('D_CAT','build_page_three\n');
212 var rows = document.getElementById('page2_rows');
213 for (var i = 0; i < rows.childNodes.length; i++) {
214 var row = rows.childNodes[i];
215 mw.sdump('D_CAT',row + '\n');
216 var ou_id = row.getAttribute('ou_id');
217 var ou_name = row.getAttribute('ou_name');
218 var volume_id = row.getAttribute('volume_id');
220 var call_number = row.childNodes[1].value;
221 if (!call_number) { continue; }
222 var desired_copies = row.childNodes[2].value;
223 if (!data[ou_id]) { data[ou_id] = []; }
226 'callnumber' : call_number,
227 'copies' : desired_copies,
229 'volume_id' : volume_id
234 for (var i in data) {
235 mw.sdump('D_CAT','i: ' + i + ' data[i]: ' + js2JSON(data[i]) + '\n');
236 page3_add_volume_row( i, data[i]);
240 function build_page_four() {
241 mw.sdump('D_CAT','build page four\n');
242 document.getElementById('volume_add').canAdvance = false;
244 var rows = document.getElementById('page3_rows');
245 var nl = rows.getElementsByTagName('textbox');
247 if (typeof(nl[i])=='object') {
249 var ou_id = t.getAttribute('ou_id');
250 var ou_name = t.getAttribute('ou_name');
251 var callnumber = t.getAttribute('callnumber');
252 var volume_id = t.getAttribute('volume_id');
253 var barcode = t.value;
254 //page_four_add_volume_row(ou_name,callnumber,barcode);
255 mw.sdump('D_CAT','t.tagName = ' + t.tagName + ' ou_id = ' + ou_id + ' cn = ' + callnumber + ' volume_id = ' + volume_id + ' bc = ' + barcode + '\n');
256 if (! new_data[ou_id] ) { new_data[ou_id] = {}; }
257 if (! new_data[ou_id][callnumber] ) {
258 new_data[ou_id][callnumber] = [];
260 if (! new_data[ou_id][callnumber]['barcode'] ) {
261 new_data[ou_id][callnumber]['barcode'] = [];
263 new_data[ou_id][callnumber].barcode.push(barcode);
264 if (params.shortcut == 'copy_add') {
265 new_data[ou_id][callnumber].volume_id = volume_id;
270 for (var ou_id in new_data) {
271 for (var cnum in new_data[ou_id]) {
272 //var ou_shortname = find_ou(mw.G['org_tree'],ou_id).shortname();
273 //var ou_shortname = mw.G.org_tree_hash[ou_id].shortname();
276 cn.owning_lib(ou_id);
277 cn.record(record_id);
278 if (params.shortcut == 'volume_add') {
281 } else if (params.shortcut == 'copy_add') {
282 cn.id( new_data[ou_id][cnum].volume_id );
286 for (var c in new_data[ou_id][cnum].barcode) {
290 cp.barcode(new_data[ou_id][cnum].barcode[c]);
291 cp.circ_lib( mw.G.org_tree_hash[ ou_id ]);
292 cn.copies().push(cp);
293 cp.stat_cat_entries( [] );
299 mw.sdump('D_CAT','Final data object: ' + js2JSON(cn_list) + '\n');
300 mw.sdump('D_CAT','Final data object: ' + cn_list + '\n');
301 spawn_local_legacy_copy_editor();
304 function send_to_bill() {
306 var result = user_request(
308 'open-ils.cat.asset.volume_tree.fleshed.batch.update',
309 [ mw.G['auth_ses'][0], cn_list]
311 mw.sdump('D_CAT','volume_tree.fleshed.batch.update result: ' + js2JSON(result) + '\n');
315 refresh_spawning_browse_list();
318 function refresh_spawning_browse_list() {
320 params.refresh_func();
322 mw.sdump('D_CAT','refresh_spawning_browse_list error: ' + js2JSON(E) + '\n');
326 function spawn_local_legacy_copy_editor(tab) {
327 mw.sdump('D_CAT','trying to spawn_copy_editor()\n');
328 var params = { 'select_all' : true };
329 var chrome = 'chrome://evergreen/content/cat/copy.xul';
330 var frame = document.getElementById('page4_iframe');
331 frame.setAttribute('src',chrome);
332 frame.setAttribute('flex','1');
333 frame.contentWindow.cn_list = cn_list;
334 frame.contentWindow.mw = mw;
335 frame.contentWindow.real_parentWindow = this;
336 frame.contentWindow.parentWindow = window.app_shell;
337 frame.contentWindow.params = params;
340 function backup_data() {
344 function restore_data() {
348 function check_volume_ou_perm(id) {
349 var top_ou = mw.G.org_tree_hash[ mw.G.user_ou.id() ];
350 var check_ou = find_ou(top_ou, id);
354 // ***************************************************** Batch Volume Edit
356 function volume_edit_init() {
357 mw.sdump('D_CAT','TESTING: volume.js: ' + mw.G['main_test_variable'] + '\n');
358 build_batch_edit_page1();
359 listen_for_enter('volume_edit');
362 function build_batch_edit_page1() {
363 var rows = document.getElementById('page1_rows');
367 for (var i = 0; i < tree_items.length; i++) {
368 var volume = tree_items[i];
369 if (! org[ volume.getAttribute('ou_id') ] ) {
370 org[ volume.getAttribute('ou_id') ] = new Array();
372 org[ volume.getAttribute('ou_id') ].push( volume );
376 var row = document.createElement('row');
377 rows.appendChild(row);
378 var lib = document.createElement('label');
379 row.appendChild(lib);
380 lib.setAttribute( 'value', mw.G.org_tree_hash[i].shortname() );
382 for (var j = 0; j < org[i].length; j++) {
383 var volume = org[i][j];
385 var vrow = document.createElement('row');
386 rows.appendChild(vrow);
387 vrow.appendChild( document.createElement('label') );
389 var t = document.createElement('textbox');
390 vrow.appendChild( t );
391 t.value = volume.getAttribute('callnumber');
392 t.setAttribute( 'original', volume.getAttribute('callnumber') );
393 t.setAttribute( 'volume_id', volume.getAttribute('volume_id') );
398 function submit_edited_volumes() {
399 var nl = document.getElementsByTagName('textbox');
400 for (var i = 0; i < nl.length; i++) {
402 if (t.getAttribute('original') == t.value) continue;
404 cn.id( t.getAttribute('volume_id') );