1 sdump('D_TRACE','Loading patron_display.js\n');
3 function patron_display_init(p) {
4 sdump('D_PATRON_DISPLAY',"TESTING: patron_display.js: " + mw.G['main_test_variable'] + '\n');
5 sdump('D_CONSTRUCTOR',arg_dump(arguments));
8 // gives: p.clamshell, p.right_panel, p.left_panel
9 patron_display_clamshell_init(p);
11 // gives: p.patron_items, p.redraw_patron_items
12 patron_display_patron_items_init(p);
14 // gives: p.patron_checkout_items, p.redraw_patron_checkout_items
15 patron_display_patron_checkout_items_init(p);
17 // gives: p.patron_holds, p.redraw_patron_holds
18 patron_display_patron_holds_init(p);
20 // gives: p.patron_bills, p.redraw_patron_bills
21 patron_display_patron_bills_init(p);
23 p.set_patron = function (au) {
24 return p._patron = au;
27 p.display_patron = function (au) {
28 if (au) p.set_patron(au);
29 p.redraw_patron_checkout_items();
30 p.redraw_patron_items();
31 p.redraw_patron_holds();
32 p.redraw_patron_bills();
33 return render_fm(p.w.document, { 'au' : p._patron });
36 p.retrieve_patron_via_barcode = function (barcode) {
37 if (!barcode) barcode = patron_get_barcode( p._patron );
38 p.set_patron( retrieve_patron_by_barcode( barcode ) );
39 return p.display_patron();
42 p.retrieve_patron_via_id = function (id) {
43 p.set_patron( retrieve_patron_by_id( id ) );
44 return p.display_patron();
47 p.refresh = function() {
48 if (p._patron) p.retrieve_patron_via_id( p._patron.id() );
51 set_patron_display_widgets(p);
54 if (typeof(p.patron) == 'object') {
58 p.retrieve_patron_via_barcode( p.patron );
61 sdump('D_TRACE_EXIT',arg_dump(arguments));
65 function set_patron_display_widgets(p) {
66 p.commandset_node.getElementsByAttribute('id','cmd_patron_refresh')[0].addEventListener(
74 function gen_func(i) {
75 // because otherwise i would be 5 for each closure
77 p.clamshell.set_second_deck(i);
80 var cmds = [ 'cmd_patron_checkout', 'cmd_patron_items', 'cmd_patron_holds',
81 'cmd_patron_bills', 'cmd_patron_edit', 'cmd_patron_info' ]
83 p.commandset_node.getElementsByAttribute('id',cmds[i])[0].addEventListener(
89 p.commandset_node.getElementsByAttribute('id','cmd_patron_checkout')[0].addEventListener(
92 focus_widget( p.w.document, 'patron_checkout_barcode_entry_textbox' );
96 p.commandset_node.getElementsByAttribute('id','cmd_patron_bills')[0].addEventListener(
99 focus_widget( p.w.document, 'bill_payment_amount_textbox' );
108 function patron_display_clamshell_init(p) {
109 p.clamshell = clam_shell_init( { 'w' : p.w, 'node' : p.clamshell_node, 'debug' : p.app } );
110 p.left_panel = p.clamshell.first_deck;
111 p.right_panel = p.clamshell.second_deck;
114 function patron_display_patron_items_init(p) {
115 p.patron_items = patron_items_init( { 'w' : p.w, 'node' : p.patron_items_node, 'debug' : p.app } );
117 p.redraw_patron_items = function() {
118 p.patron_items.clear_patron_items();
119 if (!p._patron.checkouts()) patron_get_checkouts( p._patron );
120 for (var i = 0; i < p._patron.checkouts().length; i++) {
121 p.patron_items.add_patron_items( [ i ] );
125 p.patron_items.register_patron_items_select_callback(
127 sdump('D_PATRON_DISPLAY','Firing patron_items_select_callback\n');
128 sdump('D_PATRON_DISPLAY','ev.target = ' + ev.target + '\n');
129 var patron_items = get_list_from_tree_selection( p.patron_items.paged_tree.tree );
130 /* grab cover art for selected item? */
133 p.patron_items.register_flesh_patron_items_function(
134 function (treeitem) {
135 sdump('D_PATRON_DISPLAY','Firing flesh_patron_items_function\n');
136 var record_id = treeitem.getAttribute('record_id');
137 p.patron_items.map_patron_items_to_cols( p._patron.checkouts()[ record_id ], treeitem );
140 p.patron_items.register_item_context_builder(
142 sdump('D_PATRON_DISPLAY','Firing context_builder for patron_items\n');
143 sdump('D_PATRON_DISPLAY','ev.target = ' + ev.target + '\np.patron_items.paged_tree.popup = ' + p.patron_items.paged_tree.popup + '\n');
144 empty_widget(p.patron_items.paged_tree.popup);
145 var patron_items = get_list_from_tree_selection( p.patron_items.paged_tree.tree );
146 sdump('D_PATRON_DISPLAY','patron_items.length = ' + patron_items.length + '\n');
149 var menuitem_pi_r = p.patron_items.paged_tree.w.document.createElement('menuitem');
150 p.patron_items.paged_tree.popup.appendChild( menuitem_pi_r );
151 menuitem_pi_r.setAttribute('label',getString('circ.context_renew'));
152 menuitem_pi_r.addEventListener(
155 sdump('D_PATRON_DISPLAY','Firing renew context for patron_items\n');
156 for (var i = 0; i < patron_items.length; i++) {
158 var idx = patron_items[i].getAttribute('record_id');
159 var circ = p._patron.checkouts()[ idx ].circ;
160 alert( js2JSON(renew_by_circ_id( circ.id() )) );
171 var menuitem_pi_c = p.patron_items.paged_tree.w.document.createElement('menuitem');
172 p.patron_items.paged_tree.popup.appendChild( menuitem_pi_c );
173 menuitem_pi_c.setAttribute('label',getString('circ.context_checkin'));
174 menuitem_pi_c.addEventListener(
177 sdump('D_PATRON_DISPLAY','Firing checkin context for patron_items\n');
178 for (var i = 0; i < patron_items.length; i++) {
180 var idx = patron_items[i].getAttribute('record_id');
181 var copy = p._patron.checkouts()[ idx ].copy;
182 checkin_by_copy_barcode( copy.barcode(), null );
193 var menuitem_pi_s = p.patron_items.paged_tree.w.document.createElement('menuseparator');
194 p.patron_items.paged_tree.popup.appendChild( menuitem_pi_s );
197 /*** COPY EDITOR ***/
198 var menuitem_pi_ce = p.patron_items.paged_tree.w.document.createElement('menuitem');
199 p.patron_items.paged_tree.popup.appendChild( menuitem_pi_ce );
200 menuitem_pi_ce.setAttribute('label',getString('circ.context_edit'));
201 menuitem_pi_ce.addEventListener(
204 sdump('D_PATRON_DISPLAY','Firing copy editor context for patron_items\n');
205 for (var i = 0; i < patron_items.length; i++) {
206 sdump('D_PATRON_DISPLAY','Firing copy edit context\n');
213 var menuitem_pi_o = p.patron_items.paged_tree.w.document.createElement('menuitem');
214 p.patron_items.paged_tree.popup.appendChild( menuitem_pi_o );
215 menuitem_pi_o.setAttribute('label',getString('circ.context_opac'));
216 menuitem_pi_o.addEventListener(
219 sdump('D_PATRON_DISPLAY','Firing opac context for patron_items\n');
220 for (var i = 0; i < patron_items.length; i++) {
221 sdump('D_PATRON_DISPLAY','Firing opac context\n');
231 function patron_display_patron_checkout_items_init(p) {
232 p.patron_checkout_items = patron_checkout_items_init( { 'w' : p.w, 'node' : p.patron_checkout_items_node, 'debug' : p.app } );
233 var tb = p.patron_checkout_items_node.getElementsByAttribute('id','patron_checkout_barcode_entry_textbox')[0];
234 var submit_button = p.patron_checkout_items_node.getElementsByAttribute('id','patron_checkout_submit_barcode_button')[0];
238 p.w.document.getElementById('checkout_done').addEventListener(
241 // print receipt call goes here
242 checkouts = []; p.refresh(); tb.focus();
246 p.attempt_checkout = function(barcode) {
248 //if (! is_barcode_valid(barcode) ) throw('Invalid Barcode');
249 var permit_check = checkout_permit( barcode, p._patron.id(), 0 );
250 if (permit_check.status == 0) {
251 var check = checkout_by_copy_barcode( barcode, p._patron.id() );
253 checkouts.push( check );
254 p.patron_checkout_items.add_checkout_items( [ checkouts.length - 1 ] );
255 var temp = p._patron.checkouts();
257 p._patron.checkouts( temp );
258 render_fm(p.w.document, { 'au' : p._patron }); // p.display_patron();
259 p.redraw_patron_items();
263 throw(permit_check.text);
275 if (ev.keyCode == 13 || ev.keyCode == 77 ) { p.attempt_checkout( tb.value ); }
279 submit_button.addEventListener(
282 p.attempt_checkout( tb.value );
287 p.redraw_patron_checkout_items = function() {
288 p.patron_checkout_items.clear_checkout_items();
289 for (var i = 0; i < checkouts.length; i++) {
290 p.patron_checkout_items.add_checkout_items( [ i ] );
294 p.patron_checkout_items.register_patron_checkout_items_select_callback(
296 sdump('D_PATRON_DISPLAY','Firing patron_checkout_items_select_callback\n');
297 sdump('D_PATRON_DISPLAY','ev.target = ' + ev.target + '\n');
298 var patron_checkout_items = get_list_from_tree_selection( p.patron_checkout_items.paged_tree.tree );
299 /* grab cover art for selected item? */
302 p.patron_checkout_items.register_flesh_patron_checkout_items_function(
303 function (treeitem) {
304 sdump('D_PATRON_DISPLAY','Firing flesh_patron_checkout_items_function\n');
305 var record_id = treeitem.getAttribute('record_id');
306 p.patron_checkout_items.map_patron_checkout_items_to_cols( checkouts[ record_id ], treeitem );
309 p.patron_checkout_items.register_checkout_context_builder(
311 sdump('D_PATRON_DISPLAY','Firing context_builder for patron_checkout_items\n');
312 sdump('D_PATRON_DISPLAY','ev.target = ' + ev.target + '\np.patron_checkout_items.paged_tree.popup = ' + p.patron_checkout_items.paged_tree.popup + '\n');
313 empty_widget(p.patron_checkout_items.paged_tree.popup);
314 var patron_checkout_items = get_list_from_tree_selection( p.patron_checkout_items.paged_tree.tree );
317 var menuitem_pci_c = p.patron_checkout_items.paged_tree.w.document.createElement('menuitem');
318 p.patron_checkout_items.paged_tree.popup.appendChild( menuitem_pci_c );
319 menuitem_pci_c.setAttribute('label',getString('circ.context_checkin'));
320 menuitem_pci_c.addEventListener(
323 sdump('D_PATRON_DISPLAY','Firing checkin context for patron_checkout_items\n');
325 for (var i = 0; i < patron_checkout_items.length; i++) {
327 var idx = patron_checkout_items[i].getAttribute('record_id');
328 var copy = checkouts[ idx ].copy;
329 var status = checkin_by_copy_barcode( copy.barcode(), null );
330 if (status == null) { // change this to whatever it takes
331 keep_these.push( checkouts[ idx ] );
333 checkouts = keep_these;
334 alert( js2JSON( status ) );
345 var menuitem_pci_s = p.patron_checkout_items.paged_tree.w.document.createElement('menuseparator');
346 p.patron_checkout_items.paged_tree.popup.appendChild( menuitem_pci_s );
349 /*** COPY EDITOR ***/
350 var menuitem_pci_ce = p.patron_checkout_items.paged_tree.w.document.createElement('menuitem');
351 p.patron_checkout_items.paged_tree.popup.appendChild( menuitem_pci_ce );
352 menuitem_pci_ce.setAttribute('label',getString('circ.context_edit'));
353 menuitem_pci_ce.addEventListener(
356 sdump('D_PATRON_DISPLAY','Firing copy editor context for patron_checkout_items\n');
357 for (var i = 0; i < patron_checkout_items.length; i++) {
358 var idx = patron_checkout_items[i].getAttribute('record_id');
359 sdump('D_PATRON_DISPLAY','Firing copy edit context\n');
366 var menuitem_pci_o = p.patron_checkout_items.paged_tree.w.document.createElement('menuitem');
367 p.patron_checkout_items.paged_tree.popup.appendChild( menuitem_pci_o );
368 menuitem_pci_o.setAttribute('label',getString('circ.context_opac'));
369 menuitem_pci_o.addEventListener(
372 sdump('D_PATRON_DISPLAY','Firing opac context for patron_checkout_items\n');
373 for (var i = 0; i < patron_checkout_items.length; i++) {
374 var idx = patron_checkout_items[i].getAttribute('record_id');
375 sdump('D_PATRON_DISPLAY','Firing opac context\n');
385 function patron_display_patron_holds_init(p) {
386 p.patron_holds = patron_holds_init( { 'w' : p.w, 'node' : p.patron_holds_node, 'debug' : p.app } );
388 p.redraw_patron_holds = function() {
389 p.patron_holds.clear_patron_holds();
390 if (!p._patron.hold_requests()) patron_get_holds( p._patron );
391 for (var i = 0; i < p._patron.hold_requests().length; i++) {
392 p.patron_holds.add_patron_holds( [ i ] );
396 p.patron_holds.register_patron_holds_select_callback(
398 sdump('D_PATRON_DISPLAY','Firing patron_holds_select_callback\n');
399 sdump('D_PATRON_DISPLAY','ev.target = ' + ev.target + '\n');
400 var patron_holds = get_list_from_tree_selection( p.patron_holds.paged_tree.tree );
401 /* grab cover art for selected item? */
404 p.patron_holds.register_flesh_patron_holds_function(
405 function (treeitem) {
406 sdump('D_PATRON_DISPLAY','Firing flesh_patron_holds_function\n');
407 var record_id = treeitem.getAttribute('record_id');
408 var hold = p._patron.hold_requests()[ record_id ];
409 patron_get_hold_status(
412 var result = request.getResultObject();
413 hold.status( hold_status_as_text( result ) );
414 p.patron_holds.map_patron_holds_to_cols( hold, treeitem );
419 p.patron_holds.register_item_context_builder(
421 sdump('D_PATRON_DISPLAY','Firing context_builder for patron_holds\n');
422 sdump('D_PATRON_DISPLAY','ev.target = ' + ev.target + '\np.patron_holds.paged_tree.popup = ' + p.patron_holds.paged_tree.popup + '\n');
423 empty_widget(p.patron_holds.paged_tree.popup);
424 var patron_holds = get_list_from_tree_selection( p.patron_holds.paged_tree.tree );
425 sdump('D_PATRON_DISPLAY','patron_holds.length = ' + patron_holds.length + '\n');
427 /*** CANCEL HOLD ***/
428 var menuitem_ph_ce = p.patron_holds.paged_tree.w.document.createElement('menuitem');
429 p.patron_holds.paged_tree.popup.appendChild( menuitem_ph_ce );
430 menuitem_ph_ce.setAttribute('label',getString('circ.context_cancel_hold'));
431 menuitem_ph_ce.addEventListener(
434 sdump('D_PATRON_DISPLAY','Firing cancel hold context for patron_holds\n');
435 for (var i = 0; i < patron_holds.length; i++) {
436 sdump('D_PATRON_DISPLAY','Firing cancel edit context\n');
437 var record_id = patron_holds[i].getAttribute('record_id');
438 var hold = p._patron.hold_requests()[ record_id ];
447 var menuitem_ph_s = p.patron_holds.paged_tree.w.document.createElement('menuseparator');
448 p.patron_holds.paged_tree.popup.appendChild( menuitem_ph_s );
450 /*** COPY EDITOR ***/
451 var menuitem_ph_ce = p.patron_holds.paged_tree.w.document.createElement('menuitem');
452 p.patron_holds.paged_tree.popup.appendChild( menuitem_ph_ce );
453 menuitem_ph_ce.setAttribute('label',getString('circ.context_edit'));
454 menuitem_ph_ce.addEventListener(
457 sdump('D_PATRON_DISPLAY','Firing copy editor context for patron_holds\n');
458 for (var i = 0; i < patron_holds.length; i++) {
459 sdump('D_PATRON_DISPLAY','Firing copy edit context\n');
466 var menuitem_ph_o = p.patron_holds.paged_tree.w.document.createElement('menuitem');
467 p.patron_holds.paged_tree.popup.appendChild( menuitem_ph_o );
468 menuitem_ph_o.setAttribute('label',getString('circ.context_opac'));
469 menuitem_ph_o.addEventListener(
472 sdump('D_PATRON_DISPLAY','Firing opac context for patron_holds\n');
473 for (var i = 0; i < patron_holds.length; i++) {
474 sdump('D_PATRON_DISPLAY','Firing opac context\n');
484 function patron_display_patron_bills_init(p) {
485 p.patron_bills = patron_bills_init( {
487 'node' : p.patron_bills_node,
491 p.patron_bills.refresh = function() { p.refresh(); }
493 p.redraw_patron_bills = function() {
495 p.patron_bills.clear_patron_bills();
496 if (!p._patron.bills) patron_get_bills( p._patron );
497 p.patron_bills.add_patron_bills( p._patron.bills );
499 sdump('D_ERROR',js2JSON(E) + '\n');