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_barcode_entry_textbox' : [
54 if (ev.keyCode && ev.keyCode == 13) {
59 'in_house_use_multiplier_label' : [
63 obj.controller.view.in_house_use_multiplier_textbox.select();
64 obj.controller.view.in_house_use_multiplier_textbox.value = 1;
68 'in_house_use_multiplier_textbox' : [
71 if (ev.target.nodeName == 'textbox') {
73 var value = Number(ev.target.value);
75 if (value > 99) ev.target.value = 99;
80 dump('in_house_use:multiplier: ' + E + '\n');
88 function() { alert('Not Yet Implemented'); }
90 'cmd_in_house_use_submit_barcode' : [
96 'cmd_in_house_use_print' : [
99 obj.list.on_all_fleshed = function() {
101 dump( js2JSON( obj.list.dump() ) + '\n' );
102 obj.data.stash_retrieve();
103 var lib = obj.data.hash.aou[ obj.data.list.au[0].ws_ou() ];
107 'staff' : obj.data.list.au[0],
108 'header' : obj.data.print_list_templates.in_house_use.header,
109 'line_item' : obj.data.print_list_templates.in_house_use.line_item,
110 'footer' : obj.data.print_list_templates.in_house_use.footer,
111 'type' : obj.data.print_list_templates.in_house_use.type,
112 'list' : obj.list.dump(),
114 JSAN.use('util.print'); var print = new util.print();
115 print.tree_list( p );
116 setTimeout(function(){obj.list.on_all_fleshed = null;},0);
121 obj.list.full_retrieve();
124 'cmd_in_house_use_reprint' : [
129 'cmd_in_house_use_done' : [
137 this.controller.render();
138 this.controller.view.in_house_use_barcode_entry_textbox.focus();
142 'in_house_use' : function() {
145 var barcode = obj.controller.view.in_house_use_barcode_entry_textbox.value;
146 var multiplier = Number( obj.controller.view.in_house_use_multiplier_textbox.value );
149 obj.controller.view.in_house_use_barcode_entry_textbox.focus();
153 if (multiplier == 0 || multiplier > 99) {
154 obj.controller.view.in_house_use_multiplier_textbox.focus();
155 obj.controller.view.in_house_use_multiplier_textbox.select();
159 if (multiplier > 20) {
160 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.');
162 obj.controller.view.in_house_use_multiplier_textbox.focus();
163 obj.controller.view.in_house_use_multiplier_textbox.select();
168 JSAN.use('circ.util');
170 var copy = obj.network.simple_request('FM_ACP_RETRIEVE_VIA_BARCODE',[ barcode ]);
172 switch(copy.ilsevent) {
173 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;
174 case 1502: obj.error.yns_alert(copy.textcode,'In House Use Failed','Ok',null,null,'Check here to confirm this message'); break;
175 default: throw(copy);
180 var mods = obj.network.simple_request('MODS_SLIM_RECORD_RETRIEVE_VIA_COPY',[ copy.id() ]);
181 var result = obj.network.simple_request('FM_AIHU_CREATE',
182 [ ses(), { 'copyid' : copy.id(), 'location' : obj.data.list.au[0].ws_ou(), 'count' : multiplier } ]
191 'uses' : result.length,
194 //I could override map_row_to_column here
197 if (typeof obj.on_in_house_use == 'function') {
198 obj.on_in_house_use(result);
200 if (typeof window.xulG == 'object' && typeof window.xulG.on_in_house_use == 'function') {
201 obj.error.sdump('D_CIRC','circ.in_house_use: Calling external .on_in_house_use()\n');
202 window.xulG.on_in_house_use(result);
204 obj.error.sdump('D_CIRC','circ.in_house_use: No external .on_in_house_use()\n');
208 obj.error.standard_unexpected_error_alert('In House Use Failed',E);
209 if (typeof obj.on_failure == 'function') {
212 if (typeof window.xulG == 'object' && typeof window.xulG.on_failure == 'function') {
213 obj.error.sdump('D_CIRC','circ.in_house_use: Calling external .on_failure()\n');
214 window.xulG.on_failure(E);
216 obj.error.sdump('D_CIRC','circ.in_house_use: No external .on_failure()\n');
222 'on_in_house_use' : function() {
223 this.controller.view.in_house_use_multiplier_textbox.select();
224 this.controller.view.in_house_use_multiplier_textbox.value = '1';
225 this.controller.view.in_house_use_barcode_entry_textbox.value = '';
226 this.controller.view.in_house_use_barcode_entry_textbox.focus();
229 'on_failure' : function() {
230 this.controller.view.in_house_use_barcode_entry_textbox.select();
231 this.controller.view.in_house_use_barcode_entry_textbox.focus();
235 dump('exiting circ.in_house_use.js\n');