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 return render_fm(p.w.document, { 'au' : p._patron });
35 p.retrieve_patron_via_barcode = function (barcode) {
36 if (!barcode) barcode = patron_get_barcode( p._patron );
37 p.set_patron( retrieve_patron_by_barcode( barcode ) );
38 return p.display_patron();
41 p.retrieve_patron_via_id = function (id) {
42 p.set_patron( retrieve_patron_by_id( id ) );
43 return p.display_patron();
46 p.refresh = function() {
47 if (p._patron) p.retrieve_patron_via_id( p._patron.id() );
50 set_patron_display_widgets(p);
53 if (typeof(p.patron) == 'object') {
57 p.retrieve_patron_via_barcode( p.patron );
60 sdump('D_TRACE_EXIT',arg_dump(arguments));
64 function set_patron_display_widgets(p) {
65 p.commandset_node.getElementsByAttribute('id','cmd_patron_refresh')[0].addEventListener(
73 function gen_func(i) {
74 // because otherwise i would be 5 for each closure
76 p.clamshell.set_second_deck(i);
79 var cmds = [ 'cmd_patron_checkout', 'cmd_patron_items', 'cmd_patron_holds',
80 'cmd_patron_bills', 'cmd_patron_edit', 'cmd_patron_info' ]
82 p.commandset_node.getElementsByAttribute('id',cmds[i])[0].addEventListener(
88 p.commandset_node.getElementsByAttribute('id','cmd_patron_checkout')[0].addEventListener(
91 focus_widget( p.w.document, 'patron_checkout_barcode_entry_textbox' );
99 function patron_display_clamshell_init(p) {
100 p.clamshell = clam_shell_init( { 'w' : p.w, 'node' : p.clamshell_node, 'debug' : p.app } );
101 p.left_panel = p.clamshell.first_deck;
102 p.right_panel = p.clamshell.second_deck;
105 function patron_display_patron_items_init(p) {
106 p.patron_items = patron_items_init( { 'w' : p.w, 'node' : p.patron_items_node, 'debug' : p.app } );
108 p.redraw_patron_items = function() {
109 p.patron_items.clear_patron_items();
110 if (!p._patron.checkouts()) patron_get_checkouts( p._patron );
111 for (var i = 0; i < p._patron.checkouts().length; i++) {
112 p.patron_items.add_patron_items( [ i ] );
116 p.patron_items.register_patron_items_select_callback(
118 sdump('D_PATRON_DISPLAY','Firing patron_items_select_callback\n');
119 sdump('D_PATRON_DISPLAY','ev.target = ' + ev.target + '\n');
120 var patron_items = get_list_from_tree_selection( p.patron_items.paged_tree.tree );
121 /* grab cover art for selected item? */
124 p.patron_items.register_flesh_patron_items_function(
125 function (treeitem) {
126 sdump('D_PATRON_DISPLAY','Firing flesh_patron_items_function\n');
127 var record_id = treeitem.getAttribute('record_id');
128 p.patron_items.map_patron_items_to_cols( p._patron.checkouts()[ record_id ], treeitem );
131 p.patron_items.register_item_context_builder(
133 sdump('D_PATRON_DISPLAY','Firing context_builder for patron_items\n');
134 sdump('D_PATRON_DISPLAY','ev.target = ' + ev.target + '\np.patron_items.paged_tree.popup = ' + p.patron_items.paged_tree.popup + '\n');
135 empty_widget(p.patron_items.paged_tree.popup);
136 var patron_items = get_list_from_tree_selection( p.patron_items.paged_tree.tree );
137 sdump('D_PATRON_DISPLAY','patron_items.length = ' + patron_items.length + '\n');
140 var menuitem_pi_r = p.patron_items.paged_tree.w.document.createElement('menuitem');
141 p.patron_items.paged_tree.popup.appendChild( menuitem_pi_r );
142 menuitem_pi_r.setAttribute('label',getString('circ.context_renew'));
143 menuitem_pi_r.addEventListener(
146 sdump('D_PATRON_DISPLAY','Firing renew context for patron_items\n');
147 for (var i = 0; i < patron_items.length; i++) {
149 var idx = patron_items[i].getAttribute('record_id');
150 var circ = p._patron.checkouts()[ idx ].circ;
151 alert( js2JSON(renew_by_circ_id( circ.id() )) );
162 var menuitem_pi_c = p.patron_items.paged_tree.w.document.createElement('menuitem');
163 p.patron_items.paged_tree.popup.appendChild( menuitem_pi_c );
164 menuitem_pi_c.setAttribute('label',getString('circ.context_checkin'));
165 menuitem_pi_c.addEventListener(
168 sdump('D_PATRON_DISPLAY','Firing checkin context for patron_items\n');
169 for (var i = 0; i < patron_items.length; i++) {
171 var idx = patron_items[i].getAttribute('record_id');
172 var copy = p._patron.checkouts()[ idx ].copy;
173 alert( js2JSON(checkin_by_copy_barcode( copy.barcode() )) );
184 var menuitem_pi_s = p.patron_items.paged_tree.w.document.createElement('menuseparator');
185 p.patron_items.paged_tree.popup.appendChild( menuitem_pi_s );
188 /*** COPY EDITOR ***/
189 var menuitem_pi_ce = p.patron_items.paged_tree.w.document.createElement('menuitem');
190 p.patron_items.paged_tree.popup.appendChild( menuitem_pi_ce );
191 menuitem_pi_ce.setAttribute('label',getString('circ.context_edit'));
192 menuitem_pi_ce.addEventListener(
195 sdump('D_PATRON_DISPLAY','Firing copy editor context for patron_items\n');
196 for (var i = 0; i < patron_items.length; i++) {
197 sdump('D_PATRON_DISPLAY','Firing copy edit context\n');
204 var menuitem_pi_o = p.patron_items.paged_tree.w.document.createElement('menuitem');
205 p.patron_items.paged_tree.popup.appendChild( menuitem_pi_o );
206 menuitem_pi_o.setAttribute('label',getString('circ.context_opac'));
207 menuitem_pi_o.addEventListener(
210 sdump('D_PATRON_DISPLAY','Firing opac context for patron_items\n');
211 for (var i = 0; i < patron_items.length; i++) {
212 sdump('D_PATRON_DISPLAY','Firing opac context\n');
222 function patron_display_patron_checkout_items_init(p) {
223 p.patron_checkout_items = patron_checkout_items_init( { 'w' : p.w, 'node' : p.patron_checkout_items_node, 'debug' : p.app } );
224 var tb = p.patron_checkout_items_node.getElementsByAttribute('id','patron_checkout_barcode_entry_textbox')[0];
225 var submit_button = p.patron_checkout_items_node.getElementsByAttribute('id','patron_checkout_submit_barcode_button')[0];
229 p.w.document.getElementById('checkout_done').addEventListener(
232 // print receipt call goes here
233 checkouts = []; p.refresh(); tb.focus();
237 p.attempt_checkout = function(barcode) {
239 //if (! is_barcode_valid(barcode) ) throw('Invalid Barcode');
240 var permit_check = checkout_permit( barcode, p._patron.id(), 0 );
241 if (permit_check.status == 0) {
242 var check = checkout_by_copy_barcode( barcode, p._patron.id() );
244 checkouts.push( check );
245 p.patron_checkout_items.add_checkout_items( [ checkouts.length - 1 ] );
246 var temp = p._patron.checkouts();
248 p._patron.checkouts( temp );
253 throw(permit_check.text);
265 if (ev.keyCode == 13 || ev.keyCode == 77 ) { p.attempt_checkout( tb.value ); }
269 submit_button.addEventListener(
272 p.attempt_checkout( tb.value );
277 p.redraw_patron_checkout_items = function() {
278 p.patron_checkout_items.clear_checkout_items();
279 for (var i = 0; i < checkouts.length; i++) {
280 p.patron_checkout_items.add_checkout_items( [ i ] );
284 p.patron_checkout_items.register_patron_checkout_items_select_callback(
286 sdump('D_PATRON_DISPLAY','Firing patron_checkout_items_select_callback\n');
287 sdump('D_PATRON_DISPLAY','ev.target = ' + ev.target + '\n');
288 var patron_checkout_items = get_list_from_tree_selection( p.patron_checkout_items.paged_tree.tree );
289 /* grab cover art for selected item? */
292 p.patron_checkout_items.register_flesh_patron_checkout_items_function(
293 function (treeitem) {
294 sdump('D_PATRON_DISPLAY','Firing flesh_patron_checkout_items_function\n');
295 var record_id = treeitem.getAttribute('record_id');
296 p.patron_checkout_items.map_patron_checkout_items_to_cols( checkouts[ record_id ], treeitem );
299 p.patron_checkout_items.register_checkout_context_builder(
301 sdump('D_PATRON_DISPLAY','Firing context_builder for patron_checkout_items\n');
302 sdump('D_PATRON_DISPLAY','ev.target = ' + ev.target + '\np.patron_checkout_items.paged_tree.popup = ' + p.patron_checkout_items.paged_tree.popup + '\n');
303 empty_widget(p.patron_checkout_items.paged_tree.popup);
304 var patron_checkout_items = get_list_from_tree_selection( p.patron_checkout_items.paged_tree.tree );
307 var menuitem_pci_c = p.patron_checkout_items.paged_tree.w.document.createElement('menuitem');
308 p.patron_checkout_items.paged_tree.popup.appendChild( menuitem_pci_c );
309 menuitem_pci_c.setAttribute('label',getString('circ.context_checkin'));
310 menuitem_pci_c.addEventListener(
313 sdump('D_PATRON_DISPLAY','Firing checkin context for patron_checkout_items\n');
315 for (var i = 0; i < patron_checkout_items.length; i++) {
317 var idx = patron_checkout_items[i].getAttribute('record_id');
318 var copy = checkouts[ idx ].copy;
319 var status = checkin_by_copy_barcode( copy.barcode() );
320 if (status == null) { // change this to whatever it takes
321 keep_these.push( checkouts[ idx ] );
323 checkouts = keep_these;
324 alert( js2JSON( status ) );
335 var menuitem_pci_s = p.patron_checkout_items.paged_tree.w.document.createElement('menuseparator');
336 p.patron_checkout_items.paged_tree.popup.appendChild( menuitem_pci_s );
339 /*** COPY EDITOR ***/
340 var menuitem_pci_ce = p.patron_checkout_items.paged_tree.w.document.createElement('menuitem');
341 p.patron_checkout_items.paged_tree.popup.appendChild( menuitem_pci_ce );
342 menuitem_pci_ce.setAttribute('label',getString('circ.context_edit'));
343 menuitem_pci_ce.addEventListener(
346 sdump('D_PATRON_DISPLAY','Firing copy editor context for patron_checkout_items\n');
347 for (var i = 0; i < patron_checkout_items.length; i++) {
348 var idx = patron_checkout_items[i].getAttribute('record_id');
349 sdump('D_PATRON_DISPLAY','Firing copy edit context\n');
356 var menuitem_pci_o = p.patron_checkout_items.paged_tree.w.document.createElement('menuitem');
357 p.patron_checkout_items.paged_tree.popup.appendChild( menuitem_pci_o );
358 menuitem_pci_o.setAttribute('label',getString('circ.context_opac'));
359 menuitem_pci_o.addEventListener(
362 sdump('D_PATRON_DISPLAY','Firing opac context for patron_checkout_items\n');
363 for (var i = 0; i < patron_checkout_items.length; i++) {
364 var idx = patron_checkout_items[i].getAttribute('record_id');
365 sdump('D_PATRON_DISPLAY','Firing opac context\n');
375 function patron_display_patron_holds_init(p) {
376 p.patron_holds = patron_holds_init( { 'w' : p.w, 'node' : p.patron_holds_node, 'debug' : p.app } );
378 p.redraw_patron_holds = function() {
379 p.patron_holds.clear_patron_holds();
380 if (!p._patron.hold_requests()) patron_get_holds( p._patron );
381 for (var i = 0; i < p._patron.hold_requests().length; i++) {
382 p.patron_holds.add_patron_holds( [ i ] );
386 p.patron_holds.register_patron_holds_select_callback(
388 sdump('D_PATRON_DISPLAY','Firing patron_holds_select_callback\n');
389 sdump('D_PATRON_DISPLAY','ev.target = ' + ev.target + '\n');
390 var patron_holds = get_list_from_tree_selection( p.patron_holds.paged_tree.tree );
391 /* grab cover art for selected item? */
394 p.patron_holds.register_flesh_patron_holds_function(
395 function (treeitem) {
396 sdump('D_PATRON_DISPLAY','Firing flesh_patron_holds_function\n');
397 var record_id = treeitem.getAttribute('record_id');
398 p.patron_holds.map_patron_holds_to_cols( p._patron.hold_requests()[ record_id ], treeitem );
401 p.patron_holds.register_item_context_builder(
403 sdump('D_PATRON_DISPLAY','Firing context_builder for patron_holds\n');
404 sdump('D_PATRON_DISPLAY','ev.target = ' + ev.target + '\np.patron_holds.paged_tree.popup = ' + p.patron_holds.paged_tree.popup + '\n');
405 empty_widget(p.patron_holds.paged_tree.popup);
406 var patron_holds = get_list_from_tree_selection( p.patron_holds.paged_tree.tree );
407 sdump('D_PATRON_DISPLAY','patron_holds.length = ' + patron_holds.length + '\n');
409 /*** COPY EDITOR ***/
410 var menuitem_pi_ce = p.patron_holds.paged_tree.w.document.createElement('menuitem');
411 p.patron_holds.paged_tree.popup.appendChild( menuitem_pi_ce );
412 menuitem_pi_ce.setAttribute('label',getString('circ.context_edit'));
413 menuitem_pi_ce.addEventListener(
416 sdump('D_PATRON_DISPLAY','Firing copy editor context for patron_holds\n');
417 for (var i = 0; i < patron_holds.length; i++) {
418 sdump('D_PATRON_DISPLAY','Firing copy edit context\n');
425 var menuitem_pi_o = p.patron_holds.paged_tree.w.document.createElement('menuitem');
426 p.patron_holds.paged_tree.popup.appendChild( menuitem_pi_o );
427 menuitem_pi_o.setAttribute('label',getString('circ.context_opac'));
428 menuitem_pi_o.addEventListener(
431 sdump('D_PATRON_DISPLAY','Firing opac context for patron_holds\n');
432 for (var i = 0; i < patron_holds.length; i++) {
433 sdump('D_PATRON_DISPLAY','Firing opac context\n');
443 function patron_display_patron_bills_init(p) {
444 p.patron_bills = patron_bills_init( { 'w' : p.w, 'node' : p.patron_bills_node, 'debug' : p.app } );
446 p.redraw_patron_bills = function() {
447 p.patron_bills.clear_patron_bills();
448 if (!p._patron.bills()) patron_get_bills( p._patron );
449 for (var i = 0; i < p._patron.bills().length; i++) {
450 p.patron_bills.add_patron_bills( [ i ] );
454 var test = p.patron_bills.w.document.createElement('row');
455 test.setAttribute('style','border: dotted;');
456 var test1 = p.patron_bills.w.document.createElement('checkbox');
457 test.appendChild( test1 );
458 var test2 = p.patron_bills.w.document.createElement('vbox');
459 test.appendChild( test2 );
460 var test2a = p.patron_bills.w.document.createElement('label');
461 test2.appendChild( test2a );
462 test2a.setAttribute('value','Late Fee: Harry Potter');
463 var test2b = p.patron_bills.w.document.createElement('label');
464 test2.appendChild( test2b );
465 test2b.setAttribute('value','Due: 05-19-05 Received: 05-21-05 Original Fee: $0.40');
466 var test3 = p.patron_bills.w.document.createElement('label');
467 test.appendChild( test3 );
468 test3.setAttribute('value','$0.20');
469 var test4 = p.patron_bills.w.document.createElement('textbox');
470 test.appendChild( test4 );
472 p.patron_bills.add_patron_bills( [ test ] );