1 dump('entering circ.in_house_use.js\n');
3 if (typeof circ == 'undefined') circ = {};
4 circ.in_house_use = 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 circ.in_house_use.prototype = {
14 'init' : function( params ) {
18 JSAN.use('circ.util');
19 var columns = circ.util.columns(
21 'barcode' : { 'hidden' : false },
22 'title' : { 'hidden' : false },
23 'status' : { 'hidden' : false },
24 'location' : { 'hidden' : false },
25 'call_number' : { 'hidden' : false },
26 'uses' : { 'hidden' : false },
30 JSAN.use('util.list'); obj.list = new util.list('in_house_use_list');
34 'map_row_to_column' : circ.util.std_map_row_to_column(),
35 'on_select' : function() {
36 var sel = obj.list.retrieve_selection();
37 document.getElementById('clip_button').disabled = sel.length < 1;
42 JSAN.use('util.controller'); obj.controller = new util.controller();
46 'save_columns' : [ [ 'command' ], function() { obj.list.save_columns(); } ],
49 function() { obj.list.clipboard(); }
51 'in_house_use_menu_placeholder' : [
55 JSAN.use('util.widgets'); JSAN.use('util.functional'); JSAN.use('util.fm_utils');
56 var items = [ [ 'Barcode:' , 'barcode' ] ].concat(
57 util.functional.map_list(
58 util.functional.filter_list(
61 return util.fm_utils.compare_aou_a_is_b_or_ancestor(o.owning_lib(), obj.data.list.au[0].ws_ou());
65 return [ o.name(), o.id() ];
69 g.error.sdump('D_TRACE','items = ' + js2JSON(items));
70 util.widgets.remove_children( e );
71 var ml = util.widgets.make_menulist(
75 ml.setAttribute('id','in_house_use_menulist');
76 ml.setAttribute('accesskey','');
80 var tb = obj.controller.view.in_house_use_barcode_entry_textbox;
81 if (ev.target.value == 'barcode') {
87 tb.value = 'Non-Cataloged';
91 obj.controller.view.in_house_use_menu = ml;
95 'in_house_use_barcode_entry_textbox' : [
98 if (ev.keyCode && ev.keyCode == 13) {
103 'in_house_use_multiplier_label' : [
107 obj.controller.view.in_house_use_multiplier_textbox.select();
108 obj.controller.view.in_house_use_multiplier_textbox.value = 1;
112 'in_house_use_multiplier_textbox' : [
115 if (ev.target.nodeName == 'textbox') {
117 var value = Number(ev.target.value);
119 if (value > 99) ev.target.value = 99;
124 dump('in_house_use:multiplier: ' + E + '\n');
132 function() { alert('Not Yet Implemented'); }
134 'cmd_in_house_use_submit_barcode' : [
140 'cmd_in_house_use_print' : [
143 obj.list.on_all_fleshed = function() {
145 dump( js2JSON( obj.list.dump_with_keys() ) + '\n' );
146 obj.data.stash_retrieve();
147 var lib = obj.data.hash.aou[ obj.data.list.au[0].ws_ou() ];
151 'staff' : obj.data.list.au[0],
152 'header' : obj.data.print_list_templates.in_house_use.header,
153 'line_item' : obj.data.print_list_templates.in_house_use.line_item,
154 'footer' : obj.data.print_list_templates.in_house_use.footer,
155 'type' : obj.data.print_list_templates.in_house_use.type,
156 'list' : obj.list.dump_with_keys(),
158 JSAN.use('util.print'); var print = new util.print();
159 print.tree_list( p );
160 setTimeout(function(){obj.list.on_all_fleshed = null;},0);
165 obj.list.full_retrieve();
168 'cmd_in_house_use_reprint' : [
173 'cmd_in_house_use_done' : [
181 this.controller.render();
182 this.controller.view.in_house_use_barcode_entry_textbox.focus();
186 'in_house_use' : function() {
190 if (obj.controller.view.in_house_use_menu.value == '' || obj.controller.view.in_house_use_menu.value == 'barcode') {
191 barcode = obj.controller.view.in_house_use_barcode_entry_textbox.value;
193 barcode = ( obj.controller.view.in_house_use_menu.value );
194 //barcode = obj.data.hash.cnct[ obj.controller.view.in_house_use_menu.value ].name()
196 var multiplier = Number( obj.controller.view.in_house_use_multiplier_textbox.value );
199 obj.controller.view.in_house_use_barcode_entry_textbox.focus();
203 if (multiplier == 0 || multiplier > 99) {
204 obj.controller.view.in_house_use_multiplier_textbox.focus();
205 obj.controller.view.in_house_use_multiplier_textbox.select();
209 if (multiplier > 20) {
210 var r = obj.error.yns_alert('Are you sure you want to mark ' + barcode + ' as having been used ' + multiplier + ' times?','In-House Use Verification', 'Yes', 'No', null, 'Check here to confirm this message.');
212 obj.controller.view.in_house_use_multiplier_textbox.focus();
213 obj.controller.view.in_house_use_multiplier_textbox.select();
218 JSAN.use('circ.util');
220 if (obj.controller.view.in_house_use_menu.value == 'barcode') {
222 var copy = obj.network.simple_request('FM_ACP_RETRIEVE_VIA_BARCODE',[ barcode ]);
224 switch(copy.ilsevent) {
225 case -1 : obj.error.standard_network_error_alert('In House Use Failed. If you wish to use the offline interface, in the top menubar select Circulation -> Offline Interface'); break;
226 case 1502 /* ASSET_COPY_NOT_FOUND */ : obj.error.yns_alert(copy.textcode,'In House Use Failed','Ok',null,null,'Check here to confirm this message'); break;
227 default: throw(copy);
232 var mods = obj.network.simple_request('MODS_SLIM_RECORD_RETRIEVE_VIA_COPY',[ copy.id() ]);
233 var result = obj.network.simple_request('FM_AIHU_CREATE',
234 [ ses(), { 'copyid' : copy.id(), 'location' : obj.data.list.au[0].ws_ou(), 'count' : multiplier } ]
238 var result = obj.network.simple_request('FM_ANCIHU_CREATE',
239 [ ses(), { 'non_cat_type' : obj.controller.view.in_house_use_menu.value, 'location' : obj.data.list.au[0].ws_ou(), 'count' : multiplier } ]
241 mods = new mvr(); mods.title( obj.data.hash.cnct[ obj.controller.view.in_house_use_menu.value ].name());
242 copy = new acp(); copy.barcode( '' );
251 'uses' : result.length,
255 //I could override map_row_to_column here
259 if (typeof obj.on_in_house_use == 'function') {
260 obj.on_in_house_use(result);
262 if (typeof window.xulG == 'object' && typeof window.xulG.on_in_house_use == 'function') {
263 obj.error.sdump('D_CIRC','circ.in_house_use: Calling external .on_in_house_use()\n');
264 window.xulG.on_in_house_use(result);
266 obj.error.sdump('D_CIRC','circ.in_house_use: No external .on_in_house_use()\n');
270 obj.error.standard_unexpected_error_alert('In House Use Failed',E);
271 if (typeof obj.on_failure == 'function') {
274 if (typeof window.xulG == 'object' && typeof window.xulG.on_failure == 'function') {
275 obj.error.sdump('D_CIRC','circ.in_house_use: Calling external .on_failure()\n');
276 window.xulG.on_failure(E);
278 obj.error.sdump('D_CIRC','circ.in_house_use: No external .on_failure()\n');
284 'on_in_house_use' : function() {
285 this.controller.view.in_house_use_multiplier_textbox.select();
286 this.controller.view.in_house_use_multiplier_textbox.value = '1';
287 this.controller.view.in_house_use_barcode_entry_textbox.value = '';
288 this.controller.view.in_house_use_barcode_entry_textbox.focus();
291 'on_failure' : function() {
292 this.controller.view.in_house_use_barcode_entry_textbox.select();
293 this.controller.view.in_house_use_barcode_entry_textbox.focus();
297 dump('exiting circ.in_house_use.js\n');