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 );
80 var cn_text3 = document.createElement('textbox');
81 cn_text3.setAttribute('size','4');
82 cn_text3.setAttribute('value','0');
83 cn_row.appendChild( cn_text3 );
87 function copy_add_page2_add_volume_row(ou,ti) {
88 mw.sdump('D_CAT','copy_add_page2_add_volume_row...\n');
89 var rows = document.getElementById('page2_rows');
90 var row = document.getElementById('page2_row_cn_' + ou.id() );
92 row = document.createElement('row');
93 row.setAttribute('id','page2_row_cn' + ou.id() );
94 rows.appendChild(row);
96 var label = document.createElement('label');
97 label.setAttribute('value',ou.name());
98 row.appendChild(label);
99 var cn_row = document.createElement('row');
100 //cn_row.setAttribute('id','p2_'+ou.id());
101 cn_row.setAttribute('ou_name',ou.name());
102 cn_row.setAttribute('ou_id',ou.id());
103 cn_row.setAttribute('volume_id',ti.getAttribute('volume_id'));
104 rows.appendChild(cn_row);
105 cn_row.appendChild( document.createElement('label') );
106 var cn_text1 = document.createElement('textbox');
107 cn_text1.setAttribute('size','20');
108 cn_text1.setAttribute('volume_id',ti.getAttribute('volume_id'));
109 cn_text1.setAttribute('value',ti.getAttribute('callnumber'));
110 cn_row.appendChild( cn_text1 );
111 cn_text1.disabled = true;
112 var cn_text2 = document.createElement('textbox');
113 cn_text2.setAttribute('size','4');
114 cn_text2.setAttribute('value','0');
115 cn_row.appendChild( cn_text2 );
116 var cn_text3 = document.createElement('textbox');
117 cn_text3.setAttribute('size','4');
118 cn_text3.setAttribute('value','0');
119 cn_row.appendChild( cn_text3 );
122 function page3_add_volume_row(id,data) {
123 if (data.length>0) { } else { return; }
124 var rows = document.getElementById('page3_rows');
125 var org_row = document.createElement('row');
126 rows.appendChild(org_row);
127 var org_label = document.createElement('label');
128 org_label.setAttribute('value',data[0].name);
129 org_row.appendChild(org_label);
130 for (var i in data) {
131 var callnumber = data[i].callnumber;
132 var desired_copies = data[i].copies;
133 var cn_row = document.createElement('row');
134 rows.appendChild(cn_row);
135 var cn_box = document.createElement('hbox');
136 cn_row.appendChild(cn_box);
137 cn_box.appendChild( document.createElement('spacer') );
138 var cn_label = document.createElement('label');
139 cn_label.setAttribute('value',callnumber);
140 cn_box.appendChild(cn_label);
141 for (var c = 0; c < desired_copies; c++) {
142 var bc_row = document.createElement('row');
143 rows.appendChild(bc_row);
144 bc_row.appendChild( document.createElement('label') );
145 var bc_text = document.createElement('textbox');
146 bc_text.setAttribute('size','15');
147 bc_text.setAttribute('ou_name',data[i].name);
148 bc_text.setAttribute('ou_id',id);
149 bc_text.setAttribute('volume_id',data[i].volume_id);
150 bc_text.setAttribute('callnumber',callnumber);
151 bc_row.appendChild(bc_text);
156 function page_four_add_volume_row(name,callnumber,barcode) {
157 mw.sdump('D_CAT','xul: name = ' + name + ' cn = ' + callnumber + ' bc = ' + barcode + '\n');
158 var listbox = document.getElementById('ephemeral_listbox');
159 var listitem = document.createElement('listitem');
160 listbox.appendChild(listitem);
161 var listcell1 = document.createElement('listcell');
162 listcell1.setAttribute('label',name);
163 listitem.appendChild(listcell1);
164 var listcell2 = document.createElement('listcell');
165 listcell2.setAttribute('label',callnumber);
166 listitem.appendChild(listcell2);
167 var listcell3 = document.createElement('listcell');
168 listcell3.setAttribute('label',barcode);
169 listitem.appendChild(listcell3);
173 function build_page_one() {
174 mw.sdump('D_CAT','build_page_one\n');
175 for (var i in tree_items) {
176 var ti = tree_items[i];
177 switch( ti.getAttribute('object_type') ) {
179 if (params.shortcut == 'volume_add') {
180 var id = ti.getAttribute('id').split('_')[2];
181 var ou = mw.G.org_tree_hash[id];
182 var check_ou = check_volume_ou_perm( id );
184 page1_add_volume_row( check_ou );
192 function build_page_two() {
193 mw.sdump('D_CAT','build_page_two\n');
194 for (var i in tree_items) {
195 var ti = tree_items[i];
196 mw.sdump('D_CAT','Considering item with object_type = ' + ti.getAttribute('object_type') + '\n');
197 switch( ti.getAttribute('object_type') ) {
199 var id = ti.getAttribute('id').split('_')[2];
200 var ou = mw.G.org_tree_hash[id];
201 var check_ou = check_volume_ou_perm( id );
203 page2_add_volume_row( check_ou, ti );
207 if (params.shortcut == 'copy_add') {
208 var check_ou = find_ou( mw.G.user_ou , ti.getAttribute('ou_id') );
210 copy_add_page2_add_volume_row( check_ou, ti );
218 function build_page_three() {
219 mw.sdump('D_CAT','build_page_three\n');
220 var rows = document.getElementById('page2_rows');
221 for (var i = 0; i < rows.childNodes.length; i++) {
222 var row = rows.childNodes[i];
223 mw.sdump('D_CAT',row + '\n');
224 var ou_id = row.getAttribute('ou_id');
225 var ou_name = row.getAttribute('ou_name');
226 var volume_id = row.getAttribute('volume_id');
228 var call_number = row.childNodes[1].value;
229 if (!call_number) { continue; }
230 var desired_copies = row.childNodes[2].value;
231 if (!data[ou_id]) { data[ou_id] = []; }
234 'callnumber' : call_number,
235 'copies' : desired_copies,
237 'volume_id' : volume_id
242 for (var i in data) {
243 mw.sdump('D_CAT','i: ' + i + ' data[i]: ' + js2JSON(data[i]) + '\n');
244 page3_add_volume_row( i, data[i]);
248 function build_page_four() {
249 mw.sdump('D_CAT','build page four\n');
250 document.getElementById('volume_add').canAdvance = false;
252 var rows = document.getElementById('page3_rows');
253 var nl = rows.getElementsByTagName('textbox');
255 if (typeof(nl[i])=='object') {
257 var ou_id = t.getAttribute('ou_id');
258 var ou_name = t.getAttribute('ou_name');
259 var callnumber = t.getAttribute('callnumber');
260 var volume_id = t.getAttribute('volume_id');
261 var barcode = t.value;
262 //page_four_add_volume_row(ou_name,callnumber,barcode);
263 mw.sdump('D_CAT','t.tagName = ' + t.tagName + ' ou_id = ' + ou_id + ' cn = ' + callnumber + ' volume_id = ' + volume_id + ' bc = ' + barcode + '\n');
264 if (! new_data[ou_id] ) { new_data[ou_id] = {}; }
265 if (! new_data[ou_id][callnumber] ) {
266 new_data[ou_id][callnumber] = [];
268 if (! new_data[ou_id][callnumber]['barcode'] ) {
269 new_data[ou_id][callnumber]['barcode'] = [];
271 new_data[ou_id][callnumber].barcode.push(barcode);
272 if (params.shortcut == 'copy_add') {
273 new_data[ou_id][callnumber].volume_id = volume_id;
278 for (var ou_id in new_data) {
279 for (var cnum in new_data[ou_id]) {
280 //var ou_shortname = find_ou(mw.G['org_tree'],ou_id).shortname();
281 //var ou_shortname = mw.G.org_tree_hash[ou_id].shortname();
284 cn.owning_lib(ou_id);
285 cn.record(record_id);
286 if (params.shortcut == 'volume_add') {
289 } else if (params.shortcut == 'copy_add') {
290 cn.id( new_data[ou_id][cnum].volume_id );
294 for (var c in new_data[ou_id][cnum].barcode) {
298 cp.barcode(new_data[ou_id][cnum].barcode[c]);
299 cp.circ_lib( mw.G.org_tree_hash[ ou_id ]);
300 cn.copies().push(cp);
301 cp.stat_cat_entries( [] );
307 mw.sdump('D_CAT','Final data object: ' + js2JSON(cn_list) + '\n');
308 mw.sdump('D_CAT','Final data object: ' + cn_list + '\n');
309 spawn_local_legacy_copy_editor();
312 function send_to_bill() {
314 var result = user_request(
316 'open-ils.cat.asset.volume_tree.fleshed.batch.update',
317 [ mw.G['auth_ses'][0], cn_list]
319 mw.sdump('D_CAT','volume_tree.fleshed.batch.update result: ' + js2JSON(result) + '\n');
323 refresh_spawning_browse_list();
326 function refresh_spawning_browse_list() {
328 params.refresh_func();
330 mw.sdump('D_CAT','refresh_spawning_browse_list error: ' + js2JSON(E) + '\n');
334 function spawn_local_legacy_copy_editor(tab) {
335 mw.sdump('D_CAT','trying to spawn_copy_editor()\n');
336 var params = { 'select_all' : true };
337 var chrome = 'chrome://evergreen/content/cat/copy.xul';
338 var frame = document.getElementById('page4_iframe');
339 frame.setAttribute('src',chrome);
340 frame.setAttribute('flex','1');
341 frame.contentWindow.cn_list = cn_list;
342 frame.contentWindow.mw = mw;
343 frame.contentWindow.real_parentWindow = this;
344 frame.contentWindow.parentWindow = window.app_shell;
345 frame.contentWindow.params = params;
348 function backup_data() {
352 function restore_data() {
356 function check_volume_ou_perm(id) {
357 var top_ou = mw.G.org_tree_hash[ mw.G.user_ou.id() ];
358 var check_ou = find_ou(top_ou, id);
362 // ***************************************************** Batch Volume Edit
364 function volume_edit_init() {
365 mw.sdump('D_CAT','TESTING: volume.js: ' + mw.G['main_test_variable'] + '\n');
366 build_batch_edit_page1();
367 listen_for_enter('volume_edit');
370 function build_batch_edit_page1() {
371 var rows = document.getElementById('page1_rows');
375 for (var i = 0; i < tree_items.length; i++) {
376 var volume = tree_items[i];
377 if (! org[ volume.getAttribute('ou_id') ] ) {
378 org[ volume.getAttribute('ou_id') ] = new Array();
380 org[ volume.getAttribute('ou_id') ].push( volume );
384 var row = document.createElement('row');
385 rows.appendChild(row);
386 var lib = document.createElement('label');
387 row.appendChild(lib);
388 lib.setAttribute( 'value', mw.G.org_tree_hash[i].shortname() );
390 for (var j = 0; j < org[i].length; j++) {
391 var volume = org[i][j];
393 var vrow = document.createElement('row');
394 rows.appendChild(vrow);
395 vrow.appendChild( document.createElement('label') );
397 var t = document.createElement('textbox');
398 vrow.appendChild( t );
399 t.value = volume.getAttribute('callnumber');
400 t.setAttribute( 'original', volume.getAttribute('callnumber') );
401 t.setAttribute( 'volume_id', volume.getAttribute('volume_id') );
406 function submit_edited_volumes() {
407 var nl = document.getElementsByTagName('textbox');
408 for (var i = 0; i < nl.length; i++) {
410 if (t.getAttribute('original') == t.value) continue;
412 cn.id( t.getAttribute('volume_id') );
420 function spine_labels() {
421 alert('wizard goes here');