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 p.set_patron = function (au) {
18 return p._patron = au;
21 p.display_patron = function (au) {
22 if (au) p.set_patron(au);
23 p.redraw_patron_items();
24 p.redraw_patron_checkout_items();
25 return render_fm(p.w.document, { 'au' : p._patron });
28 p.retrieve_patron_via_barcode = function (barcode) {
29 if (!barcode) barcode = patron_get_barcode( p._patron );
30 p.set_patron( retrieve_patron_by_barcode( barcode ) );
31 return p.display_patron();
34 p.retrieve_patron_via_id = function (id) {
35 p.set_patron( retrieve_patron_by_id( id ) );
36 return p.display_patron();
39 p.refresh = function() {
40 if (p._patron) p.retrieve_patron_via_id( p._patron.id() );
43 set_patron_display_widgets(p);
46 if (typeof(p.patron) == 'object') {
50 p.retrieve_patron_via_barcode( p.patron );
53 sdump('D_TRACE_EXIT',arg_dump(arguments));
57 function set_patron_display_widgets(p) {
58 p.commandset_node.getElementsByAttribute('id','cmd_patron_refresh')[0].addEventListener(
66 function gen_func(i) {
67 // because otherwise i would be 5 for each closure
69 p.clamshell.set_second_deck(i);
72 var cmds = [ 'cmd_patron_checkout', 'cmd_patron_items', 'cmd_patron_holds',
73 'cmd_patron_bills', 'cmd_patron_edit', 'cmd_patron_info' ]
75 p.commandset_node.getElementsByAttribute('id',cmds[i])[0].addEventListener(
81 p.commandset_node.getElementsByAttribute('id','cmd_patron_checkout')[0].addEventListener(
84 focus_widget( p.w.document, 'patron_checkout_barcode_entry_textbox' );
92 function patron_display_clamshell_init(p) {
93 p.clamshell = clam_shell_init( { 'w' : p.w, 'node' : p.clamshell_node, 'debug' : p.app } );
94 p.left_panel = p.clamshell.first_deck;
95 p.right_panel = p.clamshell.second_deck;
98 function patron_display_patron_items_init(p) {
99 p.patron_items = patron_items_init( { 'w' : p.w, 'node' : p.patron_items_node, 'popupset_node' : p.popupset_node, 'debug' : p.app } );
101 p.redraw_patron_items = function() {
102 p.patron_items.clear_patron_items();
103 if (!p._patron.checkouts()) patron_get_checkouts( p._patron );
104 for (var i = 0; i < p._patron.checkouts().length; i++) {
105 p.patron_items.add_patron_items( [ i ] );
109 p.patron_items.register_patron_items_select_callback(
111 sdump('D_PATRON_DISPLAY','Firing patron_items_select_callback\n');
112 sdump('D_PATRON_DISPLAY','ev.target = ' + ev.target + '\n');
113 var patron_items = get_list_from_tree_selection( p.patron_items.paged_tree.tree );
114 /* grab cover art for selected item? */
117 p.patron_items.register_flesh_patron_items_function(
118 function (treeitem) {
119 sdump('D_PATRON_DISPLAY','Firing flesh_patron_items_function\n');
120 var record_id = treeitem.getAttribute('record_id');
121 p.patron_items.map_patron_items_to_cols( p._patron.checkouts()[ record_id ], treeitem );
124 p.patron_items.register_item_context_builder(
126 sdump('D_PATRON_DISPLAY','Firing context_builder for patron_items\n');
127 sdump('D_PATRON_DISPLAY','ev.target = ' + ev.target + '\np.patron_items.paged_tree.popup = ' + p.patron_items.paged_tree.popup + '\n');
128 empty_widget(p.patron_items.paged_tree.popup);
129 var patron_items = get_list_from_tree_selection( p.patron_items.paged_tree.tree );
130 sdump('D_PATRON_DISPLAY','patron_items.length = ' + patron_items.length + '\n');
133 var menuitem_pi_r = p.patron_items.paged_tree.w.document.createElement('menuitem');
134 p.patron_items.paged_tree.popup.appendChild( menuitem_pi_r );
135 menuitem_pi_r.setAttribute('label',getString('circ.context_renew'));
136 menuitem_pi_r.addEventListener(
139 sdump('D_PATRON_DISPLAY','Firing renew context for patron_items\n');
140 for (var i = 0; i < patron_items.length; i++) {
142 var idx = patron_items[i].getAttribute('record_id');
143 var circ = p._patron.checkouts()[ idx ].circ;
144 alert( js2JSON(renew_by_circ_id( circ.id() )) );
155 var menuitem_pi_c = p.patron_items.paged_tree.w.document.createElement('menuitem');
156 p.patron_items.paged_tree.popup.appendChild( menuitem_pi_c );
157 menuitem_pi_c.setAttribute('label',getString('circ.context_checkin'));
158 menuitem_pi_c.addEventListener(
161 sdump('D_PATRON_DISPLAY','Firing checkin context for patron_items\n');
162 for (var i = 0; i < patron_items.length; i++) {
164 var idx = patron_items[i].getAttribute('record_id');
165 var copy = p._patron.checkouts()[ idx ].copy;
166 alert( js2JSON(checkin_by_copy_barcode( copy.barcode() )) );
177 var menuitem_pi_s = p.patron_items.paged_tree.w.document.createElement('menuseparator');
178 p.patron_items.paged_tree.popup.appendChild( menuitem_pi_s );
181 /*** COPY EDITOR ***/
182 var menuitem_pi_ce = p.patron_items.paged_tree.w.document.createElement('menuitem');
183 p.patron_items.paged_tree.popup.appendChild( menuitem_pi_ce );
184 menuitem_pi_ce.setAttribute('label',getString('circ.context_edit'));
185 menuitem_pi_ce.addEventListener(
188 sdump('D_PATRON_DISPLAY','Firing copy editor context for patron_items\n');
189 for (var i = 0; i < patron_items.length; i++) {
190 sdump('D_PATRON_DISPLAY','Firing copy edit context\n');
197 var menuitem_pi_o = p.patron_items.paged_tree.w.document.createElement('menuitem');
198 p.patron_items.paged_tree.popup.appendChild( menuitem_pi_o );
199 menuitem_pi_o.setAttribute('label',getString('circ.context_opac'));
200 menuitem_pi_o.addEventListener(
203 sdump('D_PATRON_DISPLAY','Firing opac context for patron_items\n');
204 for (var i = 0; i < patron_items.length; i++) {
205 sdump('D_PATRON_DISPLAY','Firing opac context\n');
215 function patron_display_patron_checkout_items_init(p) {
216 p.patron_checkout_items = patron_checkout_items_init( { 'w' : p.w, 'node' : p.patron_checkout_items_node, 'popupset_node' : p.popupset_node, 'debug' : p.app } );
217 var tb = p.patron_checkout_items_node.getElementsByAttribute('id','patron_checkout_barcode_entry_textbox')[0];
218 var submit_button = p.patron_checkout_items_node.getElementsByAttribute('id','patron_checkout_submit_barcode_button')[0];
222 p.w.document.getElementById('checkout_done').addEventListener(
225 // print receipt call goes here
226 checkouts = []; p.refresh(); tb.focus();
230 p.attempt_checkout = function(barcode) {
232 //if (! is_barcode_valid(barcode) ) throw('Invalid Barcode');
233 var permit_check = checkout_permit( barcode, p._patron.id(), 0 );
234 if (permit_check.status == 0) {
235 var check = checkout_by_copy_barcode( barcode, p._patron.id() );
237 checkouts.push( check );
238 p.patron_checkout_items.add_checkout_items( [ checkouts.length - 1 ] );
239 var temp = p._patron.checkouts();
241 p._patron.checkouts( temp );
246 throw(permit_check.text);
258 if (ev.keyCode == 13 || ev.keyCode == 77 ) { p.attempt_checkout( tb.value ); }
262 submit_button.addEventListener(
265 p.attempt_checkout( tb.value );
270 p.redraw_patron_checkout_items = function() {
271 p.patron_checkout_items.clear_checkout_items();
272 for (var i = 0; i < checkouts.length; i++) {
273 p.patron_checkout_items.add_checkout_items( [ i ] );
277 p.patron_checkout_items.register_patron_checkout_items_select_callback(
279 sdump('D_PATRON_DISPLAY','Firing patron_checkout_items_select_callback\n');
280 sdump('D_PATRON_DISPLAY','ev.target = ' + ev.target + '\n');
281 var patron_checkout_items = get_list_from_tree_selection( p.patron_checkout_items.paged_tree.tree );
282 /* grab cover art for selected item? */
285 p.patron_checkout_items.register_flesh_patron_checkout_items_function(
286 function (treeitem) {
287 sdump('D_PATRON_DISPLAY','Firing flesh_patron_checkout_items_function\n');
288 var record_id = treeitem.getAttribute('record_id');
289 p.patron_checkout_items.map_patron_checkout_items_to_cols( checkouts[ record_id ], treeitem );
292 p.patron_checkout_items.register_checkout_context_builder(
294 sdump('D_PATRON_DISPLAY','Firing context_builder for patron_checkout_items\n');
295 sdump('D_PATRON_DISPLAY','ev.target = ' + ev.target + '\np.patron_checkout_items.paged_tree.popup = ' + p.patron_checkout_items.paged_tree.popup + '\n');
296 empty_widget(p.patron_checkout_items.paged_tree.popup);
297 var patron_checkout_items = get_list_from_tree_selection( p.patron_checkout_items.paged_tree.tree );
300 var menuitem_pci_c = p.patron_checkout_items.paged_tree.w.document.createElement('menuitem');
301 p.patron_checkout_items.paged_tree.popup.appendChild( menuitem_pci_c );
302 menuitem_pci_c.setAttribute('label',getString('circ.context_checkin'));
303 menuitem_pci_c.addEventListener(
306 sdump('D_PATRON_DISPLAY','Firing checkin context for patron_checkout_items\n');
308 for (var i = 0; i < patron_checkout_items.length; i++) {
310 var idx = patron_checkout_items[i].getAttribute('record_id');
311 var copy = checkouts[ idx ].copy;
312 var status = checkin_by_copy_barcode( copy.barcode() );
313 if (status == null) { // change this to whatever it takes
314 keep_these.push( checkouts[ idx ] );
316 checkouts = keep_these;
317 alert( js2JSON( status ) );
328 var menuitem_pci_s = p.patron_checkout_items.paged_tree.w.document.createElement('menuseparator');
329 p.patron_checkout_items.paged_tree.popup.appendChild( menuitem_pci_s );
332 /*** COPY EDITOR ***/
333 var menuitem_pci_ce = p.patron_checkout_items.paged_tree.w.document.createElement('menuitem');
334 p.patron_checkout_items.paged_tree.popup.appendChild( menuitem_pci_ce );
335 menuitem_pci_ce.setAttribute('label',getString('circ.context_edit'));
336 menuitem_pci_ce.addEventListener(
339 sdump('D_PATRON_DISPLAY','Firing copy editor context for patron_checkout_items\n');
340 for (var i = 0; i < patron_checkout_items.length; i++) {
341 var idx = patron_checkout_items[i].getAttribute('record_id');
342 sdump('D_PATRON_DISPLAY','Firing copy edit context\n');
349 var menuitem_pci_o = p.patron_checkout_items.paged_tree.w.document.createElement('menuitem');
350 p.patron_checkout_items.paged_tree.popup.appendChild( menuitem_pci_o );
351 menuitem_pci_o.setAttribute('label',getString('circ.context_opac'));
352 menuitem_pci_o.addEventListener(
355 sdump('D_PATRON_DISPLAY','Firing opac context for patron_checkout_items\n');
356 for (var i = 0; i < patron_checkout_items.length; i++) {
357 var idx = patron_checkout_items[i].getAttribute('record_id');
358 sdump('D_PATRON_DISPLAY','Firing opac context\n');