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 p.set_patron = function (au) {
21 return p._patron = au;
24 p.display_patron = function (au) {
25 if (au) p.set_patron(au);
26 p.redraw_patron_checkout_items();
27 p.redraw_patron_items();
28 p.redraw_patron_holds();
29 return render_fm(p.w.document, { 'au' : p._patron });
32 p.retrieve_patron_via_barcode = function (barcode) {
33 if (!barcode) barcode = patron_get_barcode( p._patron );
34 p.set_patron( retrieve_patron_by_barcode( barcode ) );
35 return p.display_patron();
38 p.retrieve_patron_via_id = function (id) {
39 p.set_patron( retrieve_patron_by_id( id ) );
40 return p.display_patron();
43 p.refresh = function() {
44 if (p._patron) p.retrieve_patron_via_id( p._patron.id() );
47 set_patron_display_widgets(p);
50 if (typeof(p.patron) == 'object') {
54 p.retrieve_patron_via_barcode( p.patron );
57 sdump('D_TRACE_EXIT',arg_dump(arguments));
61 function set_patron_display_widgets(p) {
62 p.commandset_node.getElementsByAttribute('id','cmd_patron_refresh')[0].addEventListener(
70 function gen_func(i) {
71 // because otherwise i would be 5 for each closure
73 p.clamshell.set_second_deck(i);
76 var cmds = [ 'cmd_patron_checkout', 'cmd_patron_items', 'cmd_patron_holds',
77 'cmd_patron_bills', 'cmd_patron_edit', 'cmd_patron_info' ]
79 p.commandset_node.getElementsByAttribute('id',cmds[i])[0].addEventListener(
85 p.commandset_node.getElementsByAttribute('id','cmd_patron_checkout')[0].addEventListener(
88 focus_widget( p.w.document, 'patron_checkout_barcode_entry_textbox' );
96 function patron_display_clamshell_init(p) {
97 p.clamshell = clam_shell_init( { 'w' : p.w, 'node' : p.clamshell_node, 'debug' : p.app } );
98 p.left_panel = p.clamshell.first_deck;
99 p.right_panel = p.clamshell.second_deck;
102 function patron_display_patron_items_init(p) {
103 p.patron_items = patron_items_init( { 'w' : p.w, 'node' : p.patron_items_node, 'debug' : p.app } );
105 p.redraw_patron_items = function() {
106 p.patron_items.clear_patron_items();
107 if (!p._patron.checkouts()) patron_get_checkouts( p._patron );
108 for (var i = 0; i < p._patron.checkouts().length; i++) {
109 p.patron_items.add_patron_items( [ i ] );
113 p.patron_items.register_patron_items_select_callback(
115 sdump('D_PATRON_DISPLAY','Firing patron_items_select_callback\n');
116 sdump('D_PATRON_DISPLAY','ev.target = ' + ev.target + '\n');
117 var patron_items = get_list_from_tree_selection( p.patron_items.paged_tree.tree );
118 /* grab cover art for selected item? */
121 p.patron_items.register_flesh_patron_items_function(
122 function (treeitem) {
123 sdump('D_PATRON_DISPLAY','Firing flesh_patron_items_function\n');
124 var record_id = treeitem.getAttribute('record_id');
125 p.patron_items.map_patron_items_to_cols( p._patron.checkouts()[ record_id ], treeitem );
128 p.patron_items.register_item_context_builder(
130 sdump('D_PATRON_DISPLAY','Firing context_builder for patron_items\n');
131 sdump('D_PATRON_DISPLAY','ev.target = ' + ev.target + '\np.patron_items.paged_tree.popup = ' + p.patron_items.paged_tree.popup + '\n');
132 empty_widget(p.patron_items.paged_tree.popup);
133 var patron_items = get_list_from_tree_selection( p.patron_items.paged_tree.tree );
134 sdump('D_PATRON_DISPLAY','patron_items.length = ' + patron_items.length + '\n');
137 var menuitem_pi_r = p.patron_items.paged_tree.w.document.createElement('menuitem');
138 p.patron_items.paged_tree.popup.appendChild( menuitem_pi_r );
139 menuitem_pi_r.setAttribute('label',getString('circ.context_renew'));
140 menuitem_pi_r.addEventListener(
143 sdump('D_PATRON_DISPLAY','Firing renew context for patron_items\n');
144 for (var i = 0; i < patron_items.length; i++) {
146 var idx = patron_items[i].getAttribute('record_id');
147 var circ = p._patron.checkouts()[ idx ].circ;
148 alert( js2JSON(renew_by_circ_id( circ.id() )) );
159 var menuitem_pi_c = p.patron_items.paged_tree.w.document.createElement('menuitem');
160 p.patron_items.paged_tree.popup.appendChild( menuitem_pi_c );
161 menuitem_pi_c.setAttribute('label',getString('circ.context_checkin'));
162 menuitem_pi_c.addEventListener(
165 sdump('D_PATRON_DISPLAY','Firing checkin context for patron_items\n');
166 for (var i = 0; i < patron_items.length; i++) {
168 var idx = patron_items[i].getAttribute('record_id');
169 var copy = p._patron.checkouts()[ idx ].copy;
170 alert( js2JSON(checkin_by_copy_barcode( copy.barcode() )) );
181 var menuitem_pi_s = p.patron_items.paged_tree.w.document.createElement('menuseparator');
182 p.patron_items.paged_tree.popup.appendChild( menuitem_pi_s );
185 /*** COPY EDITOR ***/
186 var menuitem_pi_ce = p.patron_items.paged_tree.w.document.createElement('menuitem');
187 p.patron_items.paged_tree.popup.appendChild( menuitem_pi_ce );
188 menuitem_pi_ce.setAttribute('label',getString('circ.context_edit'));
189 menuitem_pi_ce.addEventListener(
192 sdump('D_PATRON_DISPLAY','Firing copy editor context for patron_items\n');
193 for (var i = 0; i < patron_items.length; i++) {
194 sdump('D_PATRON_DISPLAY','Firing copy edit context\n');
201 var menuitem_pi_o = p.patron_items.paged_tree.w.document.createElement('menuitem');
202 p.patron_items.paged_tree.popup.appendChild( menuitem_pi_o );
203 menuitem_pi_o.setAttribute('label',getString('circ.context_opac'));
204 menuitem_pi_o.addEventListener(
207 sdump('D_PATRON_DISPLAY','Firing opac context for patron_items\n');
208 for (var i = 0; i < patron_items.length; i++) {
209 sdump('D_PATRON_DISPLAY','Firing opac context\n');
219 function patron_display_patron_checkout_items_init(p) {
220 p.patron_checkout_items = patron_checkout_items_init( { 'w' : p.w, 'node' : p.patron_checkout_items_node, 'debug' : p.app } );
221 var tb = p.patron_checkout_items_node.getElementsByAttribute('id','patron_checkout_barcode_entry_textbox')[0];
222 var submit_button = p.patron_checkout_items_node.getElementsByAttribute('id','patron_checkout_submit_barcode_button')[0];
226 p.w.document.getElementById('checkout_done').addEventListener(
229 // print receipt call goes here
230 checkouts = []; p.refresh(); tb.focus();
234 p.attempt_checkout = function(barcode) {
236 //if (! is_barcode_valid(barcode) ) throw('Invalid Barcode');
237 var permit_check = checkout_permit( barcode, p._patron.id(), 0 );
238 if (permit_check.status == 0) {
239 var check = checkout_by_copy_barcode( barcode, p._patron.id() );
241 checkouts.push( check );
242 p.patron_checkout_items.add_checkout_items( [ checkouts.length - 1 ] );
243 var temp = p._patron.checkouts();
245 p._patron.checkouts( temp );
250 throw(permit_check.text);
262 if (ev.keyCode == 13 || ev.keyCode == 77 ) { p.attempt_checkout( tb.value ); }
266 submit_button.addEventListener(
269 p.attempt_checkout( tb.value );
274 p.redraw_patron_checkout_items = function() {
275 p.patron_checkout_items.clear_checkout_items();
276 for (var i = 0; i < checkouts.length; i++) {
277 p.patron_checkout_items.add_checkout_items( [ i ] );
281 p.patron_checkout_items.register_patron_checkout_items_select_callback(
283 sdump('D_PATRON_DISPLAY','Firing patron_checkout_items_select_callback\n');
284 sdump('D_PATRON_DISPLAY','ev.target = ' + ev.target + '\n');
285 var patron_checkout_items = get_list_from_tree_selection( p.patron_checkout_items.paged_tree.tree );
286 /* grab cover art for selected item? */
289 p.patron_checkout_items.register_flesh_patron_checkout_items_function(
290 function (treeitem) {
291 sdump('D_PATRON_DISPLAY','Firing flesh_patron_checkout_items_function\n');
292 var record_id = treeitem.getAttribute('record_id');
293 p.patron_checkout_items.map_patron_checkout_items_to_cols( checkouts[ record_id ], treeitem );
296 p.patron_checkout_items.register_checkout_context_builder(
298 sdump('D_PATRON_DISPLAY','Firing context_builder for patron_checkout_items\n');
299 sdump('D_PATRON_DISPLAY','ev.target = ' + ev.target + '\np.patron_checkout_items.paged_tree.popup = ' + p.patron_checkout_items.paged_tree.popup + '\n');
300 empty_widget(p.patron_checkout_items.paged_tree.popup);
301 var patron_checkout_items = get_list_from_tree_selection( p.patron_checkout_items.paged_tree.tree );
304 var menuitem_pci_c = p.patron_checkout_items.paged_tree.w.document.createElement('menuitem');
305 p.patron_checkout_items.paged_tree.popup.appendChild( menuitem_pci_c );
306 menuitem_pci_c.setAttribute('label',getString('circ.context_checkin'));
307 menuitem_pci_c.addEventListener(
310 sdump('D_PATRON_DISPLAY','Firing checkin context for patron_checkout_items\n');
312 for (var i = 0; i < patron_checkout_items.length; i++) {
314 var idx = patron_checkout_items[i].getAttribute('record_id');
315 var copy = checkouts[ idx ].copy;
316 var status = checkin_by_copy_barcode( copy.barcode() );
317 if (status == null) { // change this to whatever it takes
318 keep_these.push( checkouts[ idx ] );
320 checkouts = keep_these;
321 alert( js2JSON( status ) );
332 var menuitem_pci_s = p.patron_checkout_items.paged_tree.w.document.createElement('menuseparator');
333 p.patron_checkout_items.paged_tree.popup.appendChild( menuitem_pci_s );
336 /*** COPY EDITOR ***/
337 var menuitem_pci_ce = p.patron_checkout_items.paged_tree.w.document.createElement('menuitem');
338 p.patron_checkout_items.paged_tree.popup.appendChild( menuitem_pci_ce );
339 menuitem_pci_ce.setAttribute('label',getString('circ.context_edit'));
340 menuitem_pci_ce.addEventListener(
343 sdump('D_PATRON_DISPLAY','Firing copy editor context for patron_checkout_items\n');
344 for (var i = 0; i < patron_checkout_items.length; i++) {
345 var idx = patron_checkout_items[i].getAttribute('record_id');
346 sdump('D_PATRON_DISPLAY','Firing copy edit context\n');
353 var menuitem_pci_o = p.patron_checkout_items.paged_tree.w.document.createElement('menuitem');
354 p.patron_checkout_items.paged_tree.popup.appendChild( menuitem_pci_o );
355 menuitem_pci_o.setAttribute('label',getString('circ.context_opac'));
356 menuitem_pci_o.addEventListener(
359 sdump('D_PATRON_DISPLAY','Firing opac context for patron_checkout_items\n');
360 for (var i = 0; i < patron_checkout_items.length; i++) {
361 var idx = patron_checkout_items[i].getAttribute('record_id');
362 sdump('D_PATRON_DISPLAY','Firing opac context\n');
372 function patron_display_patron_holds_init(p) {
373 p.patron_holds = patron_holds_init( { 'w' : p.w, 'node' : p.patron_holds_node, 'debug' : p.app } );
375 p.redraw_patron_holds = function() {
376 p.patron_holds.clear_patron_holds();
377 if (!p._patron.hold_requests()) patron_get_holds( p._patron );
378 for (var i = 0; i < p._patron.hold_requests().length; i++) {
379 p.patron_holds.add_patron_holds( [ i ] );
383 p.patron_holds.register_patron_holds_select_callback(
385 sdump('D_PATRON_DISPLAY','Firing patron_holds_select_callback\n');
386 sdump('D_PATRON_DISPLAY','ev.target = ' + ev.target + '\n');
387 var patron_holds = get_list_from_tree_selection( p.patron_holds.paged_tree.tree );
388 /* grab cover art for selected item? */
391 p.patron_holds.register_flesh_patron_holds_function(
392 function (treeitem) {
393 sdump('D_PATRON_DISPLAY','Firing flesh_patron_holds_function\n');
394 var record_id = treeitem.getAttribute('record_id');
395 p.patron_holds.map_patron_holds_to_cols( p._patron.hold_requests()[ record_id ], treeitem );
398 p.patron_holds.register_item_context_builder(
400 sdump('D_PATRON_DISPLAY','Firing context_builder for patron_holds\n');
401 sdump('D_PATRON_DISPLAY','ev.target = ' + ev.target + '\np.patron_holds.paged_tree.popup = ' + p.patron_holds.paged_tree.popup + '\n');
402 empty_widget(p.patron_holds.paged_tree.popup);
403 var patron_holds = get_list_from_tree_selection( p.patron_holds.paged_tree.tree );
404 sdump('D_PATRON_DISPLAY','patron_holds.length = ' + patron_holds.length + '\n');
406 /*** COPY EDITOR ***/
407 var menuitem_pi_ce = p.patron_holds.paged_tree.w.document.createElement('menuitem');
408 p.patron_holds.paged_tree.popup.appendChild( menuitem_pi_ce );
409 menuitem_pi_ce.setAttribute('label',getString('circ.context_edit'));
410 menuitem_pi_ce.addEventListener(
413 sdump('D_PATRON_DISPLAY','Firing copy editor context for patron_holds\n');
414 for (var i = 0; i < patron_holds.length; i++) {
415 sdump('D_PATRON_DISPLAY','Firing copy edit context\n');
422 var menuitem_pi_o = p.patron_holds.paged_tree.w.document.createElement('menuitem');
423 p.patron_holds.paged_tree.popup.appendChild( menuitem_pi_o );
424 menuitem_pi_o.setAttribute('label',getString('circ.context_opac'));
425 menuitem_pi_o.addEventListener(
428 sdump('D_PATRON_DISPLAY','Firing opac context for patron_holds\n');
429 for (var i = 0; i < patron_holds.length; i++) {
430 sdump('D_PATRON_DISPLAY','Firing opac context\n');