1 dump('entering admin.transit_list.js\n');
3 if (typeof admin == 'undefined') admin = {};
4 admin.transit_list = function (params) {
6 JSAN.use('util.error'); this.error = new util.error();
7 JSAN.use('util.network'); this.network = new util.network();
9 JSAN.use('OpenILS.data'); this.data = new OpenILS.data(); this.data.init({'via':'stash'});
12 admin.transit_list.prototype = {
14 'init' : function( params ) {
19 obj.controller_init();
24 'kick_off' : function() {
27 obj.network.simple_request('FM_ATC_RETRIEVE_VIA_AOU',[ ses(), obj.data.list.au[ 0 ].ws_ou() ],
30 var robj = req.getResultObject();
31 if (typeof robj.ilsevent != 'undefined') throw(robj);
33 JSAN.use('util.exec');
34 var exec = new util.exec(2);
35 var exec2 = new util.exec(2);
37 function gen_list_append(id,which_list) {
40 case 0: obj.list.append( { 'row' : { 'my' : { 'transit_id' : id } } } ); break;
41 case 1: obj.list2.append( { 'row' : { 'my' : { 'transit_id' : id } } } ); break;
46 var rows = []; var rows2 = [];
48 for (var i = 0; i < robj.from.length; i++) {
49 //get_transit(robj.from[i], 0);
50 rows.push( gen_list_append(robj.from[i],0) );
53 for (var i = 0; i < robj.to.length; i++) {
54 //get_transit(robj.to[i], 1);
55 rows2.push( gen_list_append(robj.to[i],1) );
62 try { obj.error.standard_unexpected_error_alert('retrieving transits',E); } catch(F) { alert(E); }
67 try { obj.error.standard_unexpected_error_alert('pre-retrieving transits',E); } catch(F) { alert(E); }
71 'list_init' : function() {
75 obj.selection_list = [];
76 obj.selection_list2 = [];
78 JSAN.use('circ.util');
79 var columns = circ.util.transit_columns(
81 'transit_source' : { 'hidden' : false },
82 'transit_source_send_time' : { 'hidden' : false },
83 'transit_dest_lib' : { 'hidden' : false },
84 'transit_item_barcode' : { 'hidden' : false },
85 'transit_item_title' : { 'hidden' : false },
91 'transit_source_send_time',
93 'transit_item_barcode',
95 'transit_item_author',
96 'transit_item_callnumber',
97 'transit_target_copy',
101 circ.util.hold_columns(
103 'request_time' : { 'hidden' : false },
119 JSAN.use('util.list');
120 obj.list = new util.list('transit_from');
124 'map_row_to_column' : circ.util.std_map_row_to_column(),
125 'retrieve_row' : function(params) {
126 var row = params.row;
128 obj.get_transit_and_hold_and_run_func(
130 function(transit,hold) { return obj.get_rest_of_row_given_transit_and_hold(params,transit,hold); }
133 try { obj.error.standard_unexpected_error_alert('retrieving row',E); } catch(F) { alert(E); }
136 'on_select' : function(ev) {
138 JSAN.use('util.functional');
139 var sel = obj.list.retrieve_selection();
140 obj.selection_list = util.functional.map_list(
142 function(o) { return JSON2js(o.getAttribute('retrieve_id')); }
144 obj.error.sdump('D_TRACE','admin.transit_list: selection list = ' + js2JSON(obj.selection_list) );
145 if (obj.selection_list.length == 0) {
146 obj.controller.view.sel_edit.setAttribute('disabled','true');
147 obj.controller.view.sel_opac.setAttribute('disabled','true');
148 obj.controller.view.sel_bucket.setAttribute('disabled','true');
149 obj.controller.view.sel_copy_details.setAttribute('disabled','true');
150 obj.controller.view.sel_patron.setAttribute('disabled','true');
151 obj.controller.view.sel_transit_abort.setAttribute('disabled','true');
152 obj.controller.view.sel_clip.setAttribute('disabled','true');
154 obj.controller.view.sel_edit.setAttribute('disabled','false');
155 obj.controller.view.sel_opac.setAttribute('disabled','false');
156 obj.controller.view.sel_patron.setAttribute('disabled','false');
157 obj.controller.view.sel_bucket.setAttribute('disabled','false');
158 obj.controller.view.sel_copy_details.setAttribute('disabled','false');
159 obj.controller.view.sel_transit_abort.setAttribute('disabled','false');
160 obj.controller.view.sel_clip.setAttribute('disabled','false');
163 alert('FIXME: ' + E);
168 obj.list2 = new util.list('transit_to');
172 'map_row_to_column' : circ.util.std_map_row_to_column(),
173 'retrieve_row' : function(params) {
174 var row = params.row;
176 obj.get_transit_and_hold_and_run_func(
178 function(transit,hold) { return obj.get_rest_of_row_given_transit_and_hold(params,transit,hold); }
181 try { obj.error.standard_unexpected_error_alert('retrieving row',E); } catch(F) { alert(E); }
184 'on_select' : function(ev) {
186 JSAN.use('util.functional');
187 var sel = obj.list2.retrieve_selection();
188 obj.selection_list2 = util.functional.map_list(
190 function(o) { return JSON2js(o.getAttribute('retrieve_id')); }
192 obj.error.sdump('D_TRACE','admin.transit_list: selection list2 = ' + js2JSON(obj.selection_list2) );
193 if (obj.selection_list2.length == 0) {
194 obj.controller.view.sel_edit2.setAttribute('disabled','true');
195 obj.controller.view.sel_opac2.setAttribute('disabled','true');
196 obj.controller.view.sel_bucket2.setAttribute('disabled','true');
197 obj.controller.view.sel_copy_details2.setAttribute('disabled','true');
198 obj.controller.view.sel_patron2.setAttribute('disabled','true');
199 obj.controller.view.sel_transit_abort2.setAttribute('disabled','true');
200 obj.controller.view.sel_clip2.setAttribute('disabled','true');
202 obj.controller.view.sel_edit2.setAttribute('disabled','false');
203 obj.controller.view.sel_opac2.setAttribute('disabled','false');
204 obj.controller.view.sel_patron2.setAttribute('disabled','false');
205 obj.controller.view.sel_bucket2.setAttribute('disabled','false');
206 obj.controller.view.sel_copy_details2.setAttribute('disabled','false');
207 obj.controller.view.sel_transit_abort2.setAttribute('disabled','false');
208 obj.controller.view.sel_clip2.setAttribute('disabled','false');
211 alert('FIXME: ' + E);
219 'get_transit_and_hold_and_run_func' : function (transit_id,do_this) {
221 obj.network.simple_request('FM_ATC_RETRIEVE', [ ses(), transit_id ],
224 var r_atc = req2.getResultObject();
225 if (typeof r_atc.ilsevent != 'undefined') throw(r_atc);
227 if (instanceOf(r_atc,atc)) {
229 } else if (instanceOf(r_atc,ahtc)) {
230 obj.network.simple_request('FM_AHR_RETRIEVE', [ ses(), r_atc.hold() ],
233 var r_ahr = req3.getResultObject();
234 if (typeof r_ahr.ilsevent != 'undefined') throw(r_ahr);
235 if (instanceOf(r_ahr[0],ahr)) {
236 do_this(r_atc,r_ahr[0]);
241 try { obj.error.standard_unexpected_error_alert('retrieving hold id = ' + r_atc.hold() + ' for transit id = ' + transit_id,E); } catch(F) { alert(E); }
250 try { obj.error.standard_unexpected_error_alert('retrieving transit id = ' + transit_id,E); } catch(F) { alert(E); }
256 'get_rest_of_row_given_transit_and_hold' : function(params,transit,hold) {
258 var row = params.row;
260 row.my.atc = transit;
261 if (hold) row.my.ahr = hold;
263 obj.network.simple_request(
265 [ row.my.atc.target_copy() ],
268 var r_acp = req.getResultObject();
269 if (typeof r_acp.ilsevent != 'undefined') throw(r_acp);
272 obj.network.simple_request(
274 [ r_acp.call_number() ],
277 var r_acn = req2.getResultObject();
278 if (typeof r_acn.ilsevent != 'undefined') throw(r_acn);
281 if (row.my.acn.record() > 0) {
282 obj.network.simple_request(
283 'MODS_SLIM_RECORD_RETRIEVE',
287 var r_mvr = req3.getResultObject();
288 if (typeof r_mvr.ilsevent != 'undefined') throw(r_mvr);
291 params.row_node.setAttribute(
292 'retrieve_id', js2JSON( {
293 'copy_id' : row.my.acp ? row.my.acp.id() : null,
294 'doc_id' : row.my.mvr ? row.my.mvr.doc_id() : null,
295 'barcode' : row.my.acp ? row.my.acp.barcode() : null,
296 'acp_id' : row.my.acp ? row.my.acp.id() : null,
297 'acn_id' : row.my.acn ? row.my.acn.id() : null,
298 'atc_id' : row.my.atc ? row.my.atc.id() : null,
299 'ahr_id' : row.my.ahr ? row.my.ahr.id() : null,
302 if (typeof params.on_retrieve == 'function') {
303 params.on_retrieve(row);
306 try { obj.error.standard_unexpected_error_alert('retrieving mvr',E); } catch(F) { alert(E); }
311 params.row_node.setAttribute(
312 'retrieve_id', js2JSON( {
313 'copy_id' : row.my.acp ? row.my.acp.id() : null,
314 'doc_id' : row.my.mvr ? row.my.mvr.doc_id() : null,
315 'barcode' : row.my.acp ? row.my.acp.barcode() : null,
316 'acp_id' : row.my.acp ? row.my.acp.id() : null,
317 'acn_id' : row.my.acn ? row.my.acn.id() : null,
318 'atc_id' : row.my.atc ? row.my.atc.id() : null,
319 'ahr_id' : row.my.ahr ? row.my.ahr.id() : null,
322 if (typeof params.on_retrieve == 'function') {
323 params.on_retrieve(row);
328 try { obj.error.standard_unexpected_error_alert('retrieving acn',E); } catch(F) { alert(E); }
335 try { obj.error.standard_unexpected_error_alert('retrieving acp',E); } catch(F) { alert(E); }
341 'controller_init' : function() {
344 JSAN.use('util.controller'); obj.controller = new util.controller();
348 'save_columns' : [ [ 'command' ], function() { obj.list.save_columns(); } ],
349 'save_columns2' : [ [ 'command' ], function() { obj.list2.save_columns(); } ],
350 'sel_clip' : [ ['command'], function() { obj.list.clipboard(); } ],
351 'sel_clip2' : [ ['command'], function() { obj.list2.clipboard(); } ],
352 'sel_edit' : [ ['command'], function() { try { obj.spawn_copy_editor(0); } catch(E) { alert(E); } } ],
353 'sel_edit2' : [ ['command'], function() { try { obj.spawn_copy_editor(1); } catch(E) { alert(E); } } ],
354 'sel_opac' : [ ['command'], function() { JSAN.use('cat.util'); cat.util.show_in_opac(obj.selection_list); } ],
355 'sel_opac2' : [ ['command'], function() { JSAN.use('cat.util'); cat.util.show_in_opac(obj.selection_list2); } ],
356 'sel_transit_abort' : [ ['command'], function() { JSAN.use('circ.util'); circ.util.abort_transits(obj.selection_list); } ],
357 'sel_transit_abort2' : [ ['command'], function() { JSAN.use('circ.util'); circ.util.abort_transits(obj.selection_list2); } ],
358 'sel_patron' : [ ['command'], function() { JSAN.use('circ.util'); circ.util.show_last_few_circs(obj.selection_list); } ],
359 'sel_patron2' : [ ['command'], function() { JSAN.use('circ.util'); circ.util.show_last_few_circs(obj.selection_list2); } ],
360 'sel_copy_details' : [ ['command'], function() { JSAN.use('circ.util'); for (var i = 0; i < obj.selection_list.length; i++) { circ.util.show_copy_details( obj.selection_list[i].copy_id ); } } ],
361 'sel_copy_details2' : [ ['command'], function() { JSAN.use('circ.util'); for (var i = 0; i < obj.selection_list2.length; i++) { circ.util.show_copy_details( obj.selection_list2[i].copy_id ); } } ],
362 'sel_bucket' : [ ['command'], function() { JSAN.use('cat.util'); cat.util.add_copies_to_bucket(obj.selection_list); } ],
363 'sel_bucket2' : [ ['command'], function() { JSAN.use('cat.util'); cat.util.add_copies_to_bucket(obj.selection_list2); } ],
364 'cmd_print_list' : [ ['command'], function() { obj.print_list(0); } ],
365 'cmd_print_list2' : [ ['command'], function() { obj.print_list(1); } ],
369 this.controller.render();
373 'print_list' : function(which_list) {
377 var list = which_list == 0 ? obj.list : obj.list2;
379 if (list.on_all_fleshed != null) {
380 var r = window.confirm('This list is busy retrieving/rendering rows for a pending action. Would you like to abort the pending action and proceed?');
383 list.on_all_fleshed =
386 dump( js2JSON( list.dump_with_keys() ) + '\n' );
387 obj.data.stash_retrieve();
388 var lib = obj.data.hash.aou[ obj.data.list.au[0].ws_ou() ];
392 'staff' : obj.data.list.au[0],
393 'header' : obj.data.print_list_templates.transit_list.header,
394 'line_item' : obj.data.print_list_templates.transit_list.line_item,
395 'footer' : obj.data.print_list_templates.transit_list.footer,
396 'type' : obj.data.print_list_templates.transit_list.type,
397 'list' : list.dump_with_keys(),
399 JSAN.use('util.print'); var print = new util.print();
400 print.tree_list( p );
401 setTimeout(function(){ list.on_all_fleshed = null; },0);
403 obj.error.standard_unexpected_error_alert('print',E);
406 list.full_retrieve();
408 obj.error.standard_unexpected_error_alert('print',E);
412 'spawn_copy_editor' : function(which_list) {
414 /* FIXME - a lot of redundant calls here */
418 JSAN.use('util.widgets'); JSAN.use('util.functional');
420 var list = which_list == 0 ? obj.selection_list : obj.selection_list2;
422 list = util.functional.map_list(
429 var copies = util.functional.map_list(
432 return obj.network.simple_request('FM_ACP_RETRIEVE',[acp_id]);
438 edit = obj.network.request(
439 api.PERM_MULTI_ORG_CHECK.app,
440 api.PERM_MULTI_ORG_CHECK.method,
443 obj.data.list.au[0].id(),
444 util.functional.map_list(
447 return o.call_number() == -1 ? o.circ_lib() : obj.network.simple_request('FM_ACN_RETRIEVE',[o.call_number()]).owning_lib();
450 copies.length == 1 ? [ 'UPDATE_COPY' ] : [ 'UPDATE_COPY', 'UPDATE_BATCH_COPY' ]
452 ).length == 0 ? 1 : 0;
454 obj.error.sdump('D_ERROR','batch permission check: ' + E);
457 JSAN.use('cat.util'); cat.util.spawn_copy_editor(list,edit);
463 dump('exiting admin.transit_list.js\n');