1 dump('entering circ.in_house_use.js\n');
4 if (typeof circ == 'undefined') circ = {};
5 circ.in_house_use = function (params) {
7 JSAN.use('util.error'); this.error = new util.error();
8 JSAN.use('util.network'); this.network = new util.network();
9 JSAN.use('util.barcode');
10 JSAN.use('util.date');
11 JSAN.use('OpenILS.data'); this.data = new OpenILS.data(); this.data.init({'via':'stash'});
12 JSAN.use('util.sound'); this.sound = new util.sound();
15 circ.in_house_use.prototype = {
17 'init' : function( params ) {
21 obj.entry_cap = Number( obj.data.hash.aous['ui.circ.in_house_use.entry_cap'] ) || 99;
22 obj.entry_warn = Number( obj.data.hash.aous['ui.circ.in_house_use.entry_warn'] ) || 20;
24 JSAN.use('circ.util');
25 var columns = circ.util.columns(
27 'barcode' : { 'hidden' : false },
28 'title' : { 'hidden' : false },
29 'status' : { 'hidden' : false },
30 'location' : { 'hidden' : false },
31 'call_number' : { 'hidden' : false },
32 'uses' : { 'hidden' : false }
36 JSAN.use('util.list'); obj.list = new util.list('in_house_use_list');
40 'map_row_to_columns' : circ.util.std_map_row_to_columns(),
41 'on_select' : function() {
42 var sel = obj.list.retrieve_selection();
43 obj.controller.view.sel_clip.setAttribute('disabled', sel.length < 1);
48 JSAN.use('util.controller'); obj.controller = new util.controller();
52 'save_columns' : [ [ 'command' ], function() { obj.list.save_columns(); } ],
57 obj.controller.view.in_house_use_barcode_entry_textbox.focus();
60 'in_house_use_menu_placeholder' : [
64 JSAN.use('util.widgets'); JSAN.use('util.functional'); JSAN.use('util.fm_utils');
65 var items = [ [ document.getElementById('circStrings').getString('staff.circ.in_house_use.barcode') , 'barcode' ] ].concat(
66 util.functional.map_list(
67 util.functional.filter_list(
68 obj.data.list.my_cnct,
70 return util.fm_utils.compare_aou_a_is_b_or_ancestor(o.owning_lib(), obj.data.list.au[0].ws_ou());
76 return util.fm_utils.sort_func_aou_by_depth_and_then_string(
77 [ a.owning_lib(), a.name() ],
78 [ b.owning_lib(), b.name() ]
81 alert(document.getElementById('circStrings').getString('staff.circ.in_house_use.noncat_sort_error') + ' ' + E);
88 return [ obj.data.hash.aou[ o.owning_lib() ].shortname() + ' : ' + o.name(), o.id() ];
92 g.error.sdump('D_TRACE', document.getElementById('circStrings').getString('staff.circ.in_house_use.items_dump') + js2JSON(items));
93 util.widgets.remove_children( e );
94 var ml = util.widgets.make_menulist(
98 ml.setAttribute('id','in_house_use_menulist');
99 ml.setAttribute('accesskey','');
103 var tb = obj.controller.view.in_house_use_barcode_entry_textbox;
104 if (ev.target.value == 'barcode') {
110 tb.value = document.getElementById('circStrings').getString('staff.circ.in_house_use.noncataloged');
114 obj.controller.view.in_house_use_menu = ml;
118 'in_house_use_barcode_entry_textbox' : [
121 if (ev.keyCode && ev.keyCode == 13) {
126 'in_house_use_multiplier_label' : [
130 obj.controller.view.in_house_use_multiplier_textbox.select();
131 obj.controller.view.in_house_use_multiplier_textbox.value = 1;
135 'in_house_use_multiplier_textbox' : [
138 if (ev.target.nodeName == 'textbox') {
140 var value = Number(ev.target.value);
142 if (value > obj.entry_cap) { throw(value); }
147 dump('in_house_use:multiplier: ' + E + '\n');
148 obj.sound.circ_bad();
151 obj.controller.view.in_house_use_multiplier_textbox.focus();
152 obj.controller.view.in_house_use_multiplier_textbox.select();
161 function() { alert(document.getElementById('circStrings').getString('staff.circ.unimplemented')); }
163 'cmd_in_house_use_submit_barcode' : [
169 'cmd_in_house_use_print' : [
173 'template' : 'in_house_use'
178 'cmd_csv_to_clipboard' : [ ['command'], function() {
179 obj.list.dump_csv_to_clipboard();
180 obj.controller.view.in_house_use_barcode_entry_textbox.focus();
182 'cmd_csv_to_printer' : [ ['command'], function() {
183 obj.list.dump_csv_to_printer();
184 obj.controller.view.in_house_use_barcode_entry_textbox.focus();
186 'cmd_csv_to_file' : [ ['command'], function() {
187 obj.list.dump_csv_to_file( { 'defaultFileName' : 'checked_in.txt' } );
188 obj.controller.view.in_house_use_barcode_entry_textbox.focus();
194 this.controller.render();
195 this.controller.view.in_house_use_barcode_entry_textbox.focus();
199 'test_barcode' : function(bc) {
201 var good = util.barcode.check(bc);
202 var x = document.getElementById('strict_barcode');
203 if (x && x.checked != true) return true;
207 if ( 1 == obj.error.yns_alert(
208 document.getElementById('circStrings').getFormattedString('staff.circ.check_digit.bad', [bc]),
209 document.getElementById('circStrings').getString('staff.circ.barcode.bad'),
210 document.getElementById('circStrings').getString('staff.circ.cancel'),
211 document.getElementById('circStrings').getString('staff.circ.barcode.accept'),
213 document.getElementById('circStrings').getString('staff.circ.confirm'),
214 '/xul/server/skin/media/images/bad_barcode.png'
223 'in_house_use' : function() {
227 if (obj.controller.view.in_house_use_menu.value == '' || obj.controller.view.in_house_use_menu.value == 'barcode') {
228 barcode = obj.controller.view.in_house_use_barcode_entry_textbox.value;
230 if ( obj.test_barcode(barcode) ) { /* good */ } else { /* bad */ return; }
233 barcode = ( obj.controller.view.in_house_use_menu.value );
234 //barcode = obj.data.hash.cnct[ obj.controller.view.in_house_use_menu.value ].name()
236 var multiplier = Number( obj.controller.view.in_house_use_multiplier_textbox.value );
239 obj.controller.view.in_house_use_barcode_entry_textbox.focus();
243 if (multiplier == 0 || multiplier > obj.entry_cap) {
244 obj.controller.view.in_house_use_multiplier_textbox.focus();
245 obj.controller.view.in_house_use_multiplier_textbox.select();
246 obj.sound.circ_bad();
250 if (multiplier > obj.entry_warn) {
251 var r = obj.error.yns_alert(
252 document.getElementById('circStrings').getFormattedString('staff.circ.in_house_use.confirm_multiple', [barcode, multiplier]),
253 document.getElementById('circStrings').getString('staff.circ.in_house_use.confirm_multiple.title'),
254 document.getElementById('circStrings').getString('staff.circ.in_house_use.yes'),
255 document.getElementById('circStrings').getString('staff.circ.in_house_use.no'),
257 document.getElementById('circStrings').getString('staff.circ.confirm.msg')
260 obj.controller.view.in_house_use_multiplier_textbox.focus();
261 obj.controller.view.in_house_use_multiplier_textbox.select();
266 JSAN.use('circ.util');
268 if (obj.controller.view.in_house_use_menu.value == 'barcode') {
270 var copy = obj.network.simple_request('FM_ACP_RETRIEVE_VIA_BARCODE',[ barcode ]);
272 switch(Number(copy.ilsevent)) {
274 obj.error.standard_network_error_alert(document.getElementById('circStrings').getString('staff.circ.in_house_use.failed.verbose'));
276 case 1502 /* ASSET_COPY_NOT_FOUND */ :
279 document.getElementById('circStrings').getString('staff.circ.in_house_use.failed'),
280 document.getElementById('circStrings').getString('staff.circ.in_house_use.ok'),
283 document.getElementById('circStrings').getString('staff.circ.confirm.msg')
292 var mods = obj.network.simple_request('MODS_SLIM_RECORD_RETRIEVE_VIA_COPY.authoritative',[ copy.id() ]);
293 var result = obj.network.simple_request('FM_AIHU_CREATE',
294 [ ses(), { 'copyid' : copy.id(), 'location' : obj.data.list.au[0].ws_ou(), 'count' : multiplier } ]
298 var result = obj.network.simple_request('FM_ANCIHU_CREATE',
299 [ ses(), { 'non_cat_type' : obj.controller.view.in_house_use_menu.value, 'location' : obj.data.list.au[0].ws_ou(), 'count' : multiplier } ]
301 mods = new mvr(); mods.title( obj.data.hash.cnct[ obj.controller.view.in_house_use_menu.value ].name());
302 copy = new acp(); copy.barcode( '' );
305 if (document.getElementById('trim_list')) {
306 var x = document.getElementById('trim_list');
307 if (x.checked) { obj.list.trim_list = 20; } else { obj.list.trim_list = null; }
315 'uses' : result.length
319 //I could override map_row_to_column here
322 obj.sound.circ_good();
324 if (typeof obj.on_in_house_use == 'function') {
325 obj.on_in_house_use(result);
327 if (typeof window.xulG == 'object' && typeof window.xulG.on_in_house_use == 'function') {
328 obj.error.sdump('D_CIRC', + document.getElementById('circStrings').getString('staff.circ.in_house_use.external') + '\n');
329 window.xulG.on_in_house_use(result);
331 obj.error.sdump('D_CIRC', + document.getElementById('circStrings').getString('staff.circ.in_house_use.no_external') + '\n');
335 obj.error.standard_unexpected_error_alert(document.getElementById('circStrings').getString('staff.circ.in_house_use.failed'), E);
336 if (typeof obj.on_failure == 'function') {
339 if (typeof window.xulG == 'object' && typeof window.xulG.on_failure == 'function') {
340 obj.error.sdump('D_CIRC', + document.getElementById('circStrings').getString('staff.circ.in_house_use.on_failure.external') + '\n');
341 window.xulG.on_failure(E);
343 obj.error.sdump('D_CIRC', + document.getElementById('circStrings').getString('staff.circ.in_house_use.on_failure.external') + '\n');
349 'on_in_house_use' : function() {
350 this.controller.view.in_house_use_multiplier_textbox.select();
351 this.controller.view.in_house_use_multiplier_textbox.value = '1';
352 this.controller.view.in_house_use_barcode_entry_textbox.value = '';
353 this.controller.view.in_house_use_barcode_entry_textbox.focus();
356 'on_failure' : function() {
357 this.controller.view.in_house_use_barcode_entry_textbox.select();
358 this.controller.view.in_house_use_barcode_entry_textbox.focus();
362 dump('exiting circ.in_house_use.js\n');